summaryrefslogtreecommitdiff
path: root/inc/Geom_Parabola.hxx
blob: ff34c958686b58f1a2d3124dd78aef9dea0a4318 (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
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
// 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_Parabola_HeaderFile
#define _Geom_Parabola_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Geom_Parabola_HeaderFile
#include <Handle_Geom_Parabola.hxx>
#endif

#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Geom_Conic_HeaderFile
#include <Geom_Conic.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Handle_Geom_Geometry_HeaderFile
#include <Handle_Geom_Geometry.hxx>
#endif
class Standard_ConstructionError;
class Standard_RangeError;
class gp_Parab;
class gp_Ax2;
class gp_Ax1;
class gp_Pnt;
class gp_Vec;
class gp_Trsf;
class Geom_Geometry;


//! Describes a parabola in 3D space. <br>
//! A parabola is defined by its focal length (i.e. the <br>
//! distance between its focus and its apex) and is <br>
//! positioned in space with a coordinate system <br>
//! (gp_Ax2 object) where: <br>
//! - the origin is the apex of the parabola, <br>
//! - the "X Axis" defines the axis of symmetry; the <br>
//!   parabola is on the positive side of this axis, <br>
//! - the origin, "X Direction" and "Y Direction" define the <br>
//!   plane of the parabola. <br>
//!   This coordinate system is the local coordinate <br>
//! system of the parabola. <br>
//! The "main Direction" of this coordinate system is a <br>
//! vector normal to the plane of the parabola. The axis, <br>
//! of which the origin and unit vector are respectively the <br>
//! origin and "main Direction" of the local coordinate <br>
//! system, is termed the "Axis" or "main Axis" of the parabola. <br>
//! The "main Direction" of the local coordinate system <br>
//! gives an explicit orientation to the parabola, <br>
//! determining the direction in which the parameter <br>
//! increases along the parabola. <br>
//! The Geom_Parabola parabola is parameterized as follows: <br>
//! P(U) = O + U*U/(4.*F)*XDir + U*YDir <br>
//! where: <br>
//! - P is the point of parameter U, <br>
//! - O, XDir and YDir are respectively the origin, "X <br>
//!   Direction" and "Y Direction" of its local coordinate system, <br>
//! - F is the focal length of the parabola. <br>
//!  The parameter of the parabola is therefore its Y <br>
//! coordinate in the local coordinate system, with the "X <br>
//! Axis" of the local coordinate system defining the origin <br>
//! of the parameter. <br>
//! The parameter range is ] -infinite, +infinite [. <br>
class Geom_Parabola : public Geom_Conic {

public:

  //! Creates a parabola from a non transient one. <br>
  Standard_EXPORT   Geom_Parabola(const gp_Parab& Prb);
  
//!  Creates a parabola with its local coordinate system "A2" <br>
//!  and it's focal length "Focal". <br>
//!  The XDirection of A2 defines the axis of symmetry of the <br>
//!  parabola. The YDirection of A2 is parallel to the directrix <br>
//!  of the parabola. The Location point of A2 is the vertex of <br>
//!  the parabola <br>//! Raised if Focal < 0.0 <br>
  Standard_EXPORT   Geom_Parabola(const gp_Ax2& A2,const Standard_Real Focal);
  
//!  D is the directrix of the parabola and F the focus point. <br>
//!  The symmetry axis (XAxis) of the parabola is normal to the <br>
//!  directrix and pass through the focus point F, but its <br>
//!  location point is the vertex of the parabola. <br>
//!  The YAxis of the parabola is parallel to D and its location <br>
//!  point is the vertex of the parabola. The normal to the plane <br>
//!  of the parabola is the cross product between the XAxis and the <br>
//!  YAxis. <br>
  Standard_EXPORT   Geom_Parabola(const gp_Ax1& D,const gp_Pnt& F);
  //! Assigns the value Focal to the focal distance of this parabola. <br>
//! Exceptions Standard_ConstructionError if Focal is negative. <br>
  Standard_EXPORT     void SetFocal(const Standard_Real Focal) ;
  //! Converts the gp_Parab parabola Prb into this parabola. <br>
  Standard_EXPORT     void SetParab(const gp_Parab& Prb) ;
  
//!  Returns the non transient parabola from gp with the same <br>
//!  geometric properties as <me>. <br>
  Standard_EXPORT     gp_Parab Parab() const;
  //! Computes the parameter on the reversed parabola, <br>
//! for the point of parameter U on this parabola. <br>
//! For a parabola, the returned value is: -U. <br>
  Standard_EXPORT     Standard_Real ReversedParameter(const Standard_Real U) const;
  //! Returns the value of the first or last parameter of this <br>
//! parabola. This is, respectively: <br>
//! - Standard_Real::RealFirst(), or <br>
//! - Standard_Real::RealLast(). <br>
  Standard_EXPORT     Standard_Real FirstParameter() const;
  //! Returns the value of the first or last parameter of this <br>
//! parabola. This is, respectively: <br>
//! - Standard_Real::RealFirst(), or <br>
//! - Standard_Real::RealLast(). <br>
  Standard_EXPORT     Standard_Real LastParameter() const;
  //! Returns False <br>
  Standard_EXPORT     Standard_Boolean IsClosed() const;
  //! Returns False <br>
  Standard_EXPORT     Standard_Boolean IsPeriodic() const;
  //! Computes the directrix of this parabola. <br>
//! This is a line normal to the axis of symmetry, in the <br>
//! plane of this parabola, located on the negative side <br>
//! of its axis of symmetry, at a distance from the apex <br>
//! equal to the focal length. <br>
//! The directrix is returned as an axis (gp_Ax1 object), <br>
//! where the origin is located on the "X Axis" of this parabola. <br>
  Standard_EXPORT     gp_Ax1 Directrix() const;
  //! Returns 1. (which is the eccentricity of any parabola). <br>
  Standard_EXPORT     Standard_Real Eccentricity() const;
  //! Computes the focus of this parabola. The focus is on the <br>
//! positive side of the "X Axis" of the local coordinate <br>
//! system of the parabola. <br>
  Standard_EXPORT     gp_Pnt Focus() const;
  //! Computes the focal distance of this parabola <br>
//!  The focal distance is the distance between the apex <br>
//! and the focus of the parabola. <br>
  Standard_EXPORT     Standard_Real Focal() const;
  //! Computes the parameter of this parabola which is the <br>
//! distance between its focus and its directrix. This <br>
//! distance is twice the focal length. <br>
//! If P is the parameter of the parabola, the equation of <br>
//! the parabola in its local coordinate system is: Y**2 = 2.*P*X. <br>
  Standard_EXPORT     Standard_Real Parameter() const;
  //! Returns in P the point of parameter U. <br>
//!  If U = 0 the returned point is the origin of the XAxis and <br>
//!  the YAxis of the parabola and it is the vertex of the parabola. <br>
//!  P = S + F * (U * U * XDir +  * U * YDir) <br>
//!  where S is the vertex of the parabola, XDir the XDirection and <br>
//!  YDir the YDirection of the parabola's local coordinate system. <br>
  Standard_EXPORT     void D0(const Standard_Real U,gp_Pnt& P) const;
  
//!  Returns the point P of parameter U and the first derivative V1. <br>
  Standard_EXPORT     void D1(const Standard_Real U,gp_Pnt& P,gp_Vec& V1) const;
  
//!  Returns the point P of parameter U, the first and second <br>
//!  derivatives V1 and V2. <br>
  Standard_EXPORT     void D2(const Standard_Real U,gp_Pnt& P,gp_Vec& V1,gp_Vec& V2) const;
  
//!  Returns the point P of parameter U, the first second and third <br>
//!  derivatives V1 V2 and V3. <br>
  Standard_EXPORT     void D3(const Standard_Real U,gp_Pnt& P,gp_Vec& V1,gp_Vec& V2,gp_Vec& V3) const;
  //! For the point of parameter U of this parabola, <br>
//! computes the vector corresponding to the Nth derivative. <br>
//! Exceptions Standard_RangeError if N is less than 1. <br>
  Standard_EXPORT     gp_Vec DN(const Standard_Real U,const Standard_Integer N) const;
  //! Applies the transformation T to this parabola. <br>
  Standard_EXPORT     void Transform(const gp_Trsf& T) ;
  //! Returns the  parameter on the  transformed  curve for <br>
//!          the transform of the point of parameter U on <me>. <br>
//! <br>
//!          me->Transformed(T)->Value(me->TransformedParameter(U,T)) <br>
//! <br>
//!          is the same point as <br>
//! <br>
//!          me->Value(U).Transformed(T) <br>
//! <br>
//!          This methods returns <U> * T.ScaleFactor() <br>
  Standard_EXPORT     Standard_Real TransformedParameter(const Standard_Real U,const gp_Trsf& T) const;
  //! Returns a  coefficient to compute the parameter on <br>
//!          the transformed  curve  for  the transform  of the <br>
//!          point on <me>. <br>
//! <br>
//!          Transformed(T)->Value(U * ParametricTransformation(T)) <br>
//! <br>
//!          is the same point as <br>
//! <br>
//!          Value(U).Transformed(T) <br>
//! <br>
//!          This methods returns T.ScaleFactor() <br>
  Standard_EXPORT     Standard_Real ParametricTransformation(const gp_Trsf& T) const;
  //! Creates a new object which is a copy of this parabola. <br>
  Standard_EXPORT     Handle_Geom_Geometry Copy() const;




  DEFINE_STANDARD_RTTI(Geom_Parabola)

protected:




private: 


Standard_Real focalLength;


};





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


#endif