zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
#ifndef _TRIANGULATIONPARAMS_H_
#define _TRIANGULATIONPARAMS_H_
 
#include "TD_PackPush.h"
 
#include "OdHeap.h"
 
/** \details
    This container class holds ACIS triangulation (rendering) parameters. 
    <group Other_Classes>
\remarks
    Default triangulation parameters:
    
    <table>
    Parameter             Default
    maxNumGridLines       10000  
    maxFacetEdgeLength    0  
    normalTolerance       15  
    surfaceTolerance      0  
    gridAspectRatio       0  
    PointsPerEdge         0  
    BetweenKnots          2  
    bUseFacetRES          false  
    </table>    
*/
class wrTriangulationParams
{
public:
  /** \details 
  Maximum number of grid lines.*/
  OdUInt32 maxNumGridLines;
  
  /** \details
    Maximum facet edge length.
  */
  double   maxFacetEdgeLength;
  
  /** \details 
  NormalTolerance allows to specify the tessellation quality of circular surfaces (such as Cone, Torus, Sphere or Cylinder). 
  It is measured in degrees. The value of this parameter determines the quantity of mesh cells (triangles) used to represent a circular surface (360/NormalTolerance). 
  Default value is 15. It means, for an example, that surface will be tessellated with 24 mesh cells (triangles) in circular direction. 
  */
  double   normalTolerance;
 
  /** \details
    Distance tolerance for coincident faces.
  */
  double   surfaceTolerance;
 
  /** \details
    Grid aspect ratio.
  */
  double   gridAspectRatio;
  
  /** \details
    Distance between knots. This parameter contains the number of additional points between knots; for NURB surfaces it contains number of additional isolines between knots. 
  */
  OdUInt16 BetweenKnots;
  
  /** \details
    Points quantity per edge.
  */
  OdUInt32 PointsPerEdge; 
  
  /** \details
    Use Facetres System variable.
  */
  bool     bUseFacetRES;
  
  /** \details
    Fast mode is much more faster, but generates more errors.
  */
  bool     bFastMode;
 
  /** \details
    Default constructor. Sets the following default triangulation parameters:
    <table>
    Parameter             Default
    maxNumGridLines       10000  
    maxFacetEdgeLength    0  
    normalTolerance       15  
    surfaceTolerance      0  
    gridAspectRatio       0  
    PointsPerEdge         0  
    BetweenKnots          2  
    bUseFacetRES          false  
    </table>
  */
  wrTriangulationParams()
  : maxNumGridLines(10000)
  , maxFacetEdgeLength(0)
  , normalTolerance(15)
  , surfaceTolerance(0)
  , gridAspectRatio(0)
  , BetweenKnots(2)
  , PointsPerEdge(0)
  , bUseFacetRES(false)
  , bFastMode(false)
  {
  }
 
  /** \details
      Comparing operator for wrTriangulationParams class.
      \param other [in] A wrTriangulationParams object to be compared with.
      Note that bUseFacetRES property is NOT compared.
  */
  bool operator ==(const wrTriangulationParams other) const 
  {
    return other.maxNumGridLines == maxNumGridLines
    && other.maxFacetEdgeLength == maxFacetEdgeLength
    && other.normalTolerance == normalTolerance
    && other.surfaceTolerance == surfaceTolerance
    && other.gridAspectRatio == gridAspectRatio
    && other.PointsPerEdge == PointsPerEdge
    && other.BetweenKnots == BetweenKnots;
    // bUseFacetRES, bFastMode skipped
  }
};
 
#include "TD_PackPop.h"
 
#endif // _TRIANGULATIONPARAMS_H_