summaryrefslogtreecommitdiff
path: root/inc/IntPatch_Polyhedron.hxx
blob: 4e9431376362ba7ba7fa194c819e79be313b562a (plain)
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _IntPatch_Polyhedron_HeaderFile
#define _IntPatch_Polyhedron_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _Bnd_Box_HeaderFile
#include <Bnd_Box.hxx>
#endif
#ifndef _Handle_Bnd_HArray1OfBox_HeaderFile
#include <Handle_Bnd_HArray1OfBox.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_Adaptor3d_HSurface_HeaderFile
#include <Handle_Adaptor3d_HSurface.hxx>
#endif
class Bnd_HArray1OfBox;
class Standard_OutOfRange;
class Adaptor3d_HSurface;
class gp_Pnt;
class Bnd_Box;
class gp_XYZ;


//! This class provides a linear approximation of the PSurface. <br>
//! preview a constructor on a zone of  a surface <br>
class IntPatch_Polyhedron  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  //! MaTriangle constructor with an double array of pnt for the <br>
//!          representation of a double array of triangles. <br>
  Standard_EXPORT   IntPatch_Polyhedron(const Handle(Adaptor3d_HSurface)& Surface,const Standard_Integer nbdU,const Standard_Integer nbdV);
  
  Standard_EXPORT   IntPatch_Polyhedron(const Handle(Adaptor3d_HSurface)& Surface);
  
  Standard_EXPORT     void Destroy() ;
~IntPatch_Polyhedron()
{
  Destroy();
}
  
  Standard_EXPORT     void Perform(const Handle(Adaptor3d_HSurface)& Surface,const Standard_Integer nbdU,const Standard_Integer nbdV) ;
  
  Standard_EXPORT     void DeflectionOverEstimation(const Standard_Real flec) ;
  
  Standard_EXPORT     Standard_Real DeflectionOnTriangle(const Handle(Adaptor3d_HSurface)& Surface,const Standard_Integer Index) const;
  
  Standard_EXPORT     void UMinSingularity(const Standard_Boolean Sing) ;
  
  Standard_EXPORT     void UMaxSingularity(const Standard_Boolean Sing) ;
  
  Standard_EXPORT     void VMinSingularity(const Standard_Boolean Sing) ;
  
  Standard_EXPORT     void VMaxSingularity(const Standard_Boolean Sing) ;
  //! Get the size of the MaTriangle. <br>
  Standard_EXPORT     void Size(Standard_Integer& nbdu,Standard_Integer& nbdv) const;
  //! Give the number of triangles in this double array of <br>
//!          triangles (nbdu*nbdv*2). <br>
  Standard_EXPORT     Standard_Integer NbTriangles() const;
  //! Give the 3 points of the triangle of addresse Index in <br>
//!          the double array of triangles. <br>
  Standard_EXPORT     void Triangle(const Standard_Integer Index,Standard_Integer& P1,Standard_Integer& P2,Standard_Integer& P3) const;
  //! Give the addresse Tricon of the triangle connexe to the <br>
//!          triangle of address Triang by the edge Pivot Pedge and <br>
//!          the third point of this connexe triangle. When we are <br>
//!          on a free edge TriCon==0 but the function return the <br>
//!          value of the triangle in the other side of Pivot on <br>
//!          the free edge. Used to turn around a vertex. <br>
  Standard_EXPORT     Standard_Integer TriConnex(const Standard_Integer Triang,const Standard_Integer Pivot,const Standard_Integer Pedge,Standard_Integer& TriCon,Standard_Integer& OtherP) const;
  //! Give the number of point in the double array of <br>
//!          triangles ((nbdu+1)*(nbdv+1)). <br>
  Standard_EXPORT     Standard_Integer NbPoints() const;
  //! Set the value of a field of the double array of <br>
//!          points. <br>
  Standard_EXPORT     void Point(const gp_Pnt& thePnt,const Standard_Integer lig,const Standard_Integer col,const Standard_Real U,const Standard_Real V) ;
  //! Give the point of index i in the MaTriangle. <br>
  Standard_EXPORT    const gp_Pnt& Point(const Standard_Integer Index,Standard_Real& U,Standard_Real& V) const;
  //! Give the point of index i in the MaTriangle. <br>
  Standard_EXPORT    const gp_Pnt& Point(const Standard_Integer Index) const;
  //! Give the point of index i in the MaTriangle. <br>
  Standard_EXPORT     void Point(const Standard_Integer Index,gp_Pnt& P) const;
  //! Give the bounding box of the MaTriangle. <br>
  Standard_EXPORT    const Bnd_Box& Bounding() const;
  //! Compute the array of boxes. The box <n> corresponding <br>
//!          to the triangle <n>. <br>
  Standard_EXPORT     void FillBounding() ;
  //! Give the array of boxes. The box <n> corresponding <br>
//!          to the triangle <n>. <br>
  Standard_EXPORT    const Handle_Bnd_HArray1OfBox& ComponentsBounding() const;
  
  Standard_EXPORT     Standard_Real DeflectionOverEstimation() const;
  
  Standard_EXPORT     Standard_Boolean HasUMinSingularity() const;
  
  Standard_EXPORT     Standard_Boolean HasUMaxSingularity() const;
  
  Standard_EXPORT     Standard_Boolean HasVMinSingularity() const;
  
  Standard_EXPORT     Standard_Boolean HasVMaxSingularity() const;
  //! Give the plane equation of the triangle of addresse Triang. <br>
  Standard_EXPORT     void PlaneEquation(const Standard_Integer Triang,gp_XYZ& NormalVector,Standard_Real& PolarDistance) const;
  //! Give the plane equation of the triangle of addresse Triang. <br>
  Standard_EXPORT     Standard_Boolean Contain(const Standard_Integer Triang,const gp_Pnt& ThePnt) const;
  
  Standard_EXPORT     void Parameters(const Standard_Integer Index,Standard_Real& U,Standard_Real& V) const;
  
  Standard_EXPORT     void Dump() const;





protected:





private:



Bnd_Box TheBnd;
Handle_Bnd_HArray1OfBox TheComponentsBnd;
Standard_Real TheDeflection;
Standard_Integer nbdeltaU;
Standard_Integer nbdeltaV;
Standard_Address C_MyPnts;
Standard_Address C_MyU;
Standard_Address C_MyV;
Standard_Boolean UMinSingular;
Standard_Boolean UMaxSingular;
Standard_Boolean VMinSingular;
Standard_Boolean VMaxSingular;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif