File: Geom_ToroidalSurface.hxx

package info (click to toggle)
oce 0.18.2-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 301,460 kB
  • sloc: cpp: 1,190,610; ansic: 67,225; sh: 11,667; tcl: 7,954; cs: 5,221; python: 2,867; java: 1,522; makefile: 344; xml: 292; perl: 37
file content (262 lines) | stat: -rw-r--r-- 10,062 bytes parent folder | download | duplicates (5)
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
// 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 _Geom_ToroidalSurface_HeaderFile
#define _Geom_ToroidalSurface_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_Geom_ToroidalSurface.hxx>

#include <Standard_Real.hxx>
#include <Geom_ElementarySurface.hxx>
#include <Standard_Boolean.hxx>
#include <Handle_Geom_Curve.hxx>
#include <Standard_Integer.hxx>
#include <Handle_Geom_Geometry.hxx>
class Standard_ConstructionError;
class Standard_DimensionError;
class Standard_RangeError;
class gp_Ax3;
class gp_Torus;
class TColStd_Array1OfReal;
class Geom_Curve;
class gp_Pnt;
class gp_Vec;
class gp_Trsf;
class Geom_Geometry;


//! Describes a torus.
//! A torus is defined by its major and minor radii, and
//! positioned in space with a coordinate system (a
//! gp_Ax3 object) as follows:
//! - The origin is the center of the torus.
//! - The surface is obtained by rotating a circle around
//! the "main Direction". This circle has a radius equal
//! to the minor radius, and is located in the plane
//! defined by the origin, "X Direction" and "main
//! Direction". It is centered on the "X Axis", on its
//! positive side, and positioned at a distance from the
//! origin equal to the major radius. This circle is the
//! "reference circle" of the torus.
//! - The plane defined by the origin, the "X Direction"
//! and the "Y Direction" is called the "reference plane" of the torus.
//! This coordinate system is the "local coordinate
//! system" of the torus. The following apply:
//! - Rotation around its "main Axis", in the trigonometric
//! sense given by "X Direction" and "Y Direction",
//! defines the u parametric direction.
//! - The "X Axis" gives the origin for the u parameter.
//! - Rotation around an axis parallel to the "Y Axis" and
//! passing through the center of the "reference circle"
//! gives the v parameter on the "reference circle".
//! - The "X Axis" gives the origin of the v parameter on
//! the "reference circle".
//! - The v parametric direction is oriented by the
//! inverse of the "main Direction", i.e. near 0, as v
//! increases, the Z coordinate decreases. (This
//! implies that the "Y Direction" orients the reference
//! circle only when the local coordinate system is direct.)
//! - The u isoparametric curve is a circle obtained by
//! rotating the "reference circle" of the torus through
//! an angle u about the "main Axis".
//! The parametric equation of the torus is :
//! P(u, v) = O + (R + r*cos(v)) * (cos(u)*XDir +
//! sin(u)*YDir ) + r*sin(v)*ZDir, where:
//! - O, XDir, YDir and ZDir are respectively the
//! origin, the "X Direction", the "Y Direction" and the "Z
//! Direction" of the local coordinate system,
//! - r and R are, respectively, the minor and major radius.
//! The parametric range of the two parameters is:
//! - [ 0, 2.*Pi ] for u
//! - [ 0, 2.*Pi ] for v
class Geom_ToroidalSurface : public Geom_ElementarySurface
{

public:

  

  //! A3 is the local coordinate system of the surface.
  //! The orientation of increasing V parametric value is defined
  //! by the rotation around the main axis (ZAxis) in the
  //! trigonometric sense. The parametrization of the surface in the
  //! U direction is defined such as the normal Vector (N = D1U ^ D1V)
  //! is oriented towards the "outside region" of the surface.
  //! Warnings :
  //! It is not forbidden to create a toroidal surface with
  //! MajorRadius = MinorRadius = 0.0
  //!
  //! Raised if MinorRadius < 0.0 or if MajorRadius < 0.0
  Standard_EXPORT Geom_ToroidalSurface(const gp_Ax3& A3, const Standard_Real MajorRadius, const Standard_Real MinorRadius);
  

  //! Creates a ToroidalSurface from a non transient Torus from
  //! package gp.
  Standard_EXPORT Geom_ToroidalSurface(const gp_Torus& T);
  
  //! Modifies this torus by changing its major radius.
  //! Exceptions
  //! Standard_ConstructionError if:
  //! - MajorRadius is negative, or
  //! - MajorRadius - r is less than or equal to
  //! gp::Resolution(), where r is the minor radius of this torus.
  Standard_EXPORT   void SetMajorRadius (const Standard_Real MajorRadius) ;
  
  //! Modifies this torus by changing its minor radius.
  //! Exceptions
  //! Standard_ConstructionError if:
  //! - MinorRadius is negative, or
  //! - R - MinorRadius is less than or equal to
  //! gp::Resolution(), where R is the major radius of this torus.
  Standard_EXPORT   void SetMinorRadius (const Standard_Real MinorRadius) ;
  
  //! Converts the gp_Torus torus T into this torus.
  Standard_EXPORT   void SetTorus (const gp_Torus& T) ;
  

  //! Returns the non transient torus with the same geometric
  //! properties as <me>.
  Standard_EXPORT   gp_Torus Torus()  const;
  
  //! Return the  parameter on the  Ureversed surface for
  //! the point of parameter U on <me>.
  //! Return 2.PI - U.
  Standard_EXPORT   Standard_Real UReversedParameter (const Standard_Real U)  const;
  
  //! Return the  parameter on the  Ureversed surface for
  //! the point of parameter U on <me>.
  //! Return 2.PI - U.
  Standard_EXPORT   Standard_Real VReversedParameter (const Standard_Real U)  const;
  
  //! Computes the aera of the surface.
  Standard_EXPORT   Standard_Real Area()  const;
  
  //! Returns the parametric bounds U1, U2, V1 and V2 of this torus.
  //! For a torus: U1 = V1 = 0 and V1 = V2 = 2*PI .
  Standard_EXPORT   void Bounds (Standard_Real& U1, Standard_Real& U2, Standard_Real& V1, Standard_Real& V2)  const;
  

  //! Returns the coefficients of the implicit equation of the surface
  //! in the absolute cartesian coordinate system :
  //! Coef(1) * X**4 + Coef(2) * Y**4 + Coef(3) * Z**4 +
  //! Coef(4) * X**3 * Y + Coef(5) * X**3 * Z + Coef(6) * Y**3 * X +
  //! Coef(7) * Y**3 * Z + Coef(8) * Z**3 * X + Coef(9) * Z**3 * Y +
  //! Coef(10) * X**2 * Y**2 + Coef(11) * X**2 * Z**2 +
  //! Coef(12) * Y**2 * Z**2 + Coef(13) * X**3 + Coef(14) * Y**3 +
  //! Coef(15) * Z**3 + Coef(16) * X**2 * Y + Coef(17) * X**2 * Z +
  //! Coef(18) * Y**2 * X + Coef(19) * Y**2 * Z + Coef(20) * Z**2 * X +
  //! Coef(21) * Z**2 * Y + Coef(22) * X**2 + Coef(23) * Y**2 +
  //! Coef(24) * Z**2 + Coef(25) * X * Y + Coef(26) * X * Z +
  //! Coef(27) * Y * Z + Coef(28) * X + Coef(29) * Y + Coef(30) *  Z +
  //! Coef(31) = 0.0
  //! Raised if the length of Coef is lower than 31.
  Standard_EXPORT   void Coefficients (TColStd_Array1OfReal& Coef)  const;
  
  //! Returns the major radius, or the minor radius, of this torus.
  Standard_EXPORT   Standard_Real MajorRadius()  const;
  
  //! Returns the major radius, or the minor radius, of this torus.
  Standard_EXPORT   Standard_Real MinorRadius()  const;
  
  //! Computes the volume.
  Standard_EXPORT   Standard_Real Volume()  const;
  
  //! Returns True.
  Standard_EXPORT   Standard_Boolean IsUClosed()  const;
  
  //! Returns True.
  Standard_EXPORT   Standard_Boolean IsVClosed()  const;
  
  //! Returns True.
  Standard_EXPORT   Standard_Boolean IsUPeriodic()  const;
  
  //! Returns True.
  Standard_EXPORT   Standard_Boolean IsVPeriodic()  const;
  
  //! Computes the U isoparametric curve.
  //!
  //! For a toroidal surface the UIso curve is a circle.
  //! The center of the Uiso circle is at the distance MajorRadius
  //! from the location point of the toroidal surface.
  //! Warnings :
  //! The radius of the circle can be zero if for the surface
  //! MinorRadius = 0.0
  Standard_EXPORT   Handle(Geom_Curve) UIso (const Standard_Real U)  const;
  
  //! Computes the V isoparametric curve.
  //!
  //! For a ToroidalSurface the VIso curve is a circle.
  //! The axis of the circle is the main axis (ZAxis) of the
  //! toroidal  surface.
  //! Warnings :
  //! The radius of the circle can be zero if for the surface
  //! MajorRadius = MinorRadius
  Standard_EXPORT   Handle(Geom_Curve) VIso (const Standard_Real V)  const;
  

  //! Computes the  point P (U, V) on the surface.
  //! P (U, V) = Loc + MinorRadius * Sin (V) * Zdir +
  //! (MajorRadius + MinorRadius * Cos(V)) *
  //! (cos (U) * XDir + sin (U) * YDir)
  //! where Loc is the origin of the placement plane (XAxis, YAxis)
  //! XDir is the direction of the XAxis and YDir the direction of
  //! the YAxis and ZDir the direction of the ZAxis.
  Standard_EXPORT   void D0 (const Standard_Real U, const Standard_Real V, gp_Pnt& P)  const;
  

  //! Computes the current point and the first derivatives in
  //! the directions U and V.
  Standard_EXPORT   void D1 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V)  const;
  

  //! Computes the current point, the first and the second derivatives
  //! in the directions U and V.
  Standard_EXPORT   void D2 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV)  const;
  

  //! Computes the current point, the first,the second and the
  //! third derivatives in the directions U and V.
  Standard_EXPORT   void D3 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV)  const;
  

  //! Computes the derivative of order Nu in the direction u and
  //! Nv in the direction v.
  //! Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
  Standard_EXPORT   gp_Vec DN (const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv)  const;
  
  //! Applies the transformation T to this torus.
  Standard_EXPORT   void Transform (const gp_Trsf& T) ;
  
  //! Creates a new object which is a copy of this torus.
  Standard_EXPORT   Handle(Geom_Geometry) Copy()  const;




  DEFINE_STANDARD_RTTI(Geom_ToroidalSurface)

protected:




private: 


  Standard_Real majorRadius;
  Standard_Real minorRadius;


};







#endif // _Geom_ToroidalSurface_HeaderFile