DATAKIT SDK  V2026.4
util_geom_dtk.hpp
Go to the documentation of this file.
1 #ifndef _UTIL_GEOM_DTK_HPP_
2 #define _UTIL_GEOM_DTK_HPP_
3 
6 #include <memory>
7 #include <vector>
8 
9 #include <assert.h>
10 class Dtk_2dpnt;
11 
12 
13 /*************************************** POINTS **********************************/
14 
15 //! \ingroup geom
16 //! \class Dtk_Point
17 //! \brief This class represent a point coordinates and information.
18 //! It is part of the Dtk_Vertex entity
19 //! \SmartPtr{Dtk_PointPtr}
20 //!
21 class Dtk_Point : public Dtk_Entity
22 {
23 protected:
24  struct Dtk_Handle; // Not defined here
25  std::unique_ptr<Dtk_Handle> _Private; // Handle
26  enum { _typeID = DTK_TYPE_POINT };
28  Dtk_Point(const Dtk_Point& s);
30  virtual ~Dtk_Point();
31  inline virtual Dtk_Object* Clone() { return new Dtk_Point(*this); }
32 
33 private:
34  friend class Dtk_SmartPtr<Dtk_Point>;
35 public:
36  //! \brief constructors
37  Dtk_Point(const Dtk_pnt& pt);
38 
39  //! \brief downcasting
40  int DtkDynamicType(const int& inId);
41  static Dtk_Point * DtkDynamicCast(Dtk_Object * inObject);
42 
43 
44  //! \CreateCopy{in}
45  static Dtk_PointPtr Create(const Dtk_Point& in );
46  static Dtk_PointPtr Create(const Dtk_pnt& in );
47  //! \brief Calls full featured constructor to allocate a new object.
48  static Dtk_PointPtr Create(const Dtk_Double64 & inX, const Dtk_Double64 & inY, const Dtk_Double64 & inZ);
49 
50  //methods
51  //! \brief Get Coordinates For Point
54 
55  //! \brief Transform Point
57  //! \brief Return type
59 
60  //! \brief Dump entity
61  virtual Dtk_ErrorStatus _Store(void*);
62  virtual Dtk_Size_t GetSize() const;
63 };
64 
65 /*************************************** CURVES **********************************/
66 
67 //! \ingroup geom
68 //! \class Dtk_Curve
69 //! \brief Dtk_Curve is a geometrical entity representing a curve. It is an abstract class that cannot be instancied. \n
70 //! It has several utility methods :\n
71 //!
72 //!- GetDomain allow you to get the whole definition domain for the curve.
73 //!\code
74 //!Dtk_ErrorStatus GetDomain(Dtk_Double64& outUmin,Dtk_Double64& outUmax) const;
75 //!\endcode
76 //!- SetTrimmingParameters/GetTrimUMin/GetTrimUMax allow you to specify/get the used domain for the curve.
77 //!\code
78 //!Dtk_ErrorStatus SetTrimmingParameters(const Dtk_Double64& inUmin,const Dtk_Double64& inUmax);
79 //!Dtk_Double64 GetTrimUMin() const;
80 //!Dtk_Double64 GetTrimUMax() const;
81 //!\endcode
82 //!- ToNurbs convert the curve into nurbs curve.
83 //!- ToPolyline convert the curve into polyline .
84 
85 class Dtk_Curve : public Dtk_Entity
86 {
87 protected:
88  struct Dtk_Handle; // Not defined here
89  std::unique_ptr<Dtk_Handle> _Private; // Handle
90  enum { _typeID = DTK_TYPE_CURVE };
92  Dtk_Curve(const Dtk_Curve& s);
94  virtual Dtk_Object* Clone() = 0;
95 
96 private:
97  friend class Dtk_SmartPtr<Dtk_Curve>;
98 public:
99  virtual ~Dtk_Curve();
100  //! \brief downcasting
101  int DtkDynamicType(const int& inId);
102  static Dtk_Curve * DtkDynamicCast(Dtk_Object * inObject);
103 
104  //methods
105  //! \brief Set Trim points for curve
106  void SetTrimPoints(const Dtk_pnt& inStartPoint,const Dtk_pnt& inEndPoint);
107  //! \brief Return DTK_TRUE if Curve Is trimmed by point or parameter value
109  //! \brief Return first trim point
111  //! \brief Return last trim point
113  //! \brief Return 2 or 3
115  //! \brief Set curve dimension (2 or 3)
116  void SetDimension(const Dtk_Size_t& inDimension);
117  //! \brief Set Trim parameter for curve
118  virtual Dtk_ErrorStatus SetTrimmingParameters(const Dtk_Double64& inUmin,const Dtk_Double64& inUmax);
119  //! \brief Get start Trim parameter
121  //! \brief Get end Trim parameter
124  //! \brief return True if Curve is a line
126  //! \brief return curve Length
128  //! \brief return True if Curve is periodic
129  virtual Dtk_bool IsPeriodic() const;
130  //! \brief return True if Curve is closed
132  //! \brief Compute offset curve and convert it to nurbs
133  Dtk_NurbsCurvePtr ComputeOffset(Dtk_Double64 inOffset, Dtk_dir inOffsetDirection);
134 
135  //virtual methods
136  //! \brief Compute Bounding Box
137  virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax,Dtk_bool inMorePrecise = 0);
138  //! \brief Compute Oriented Bounding Box
139  virtual Dtk_ErrorStatus ComputeOrientedBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax, const Dtk_transfo& inLocal);
140  //! \brief Get Curve Parametrisation
141  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64& outUmin,Dtk_Double64& outUmax) const = 0;
142  //! \brief Convert Curve to polyline
143  //! \param [in] inMinPoint : Minimal number of result points
144  //! \param [in] inTolerance : max tolerance for 3 points alignement.
145  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const =0 ;
146  //! \brief Convert Curve to nurbs
147  virtual Dtk_NurbsCurvePtr ToNurbs()const =0 ;
148  //! \brief Compute U parameter from point
149  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const =0 ;
150  //! \brief Compute point on U parameter
151  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const =0 ;
152  //! \brief Compute dir on U parameter
153  virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64& inU,Dtk_dir& outDir) const;
154  //! \brief Compute point and dir on U parameter
155  virtual Dtk_ErrorStatus ComputeUPointDir(const Dtk_Double64& inU,Dtk_pnt& outPoint,Dtk_dir& outDir)const ;
156  //! \brief Return First point
157  virtual Dtk_pnt ComputeStartPoint()const =0 ;
158  //! \brief Return Last point
159  virtual Dtk_pnt ComputeEndPoint()const =0 ;
160  //! \brief Reverse Curve
161  virtual void Reverse()=0 ;
162  //! \brief Normalize Curve
163  virtual void Normalize();
164 
165  //! \brief Transform Curve
167  // \brief To Dump Curve
168  virtual Dtk_ErrorStatus _Store(void*);
169  friend void PDtk_StoreDataCurve(void*,Dtk_CurvePtr&);
170  virtual Dtk_Size_t GetSize() const;
172 
173  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff,Dtk_dir &outdir,int exttype) const;
174 };
175 
176 //! \ingroup geom
177 //! \class Dtk_NurbsCurve
178 //! \brief This is the Nurbs Class.
179 //! \SmartPtr{Dtk_NurbsCurvePtr}
180 //!
181 class Dtk_NurbsCurve : public Dtk_Curve
182 {
183 protected:
184  struct Dtk_Handle; // Not defined here
185  std::unique_ptr<Dtk_Handle> _Private; // Handle
190  virtual ~Dtk_NurbsCurve();
191  Dtk_NurbsCurve(const Dtk_UInt32& inDegree,const Dtk_tab<Dtk_Double64> &inKnots,const Dtk_tab<Dtk_pnt> &inControlPoints,const Dtk_tab<Dtk_Double64> &inWeights=Dtk_tab<Dtk_Double64>());
192  Dtk_NurbsCurve(const Dtk_UInt32& inDegree,const Dtk_tab<Dtk_Double64>& inKnotsValues,const Dtk_tab<Dtk_UChar8>& inKnotsMultiplicities,const Dtk_tab<Dtk_pnt> &inControlPoints,const Dtk_tab<Dtk_Double64> &inWeights=Dtk_tab<Dtk_Double64>());
193  Dtk_NurbsCurve(const Dtk_tab<Dtk_CurvePtr> &inCurvesToMerge, Dtk_Double64 stichtol /*= DTK_TOLERANCE*/, Dtk_bool LengthParameter /* DTK_FALSE*/ );
194  inline virtual Dtk_Object* Clone() { return new Dtk_NurbsCurve(*this); }
195 private:
196  Dtk_ErrorStatus _ComputeUPointDirClamp(const Dtk_Double64& inUparameter,Dtk_pnt& outPoint,Dtk_dir& outDir)const;
197  void _SetNodalVector(const Dtk_tab<Dtk_Double64>& inKnotsVector);
198  void _SetNodalVector(const Dtk_Double64 * inNodalVector,const Dtk_Size_t &inSize);
199  void _AddKnot(const Dtk_UInt32& inKnotMultiplicity,const Dtk_Double64& inKnotValue);
200  void _SetPointsArray(const Dtk_tab<Dtk_pnt> &inPointArray);
201  void _SetPointsArray(Dtk_pnt *inPoints,const Dtk_Size_t &inSize);
202  void _SetWeight(const Dtk_Size_t& inIndex,Dtk_Double64 inWeight) ;
203  void _SetWeightsArray(const Dtk_tab<Dtk_Double64>& inWeightArray) ;
204  void _SetWeightsArray(Dtk_Double64 * inWeights,const Dtk_Size_t &inSize) ;
205  friend class Dtk_SmartPtr<Dtk_NurbsCurve>;
206 public:
207  Dtk_ErrorStatus _KnotInsertion(const Dtk_Double64 &inUparameter,const Dtk_Size_t &inOccurence,Dtk_Double64 inTolerance=DTK_TOLERANCE);
208  Dtk_ErrorStatus _DegreeElevation(const Dtk_Size_t &inDegreeElevation);
209  int _KnotRemoval(const Dtk_Double64 &inU,const int &inNum,const Dtk_Double64 &inTolerance);
210 
211  //downcasting
212  int DtkDynamicType(const int& inId);
214 
215  //constructors
216  //! \CreateCopy{in}
218  //! \brief Calls full featured constructor to allocate a new object.
219  static Dtk_NurbsCurvePtr Create(const Dtk_UInt32& inDegree,const Dtk_tab<Dtk_Double64> &inKnots,const Dtk_tab<Dtk_pnt> &inControlPoints,const Dtk_tab<Dtk_Double64> &inWeights=Dtk_tab<Dtk_Double64>());
220  //! \brief Calls full featured constructor to allocate a new object.
221  static Dtk_NurbsCurvePtr Create(const Dtk_UInt32& inDegree,const Dtk_tab<Dtk_Double64> &inKnotsValues,const Dtk_tab<Dtk_UChar8> &inKnotsMultiplicities,
222  const Dtk_tab<Dtk_pnt> &inControlPoints,const Dtk_tab<Dtk_Double64> &inWeights=Dtk_tab<Dtk_Double64>());
223  //! \brief Calls full featured constructor to allocate a new object.
224  static Dtk_NurbsCurvePtr Create(const Dtk_NurbsCurvePtr& s,const Dtk_tab<Dtk_Double64>& inKnotsValues,const Dtk_tab<Dtk_UChar8>& inKnotsMultiplicities);
225  //! \brief Calls full featured constructor to allocate a new object.
226  static Dtk_NurbsCurvePtr Create(const Dtk_tab<Dtk_CurvePtr> &inCurvesToMerge, Dtk_Double64 stichtol = DTK_TOLERANCE, Dtk_bool LengthParameter = DTK_FALSE );
227 
228 
229  //methods
230  //! \brief return degree
232  //! \brief return number of different knot value
234  //! \brief return knot value at inIndex place
235  Dtk_Double64 GetKnotValue(const Dtk_Size_t& inIndex) const;
236  //! \brief return knot multiplicity at inIndex place
238  //! \brief return Num Control points
240  //! \brief Set Curve parametrisation domain
241  Dtk_ErrorStatus Reparam(const Dtk_Double64 &inUmin,const Dtk_Double64 &inUmax);
242  //! \brief return the point at place inIndex
243  const Dtk_pnt& Point(const Dtk_Size_t& inIndex) const;
244  Dtk_pnt& Point(const Dtk_Size_t& inIndex);
245  //! \brief return weight
246  Dtk_Double64 GetWeight(const Dtk_Size_t& inIndex) const;
247 
248  //! \brief return DTK_TRUE if one weight != 1
250  //! \brief return DTK_TRUE if bezier
252  //! \brief return DTK_TRUE if knots are uniform
254  //! \brief return DTK_TRUE if nurbs is line
255  Dtk_bool IsLine() const;
256  //! \brief return DTK_TRUE if nurbs is closed
258  //! \brief return DTK_TRUE if nurbs is periodic
259  virtual Dtk_bool IsPeriodic() const;
260 
261  //! \brief sets is_closed field to DTK_TRUE or DTK_FALSE
262  void SetIsPeriodic(const Dtk_bool &inIsPeriodic);
263  //! \brief sets is_closed field to DTK_TRUE or DTK_FALSE
264  void SetIsClosed(const Dtk_bool &inIsClosed);
265  //! \brief return DTK_TRUE if nurbs can have discontinuity
267 
268  Dtk_ErrorStatus ComputeUPointDir(const Dtk_Double64& inUparameter,Dtk_pnt& outPoint,Dtk_dir& outDir)const;
269  Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax, Dtk_bool inMorePrecise = 0);
270 
271  //! \brief Get Curve Parametrisation
272  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64& outUmin,Dtk_Double64& outUmax) const;
273 
274  //! \brief Convert Curve to polyline
275  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
276  //! \brief Convert Curve to nurbs
277  virtual Dtk_NurbsCurvePtr ToNurbs()const ;
278  //! \brief Compute point on U parameter
279  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
280  //! \brief Compute dir on U parameter
281  virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64& inU,Dtk_dir& outDir) const;
282  //! \brief Compute pparameter
283  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outParameter)const;
284  //! \brief Return First point
285  virtual Dtk_pnt ComputeStartPoint() const;
286  //! \brief Return Last point
287  virtual Dtk_pnt ComputeEndPoint() const;
288  //! \brief Reverse Curve
289  virtual void Reverse();
290 
292 
293 
294  //! \brief Transform Curve
296  //! \brief Return Curve type
298  void SetTypeBeforeConversion(const type_detk& inType);
300 
301  // \brief To Dump Curve
302  virtual Dtk_ErrorStatus _Store(void*);
303  virtual Dtk_Size_t GetSize() const;
304 
306  //! \brief Compute any derivative for an U value outside of the curve definition
307  //! \param [in] inUvalue : the U value
308  //! \param [in] inUdiff : wanted derivative (0 = point, 1 = Udir or tangent, 2 = second derivative, etc.)
309  //! \param [out] outdir : the computed derivative
310  //! \param [in] exttype : for internal use
311  Dtk_ErrorStatus _ComputeAnyDerivativeExtended(Dtk_Double64 inUvalue, int inUdiff,Dtk_dir &outdir,int exttype) const;
312  //! \brief Compute any derivative for an U value
313  //! \param [in] inUvalue : the U value
314  //! \param [in] inUdiff : wanted derivative (0 = point, 1 = Udir or tangent, 2 = second derivative, etc.)
315  //! \param [out] outdir : the computed derivative
316  //! \param [in] exttype : for internal use
317  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff,Dtk_dir &outdir,int exttype) const;
318  Dtk_Double64 _ComputeWeight(Dtk_Double64 inUvalue, int exttype) const;
319 
321 };
322 
323 //! \ingroup geom
324 //! \class Dtk_Polyline
325 //! \brief This is the Polyline and Segment Line Class.
326 //! \SmartPtr{Dtk_PolylinePtr}
327 //!
328 class Dtk_Polyline : public Dtk_Curve
329 {
330 protected:
331  //! \brief Not defined here
332  struct Dtk_Handle;
333  //! \brief Handle
334  std::unique_ptr<Dtk_Handle> _Private;
335  //! \brief Entity Type
338  Dtk_Polyline(const Dtk_Polyline& inPolylineToCopy);
341  Dtk_Polyline(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2);
342  inline virtual Dtk_Object* Clone() { return new Dtk_Polyline(*this); }
343  //! \brief Default destructor
344  virtual ~Dtk_Polyline();
345 private:
346  //! \brief smart pointer
347  friend class Dtk_SmartPtr<Dtk_Polyline>;
348 public:
349 
350  //downcasting
351  int DtkDynamicType(const int& inId);
352  static Dtk_Polyline * DtkDynamicCast(Dtk_Object * inObjectToCast);
353 
354  //! \CreateCopy{in}
355  static Dtk_PolylinePtr Create( const Dtk_Polyline& in );
356  //! \brief Calls full featured constructor to allocate a new object.
358  //! \brief Calls full featured constructor to allocate a new object.
359  static Dtk_PolylinePtr Create( const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2 );
360 
361  //methods
362  //! \brief return DTK_TRUE if polyline is a line DTK_FALSE otherwise
363  Dtk_bool IsLine() const;
364  //! \brief return number of points for the polyline
366  //! \brief Add point to polyline
367  void AddPoint(const Dtk_pnt& inNewPoint);
368  void AddPoint(const Dtk_Double64& inX,const Dtk_Double64& inY,const Dtk_Double64& inZ=0.0);
369 
370  //! \brief return the point at place inIndex
371  const Dtk_pnt& Point(const Dtk_Size_t& inIndex) const;
372  Dtk_pnt& Point(const Dtk_Size_t& inIndex);
373 
374  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
375  virtual Dtk_NurbsCurvePtr ToNurbs()const ;
376  //! \brief Compute U parameter from point
377  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const;
378  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
379  //! \brief Compute dir on U parameter
380  virtual Dtk_pnt ComputeStartPoint() const;
381  virtual Dtk_pnt ComputeEndPoint() const;
382  virtual void Reverse();
383  Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax, Dtk_bool inMorePrecise = 0);
384  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff,Dtk_dir &outdir,int exttype) const;
385 
386 
387  //! \brief Get Curve Parametrisation
388  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64& outUmin,Dtk_Double64& outUmax) const;
389 
390  //! \brief transform Polyline with inTransformation
391  virtual Dtk_ErrorStatus Transform(const Dtk_transfo& inTransfo);
393 
394  virtual Dtk_ErrorStatus _Store(void*);
395  virtual Dtk_Size_t GetSize() const;
396 };
397 
398 //! \ingroup geom
399 //! \class Dtk_Line
400 //! \brief This is the Infinite Line Class.
401 //! 0.0 parametrisation is first point or origin
402 //! 1.0 parametrisation is second point or vector norm
403 //! \SmartPtr{Dtk_LinePtr}
404 class Dtk_Line : public Dtk_Curve
405 {
406 protected:
407  //! \brief Not defined here
408  struct Dtk_Handle;
409  //! \brief Handle
410  std::unique_ptr<Dtk_Handle> _Private;
411  //! \brief Entity Type
412  enum { _typeID = DTK_TYPE_LINE };
414  Dtk_Line(const Dtk_Line& inLineToCopy);
416  Dtk_Line(const Dtk_pnt &inOrigin, const Dtk_dir &inDirection);
417  Dtk_Line(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2);
418  inline virtual Dtk_Object* Clone() { return new Dtk_Line(*this); }
419  //! \BaseDestructor
420  virtual ~Dtk_Line();
421 private:
422  //! \brief smart pointer
423  friend class Dtk_SmartPtr<Dtk_Line>;
424 public:
425 
426  //downcasting
427  int DtkDynamicType(const int& inId);
428  static Dtk_Line * DtkDynamicCast(Dtk_Object * inObjectToCast);
429 
430  //! \CreateCopy{in}
431  static Dtk_LinePtr Create(const Dtk_Line& in);
432  //! \brief Calls full featured constructor to allocate a new object.
433  static Dtk_LinePtr Create(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2);
434  //! \brief Calls full featured constructor to allocate a new object.
435  static Dtk_LinePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inDirection);
436 
437  //methods
438  //! \brief return origin of line
440  //! \brief return direction of line
442 
443  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
444  virtual Dtk_NurbsCurvePtr ToNurbs()const ;
445  //! \brief Compute U parameter from point
446  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const;
447  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
448  //! \brief Compute dir on U parameter
449  virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64& inU,Dtk_dir& outDir) const;
450  virtual Dtk_pnt ComputeStartPoint() const;
451  virtual Dtk_pnt ComputeEndPoint() const;
452  virtual void Reverse();
453  virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax,Dtk_bool inMorePrecise = 0);
454 
455 
456  //! \brief Get Curve Parametrisation
457  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64& outUmin,Dtk_Double64& outUmax) const;
458 
459  //! \brief transform Line with inTransformation
460  virtual Dtk_ErrorStatus Transform(const Dtk_transfo& inTransfo);
461  //! \brief Normalize Curve
462  virtual void Normalize();
463 
465 
466  virtual Dtk_ErrorStatus _Store(void*);
467  virtual Dtk_Size_t GetSize() const;
468  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff,Dtk_dir &outdir,int exttype) const;
469 };
470 
471 //! \ingroup geom
472 //! \class Dtk_Conic
473 //! \brief This is the Conic Class.
474 //! \SmartPtr{Dtk_ConicPtr}
475 //!
476 class Dtk_Conic : public Dtk_Curve
477 {
478 protected:
479  struct Dtk_Handle; // Not defined here
480  std::unique_ptr<Dtk_Handle> _Private; // Handle
481  enum { _typeID = DTK_TYPE_CONIC };
483  Dtk_Conic(const Dtk_Conic& in);
485  virtual Dtk_Object* Clone() = 0;
486  virtual ~Dtk_Conic();
487 private:
488  Dtk_ErrorStatus _SetCenterPoint(const Dtk_pnt& inCenterPoint);
489  Dtk_ErrorStatus _SetCenterPoint(const Dtk_Double64& inXCenterPoint,const Dtk_Double64& inYCenterPoint,const Dtk_Double64& inZCenterPoint);
490  Dtk_ErrorStatus _SetNormalDirection(const Dtk_dir& inNormalDirection);
491  Dtk_ErrorStatus _SetOriginDirection(const Dtk_dir& inOriginDirection);
492 
493  friend class Dtk_SmartPtr<Dtk_Conic>;
494 public:
495 
496  //downcasting
497  int DtkDynamicType(const int& inId);
498  static Dtk_Conic * DtkDynamicCast(Dtk_Object * inObject);
499 
500  //methods
501  //! \brief Get Center of Conic (inCenter on schema)
502  const Dtk_pnt& GetCenterPoint() const;
503 
504  //! \brief Get Normal vector of Conic (inNormal on schema)
505  const Dtk_dir& GetNormalDirection() const;
506  const Dtk_dir& GetZDirection() const;
507 
508  //! \brief Get Origin of parametrisation of Conic (inXdir on schema)
509  const Dtk_dir& GetOriginDirection() const;
510  const Dtk_dir& GetXDirection() const;
511 
512  //! \brief Get Y direction of Conic
514 
515  //! \brief Get Nurbs corresponding to conic (with trim)
516  virtual Dtk_NurbsCurvePtr ToNurbs()const;
517 
519 
520  //! \brief transform Conic
521  virtual Dtk_ErrorStatus Transform(const Dtk_transfo& inTransfo);
523 
524  virtual Dtk_ErrorStatus _Store(void*);
525  virtual Dtk_Size_t GetSize() const;
526 };
527 
528 //! \ingroup geom
529 //! \class Dtk_Ellipse
530 //! \brief This is the ellipse and circle Class.
531 //! parametrisation :[ 0.0 - 2PI ] 0.0 is given by inXref or inOriginDirection
532 //! \image html geom_ellipse.png
533 //! \SmartPtr{Dtk_EllipsePtr}
534 //!
535 class Dtk_Ellipse : public Dtk_Conic
536 {
537 protected:
538  struct Dtk_Handle; // Not defined here
539  std::unique_ptr<Dtk_Handle> _Private; // Handle
544  Dtk_Ellipse(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inMajorRadius,const Dtk_Double64& inMinorRadius);
545  inline virtual Dtk_Object* Clone() { return new Dtk_Ellipse(*this); }
546  virtual ~Dtk_Ellipse();
547 private:
548  Dtk_ErrorStatus _SetRadius(const Dtk_Double64& inMajorRadius,const Dtk_Double64& inMinorRadius);
549  Dtk_ErrorStatus _SetRadius(const Dtk_Double64& inRadius);
550  friend class Dtk_SmartPtr<Dtk_Ellipse>;
551 public:
552 
553  //downcasting
554  int DtkDynamicType(const int& inId);
555  static Dtk_Ellipse * DtkDynamicCast(Dtk_Object * inObject);
556 
557  //! \CreateCopy{in}
558  static Dtk_EllipsePtr Create(const Dtk_Ellipse& in );
559  //! \brief Calls full featured constructor to allocate a new object.
560  static Dtk_EllipsePtr Create(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inMajorRadius,const Dtk_Double64& inMinorRadius);
561  //! \brief Calls full featured constructor to allocate a new object.
562  static Dtk_EllipsePtr Create(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inRadius);
563 
564  //methods
568 
569 
570  //! \brief Get Curve Parametrisation
572  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
573  // virtual Dtk_NurbsCurvePtr ToNurbs()const ;
574  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
575  //! \brief Compute dir on U parameter
576  virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64& inU,Dtk_dir& outDir) const;
577  //! \brief Compute U parameter from point
578  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const ;
579  //! \brief Compute Bounding Box
580  virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax,Dtk_bool inMorePrecise = 0);
581 
582 
583  virtual Dtk_pnt ComputeStartPoint() const;
584  virtual Dtk_pnt ComputeEndPoint() const;
585  virtual void Reverse();
586 
587  //! \brief transform
590 
591  virtual Dtk_ErrorStatus _Store(void*);
592  virtual Dtk_Size_t GetSize() const;
593  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff,Dtk_dir &outdir,int exttype) const;
594 };
595 
596 //! \SmartPtr{Dtk_ParabolaPtr}
597 class Dtk_Parabola : public Dtk_Conic
598 {
599 protected:
600  struct Dtk_Handle; // Not defined here
601  std::unique_ptr<Dtk_Handle> _Private; // Handle
606  Dtk_Parabola(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inMajorRadius);
607  inline virtual Dtk_Object* Clone() { return new Dtk_Parabola(*this); }
608  virtual ~Dtk_Parabola();
609 private:
610  Dtk_ErrorStatus _SetFocal(const Dtk_Double64& inFocal);
611  friend class Dtk_SmartPtr<Dtk_Parabola>;
612 public:
613 
614  //downcasting
615  int DtkDynamicType(const int& inId);
616  static Dtk_Parabola * DtkDynamicCast(Dtk_Object * inObject);
617 
618  //! \CreateCopy{in}
620  //! \brief Calls full featured constructor to allocate a new object.
621  static Dtk_ParabolaPtr Create(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inFocal);
622 
623  //methods
625 
626 
627  //! \brief Get Curve Parametrisation
629  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
630  //virtual Dtk_NurbsCurvePtr ToNurbs()const ;
631  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
632  //! \brief Compute U parameter from point
633  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const;
634  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff,Dtk_dir &outdir,int exttype) const;
635 
636  virtual Dtk_pnt ComputeStartPoint() const;
637  virtual Dtk_pnt ComputeEndPoint() const;
638  virtual void Reverse();
639 
640 
641 
642  //! \brief transform
645  virtual Dtk_ErrorStatus _Store(void*);
646  virtual Dtk_Size_t GetSize() const;
647 };
648 
649 //! \SmartPtr{Dtk_HyperbolaPtr}
650 class Dtk_Hyperbola : public Dtk_Conic
651 {
652 protected:
653  struct Dtk_Handle; // Not defined here
654  std::unique_ptr<Dtk_Handle> _Private; // Handle
659  Dtk_Hyperbola(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inSemiAxis,const Dtk_Double64& inSemiImageAxis);
660  inline virtual Dtk_Object* Clone() { return new Dtk_Hyperbola(*this); }
661  virtual ~Dtk_Hyperbola();
662 private:
663  friend class Dtk_SmartPtr<Dtk_Hyperbola>;
664 public:
665 
666  //downcasting
667  int DtkDynamicType(const int& inId);
669 
670  //! \CreateCopy{in}
672  //! \brief Calls full featured constructor to allocate a new object.
673  static Dtk_HyperbolaPtr Create(const Dtk_pnt& inCenter,const Dtk_dir& inNormal,const Dtk_dir& inXref,const Dtk_Double64& inSemiAxis,const Dtk_Double64& inSemiImageAxis);
674 
675  //methods
678 
679 
680  //! \brief Get Curve Parametrisation
682  virtual Dtk_PolylinePtr ToPolyline(const int & inMinPoint,const Dtk_Double64& inTolerance)const ;
683  //virtual Dtk_NurbsCurvePtr ToNurbs()const ;
684  virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64& inU,Dtk_pnt& outPoint)const ;
685  //! \brief Compute U parameter from point
686  virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt& inPoint,Dtk_Double64& outU)const ;
687  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff,Dtk_dir &outdir,int exttype) const;
688 
689  virtual Dtk_pnt ComputeStartPoint() const;
690  virtual Dtk_pnt ComputeEndPoint() const;
691  virtual void Reverse();
692 
694 
695  //! \brief transform
698 
699  virtual Dtk_ErrorStatus _Store(void*);
700  virtual Dtk_Size_t GetSize() const;
701 };
702 
703 /*************************************** END CURVES **********************************/
704 /*************************************** SURFACES **********************************/
705 //! \ingroup geom
706 //! \class Dtk_Surface
707 //! \brief Dtk_Surface is a geometrical entity representing a surface.
708 //! Some type of surface are unlimited such as plane, conical, cylindrical, extrusion surface.
709 //! It is an abstract class that cannot be instancied. \n
710 //! It has several utility methods : \n
711 //! - GetDomain allow you to get the whole definition domain for the surface.
712 //! - SetTrimDomain/GetTrimDomain allow you to specify/get the used domain for the surface.
713 //! - ToNurbs convert the surface into nurbs surface.
714 
715 class Dtk_Surface : public Dtk_Entity
716 {
717 protected:
718  struct Dtk_Handle; // Not defined here
719  std::unique_ptr<Dtk_Handle> _Private; // Handle
724  virtual Dtk_Object* Clone() = 0;
725  virtual ~Dtk_Surface();
726 private:
727  friend class Dtk_SmartPtr<Dtk_Surface>;
728 public:
729 
730  //downcasting
731  int DtkDynamicType(const int& inId);
733 
734  //! \brief Get Surface Trim Box : Umin = outTrimValues[0] Umax = outTrimValues[1] Vmin = outTrimValues[2] Vmax = outTrimValues[3]
735  Dtk_ErrorStatus GetTrimUVBox(Dtk_Double64 outTrimValues[]) const;
736  //! \brief Set Surface Trim Box : Umin = inTrimValues[0] Umax = inTrimValues[1] Vmin = inTrimValues[2] Vmax = inTrimValues[3]
737  virtual Dtk_ErrorStatus SetTrimUVBox(Dtk_Double64 inTrimValues[]);
738  //! \brief Set Surface Parametrisation : Umin = inDomain[0] Umax = inDomain[1] Vmin = inDomain[2] Vmax = inDomain[3]
739  //virtual Dtk_ErrorStatus SetDomain(Dtk_Double64 inDomain[]);
740 
741  //! \brief Compute Bounding Box
743  //! \brief Compute Normal on UV point
744  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
745  //! \brief Compute 3D point
746  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const = 0;
747  //! \brief Compute 3D first derivative on UV point according to UV derivative
748  Dtk_ErrorStatus ComputeUVto3DFirstDerivative( const Dtk_Double64& inUValue, const Dtk_Double64& inVValue, const Dtk_dir& inUVFirstDerivative, Dtk_dir &out3DFirstDerivative ) const;
749  //! \brief Compute 3D second derivative on UV point according to UV derivatives
750  Dtk_ErrorStatus ComputeUVto3DSecondDerivative( const Dtk_Double64& inUValue, const Dtk_Double64& inVValue, const Dtk_dir& inUVFirstDerivative, const Dtk_dir& inUVSecondDerivative, Dtk_dir &out3DSecondDerivative ) const;
751  //! \brief Return DTK_TRUE If Periodic following U parameter
752  virtual Dtk_bool IsUPeriodic() const;
753  //! \brief Return DTK_TRUE If Periodic following V parameter
754  virtual Dtk_bool IsVPeriodic() const;
755  //! \brief Return DTK_TRUE if Surface Is trimmed by parameter value
757 
758  //virtual methods
759  //! \brief Convert a surface into a Nurbs, keeping the parametrisation of the initial surface
760  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL)const =0;
761  virtual Dtk_Size_t GetSize() const;
762  virtual Dtk_ErrorStatus _Store(void*);
763  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
764  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const=0;
766 
767  //Internal use only
770 
771  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int extendtype) const;
772  virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int extendtype) const;
773 };
774 
775 //! \ingroup geom
776 //! \class Dtk_NurbsSurface
777 //! \brief This is the Nurbs Surface Class.
778 //! \SmartPtr{Dtk_NurbsSurfacePtr}
779 //!
781 {
782 protected:
783  struct Dtk_Handle; // Not defined here
784  std::unique_ptr<Dtk_Handle> _Private; // Handle
789  Dtk_NurbsSurface(const Dtk_UInt32& inUDegree,const Dtk_UInt32& inVDegree,const Dtk_tab<Dtk_Double64> &inUKnots,const Dtk_tab<Dtk_Double64> &inVKnots,const Dtk_tab<Dtk_pnt> &inControlPoints,
791  Dtk_NurbsSurface(const Dtk_UInt32& inUDegree,const Dtk_UInt32& inVDegree,const Dtk_tab<Dtk_Double64> &inUKnotsValues,const Dtk_tab<Dtk_Double64> &inVKnotsValues,
792  const Dtk_tab<Dtk_UChar8> &inUKnotsMultiplicities,const Dtk_tab<Dtk_UChar8> &inVKnotsMultiplicities,const Dtk_tab<Dtk_tab<Dtk_pnt> > &inControlPoints,
794  Dtk_NurbsSurface(const Dtk_tab<Dtk_SurfacePtr> &inSurfacesToMerge, Dtk_Double64 stichtol /*= DTK_TOLERANCE */ );
795 
796  inline virtual Dtk_Object* Clone() { return new Dtk_NurbsSurface(*this); }
797  virtual ~Dtk_NurbsSurface();
798 private:
799  void _SetPointsArray(const Dtk_tab< Dtk_tab<Dtk_pnt> > &inPoints);
800  void _SetPointsArray(Dtk_pnt **inPoints,const Dtk_Size_t &inUSize,const Dtk_Size_t &inVSize);
801  void _SetWeightsArray(const Dtk_tab< Dtk_tab<Dtk_Double64> > &inWeights) ;
802  void _SetWeightsArray(Dtk_Double64 ** inWeights,const Dtk_Size_t &inUSize,const Dtk_Size_t &inVSize) ;
803  void _SetNodalVectorU(const Dtk_tab<Dtk_Double64> &inNodalVector);
804  void _SetNodalVectorU(const Dtk_Double64 * inNodalVector,const Dtk_Size_t &inSize);
805  void _SetNodalVectorV(const Dtk_tab<Dtk_Double64> &inNodalVector);
806  void _SetNodalVectorV(const Dtk_Double64 * inNodalVector,const Dtk_Size_t &inSize);
807  /*void _AddUKnotValue(const Dtk_UInt32& inKnotMultiplicity,const Dtk_Double64& inKnotValue);
808  void _AddVKnotValue(const Dtk_UInt32& inKnotMultiplicity,const Dtk_Double64& inKnotValue);*/
809 
810  Dtk_ErrorStatus _ComputeAnyDerivative_exotic(const Dtk_Double64 &inUvalue, const Dtk_Double64 &inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
811  Dtk_ErrorStatus _ComputeMultipleDerivative_exotic(const Dtk_Double64 &inUalue, const Dtk_Double64 &inValue, int ndu,int ndv,int nduvmax,Dtk_dir* outdirs,int exttype) const;
812 
813  inline Dtk_Double64*Pdtk_unpacknodal( int unbk, int cnbk, Dtk_UChar8* multi, Dtk_Double64* compknots ) const;
814 
815  friend class Dtk_SmartPtr<Dtk_NurbsSurface>;
816 
817  virtual Dtk_ErrorStatus _ComputeAnyDerivativeExtended(Dtk_Double64 inUalue, Dtk_Double64 inValue, int ndu,int ndv,Dtk_dir &outdir,int exttype) const;
818  virtual Dtk_ErrorStatus _ComputeMultipleDerivativeExtendedOld( Dtk_Double64 inUalue, Dtk_Double64 inValue, int ndu, int ndv, int nduvmax, Dtk_dir* outdirs, int exttype ) const;
819  virtual Dtk_ErrorStatus _ComputeMultipleDerivativeExtended(Dtk_Double64 inUalue, Dtk_Double64 inValue, int ndu,int ndv,int nduvmax,Dtk_dir* outdirs,int exttype) const;
820 public:
821  Dtk_ErrorStatus _KnotInsertion(const Dtk_Double64 &inParameter,const Dtk_Size_t &inOccurence,const Dtk_bool &inUSplit,Dtk_Double64 inTolerance=DTK_TOLERANCE);
822  int _KnotRemoval(const Dtk_Double64 &inParameter,const int &inOccurence,const Dtk_bool &inUSplit,const Dtk_Double64 &inTolerance);
823 
824  //downcasting
825  int DtkDynamicType(const int& inId);
827 
828  //! \CreateCopy{in}
830  //! \brief Calls full featured constructor to allocate a new object.
831  //! \param inControlPoints Control points must be in order [ u0v0, u0v1, u0v2, ..., u1v0, u1v1, u1v2, ..., ..., uNv0, uNv1, uNv2, ..., uNvM ].
832  static Dtk_NurbsSurfacePtr Create(const Dtk_UInt32& inUDegree,const Dtk_UInt32& inVDegree,const Dtk_tab<Dtk_Double64> &inUKnots,
833  const Dtk_tab<Dtk_Double64> &inVKnots,const Dtk_tab<Dtk_pnt> &inControlPoints,const Dtk_tab<Dtk_Double64> &inWeights=Dtk_tab<Dtk_Double64>(),type_detk inSurfaceType = DTK_TYPE_NURBS_SURFACE);
834  //! \brief Calls full featured constructor to allocate a new object.
835  //! \param inControlPoints Control points must be in order [ [u0v0, u0v1, u0v2, ...], [u1v0, u1v1, u1v2, ...], ..., [uNv0, uNv1, uNv2, ...] ].
836  static Dtk_NurbsSurfacePtr Create(const Dtk_UInt32& inUDegree,const Dtk_UInt32& inVDegree,const Dtk_tab<Dtk_Double64> &inUKnotsValues,
837  const Dtk_tab<Dtk_Double64> &inVKnotsValues,const Dtk_tab<Dtk_UChar8> &inUKnotsMultiplicities,const Dtk_tab<Dtk_UChar8> &inVKnotsMultiplicities,const Dtk_tab<Dtk_tab<Dtk_pnt> > &inControlPoints,
839  //! \brief Calls full featured constructor to allocate a new object.
840  static Dtk_NurbsSurfacePtr Create(const Dtk_tab<Dtk_SurfacePtr> &inSurfacesToMerge, Dtk_Double64 stichtol = DTK_TOLERANCE );
841 
842 
843  //methods
848  Dtk_Double64 GetUKnotValue(const Dtk_Size_t& inIndex) const;
850  Dtk_Double64 GetVKnotValue(const Dtk_Size_t& inIndex ) const;
854 
855  const Dtk_pnt& Point(const Dtk_Size_t& inUIndex , const Dtk_Size_t& inVIndex) const;
856  Dtk_pnt& Point(const Dtk_Size_t& inUIndex , const Dtk_Size_t& inVIndex);
857  Dtk_Double64 GetWeight(const Dtk_Size_t& inUIndex , const Dtk_Size_t& inVIndex) const;
861  Dtk_bool IsPlane() const;
862 
863  //! \brief return DTK_TRUE if nurbs is periodic in U
864  virtual Dtk_bool IsUPeriodic() const;
865  //! \brief return DTK_TRUE if nurbs is periodic in V
866  virtual Dtk_bool IsVPeriodic() const;
867 
868  void SetIsUPeriodic(Dtk_bool inPeriodicFlag);
869  void SetIsVPeriodic(Dtk_bool inPeriodicFlag);
871 
872 
873 
874  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
875  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
876 
877  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
878  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
879  virtual Dtk_ErrorStatus ComputeUDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outdir) const;
880  virtual Dtk_ErrorStatus ComputeVDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outdir) const;
881  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
882  virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
883  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
884  virtual Dtk_ErrorStatus Reparam(Dtk_Double64 inDomain[]);
887  virtual Dtk_ErrorStatus Transform(const Dtk_transfo& inTransfo);
888  virtual Dtk_Size_t GetSize() const;
889  virtual Dtk_ErrorStatus _Store(void*);
890 
891  Dtk_ErrorStatus SplitAt(const Dtk_Double64 &inParameter,const Dtk_bool &inUSplit,const Dtk_bool &inKeepLeft,Dtk_NurbsSurfacePtr &outOtherPart,Dtk_Double64 inTolerance=DTK_TOLERANCE);
893  Dtk_ErrorStatus ReduceDegree( const Dtk_UInt32& inTargetUDegree, const Dtk_UInt32& inTargetVDegree );
894  Dtk_NurbsSurfacePtr ForceG1Continuity (Dtk_Double64 tolerance_to_remove = 0.0005) const;
895 
898 };
899 
900 //! \ingroup geom
901 //! \class Dtk_PlaneSurface
902 //! \brief This is the Plane Surface Class.
903 //! \brief U parametrisation : [-infini - +infini] : 0 is inOrigin and unit vector is inUDirection
904 //! \brief V parametrisation : [-infini - +infini] : 0 is inOrigin and unit vector is inVDirection
905 //! \image html geom_plane.png
906 //! \SmartPtr{Dtk_PlaneSurfacePtr}
908 {
909 protected:
910  struct Dtk_Handle; // Not defined here
911  std::unique_ptr<Dtk_Handle> _Private; // Handle
916  Dtk_PlaneSurface(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal,const Dtk_dir& inUDirection,const Dtk_dir& inVDirection);
917  inline virtual Dtk_Object* Clone() { return new Dtk_PlaneSurface(*this); }
918 
919  virtual ~Dtk_PlaneSurface();
920 private:
921  friend class Dtk_SmartPtr<Dtk_PlaneSurface>;
922 public:
923 
924  //downcasting
925  int DtkDynamicType(const int& inId);
927 
928  //! \brief Create an infinite plane surface
929  //! \param [in] inOrigin : Origin of plane ( origin of Uparametrisation and Vparametrisation )
930  //! \param [in] inNormal : Plane Normal or Zdir
931  //! \param [in] inUDirection : UDirection (origin of Uparametrisation) or Xdir
932  //! \param [in] inVDirection : optionnal VDirection (origin of Vparametrisation) or Ydir
933  //! \return Dtk_PlaneSurfacePtr created surface
934  static Dtk_PlaneSurfacePtr Create(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal,const Dtk_dir& inUDirection,const Dtk_dir& inVDirection=Dtk_dir());
935  //! \CreateCopy{in}
937 
938  //methods
946 
947  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
948  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
949  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
950  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
951  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
952  virtual Dtk_Size_t GetSize() const;
953  virtual Dtk_ErrorStatus _Store(void*);
957 
958  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
959 };
960 
961 //! \ingroup geom
962 //! \class Dtk_RevolutionSurface
963 //! \brief This is the Revolution Surface Class.
964 //! \deprecated Use Dtk_StandardRevolutionSurface instead.
965 //! U parametrisation : [0.0 - 2PI] 0.0 is given by inUDirection or inXdir or inOriginDirection
966 //! V parametrisation : revolved curve parametrisation
967 //! \SmartPtr{Dtk_RevolutionSurfacePtr}
968 //!
970 {
971 protected:
972  struct Dtk_Handle; // Not defined here
973  std::unique_ptr<Dtk_Handle> _Private; // Handle
979  inline virtual Dtk_Object* Clone() { return new Dtk_RevolutionSurface(*this); }
981 private:
982  friend class Dtk_SmartPtr<Dtk_RevolutionSurface>;
983 public:
984 
985  //downcasting
986  int DtkDynamicType(const int& inId);
988 
989  //constructors
990  //! \brief OBSOLETE Create Dtk_RevolutionSurface
991  //! \deprecated Create Dtk_StandardRevolutionSurface instead.
992  //! \param [in] inRevolvedCurve : Curve to be revolved
993  //! \param [in] inAxisposition : Revolution Axis Position
994  //! \param [in] inRevolutionAxis : Revolution Axis or Zdir
995  //! \param [in] inUDirection : UDirection (origin of Uparametrisation) or Xdir
996  //! \param [in] inYDir : Optional Ydir
997  //! \return Dtk_RevolutionSurfacePtr created surface
998  SetAsDeprecated( "2026.3", "Use Dtk_StandardRevolutionSurfacePtr" )
999  static Dtk_RevolutionSurfacePtr Create(const Dtk_CurvePtr& inRevolvedCurve,const Dtk_pnt& inAxisposition,const Dtk_dir& inRevolutionAxis,const Dtk_dir& inUDirection,const Dtk_dir&inYDir= Dtk_dir());
1000  //! \CreateCopy{in}
1002  static Dtk_RevolutionSurfacePtr Create(const Dtk_RevolutionSurface& in);
1003 
1004  //methods
1005  //! \brief GetRevolvedCurve
1006  //! \return Curve to be revolved
1008  //! \brief GetRevolutionAxis
1009  //! \return revolution Axis (same as GetZDirection )
1010  const Dtk_dir& GetRevolutionAxis() const;
1011  //! \brief Get origin
1012  //! \return Center point of revolution
1013  const Dtk_pnt& GetAxisPosition() const;
1014  //! \brief Give U origin for parametrisation
1015  //! \return Dtk_dir for U start
1016  const Dtk_dir& GetXDirection()const;
1017  //! \brief Give Y Direction (Axis Placement can be indirect )
1018  //! \return Dtk_dir
1020  //! \brief GetZDirection
1021  //! \return revolution Axis (same as GetRevolutionAxis )
1022  const Dtk_dir& GetZDirection()const;
1023  //! \brief Get Radius at origin
1024  //! \return GetRadius
1026 
1027  // Obsolete Function
1029 
1030  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1031  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1032  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1033  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1034  //virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1035  virtual Dtk_Size_t GetSize() const;
1036  virtual Dtk_ErrorStatus _Store(void*);
1041 
1042  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1043  virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1044 };
1045 
1046 //! \ingroup geom
1047 //! \class Dtk_StandardRevolutionSurface
1048 //! \brief This is the Revolution Surface Class.
1049 //! \brief U parametrisation : revolved curve parametrisation
1050 //! \brief V parametrisation : [0.0 - 2PI] 0.0 is given by inVDirection
1051 //! \image html geom_strevolution.png
1052 //! \SmartPtr{Dtk_StandardRevolutionSurfacePtr}
1053 //!
1055 {
1056 protected:
1057  struct Dtk_Handle; // Not defined here
1058  std::unique_ptr<Dtk_Handle> _Private; // Handle
1063  Dtk_StandardRevolutionSurface(const Dtk_CurvePtr& inRevolvedCurve,const Dtk_pnt& inAxisposition,const Dtk_dir& inRevolutionAxis,const Dtk_dir& inVDirection,const Dtk_dir&inYDir);
1064  inline virtual Dtk_Object* Clone() { return new Dtk_StandardRevolutionSurface(*this); }
1066 private:
1068 public:
1069 
1070  //downcasting
1071  int DtkDynamicType(const int& inId);
1073 
1074  //constructors
1075  //! \brief Create Dtk_StandardRevolutionSurface
1076  //! \param [in] inRevolvedCurve : Curve to be revolved
1077  //! \param [in] inAxisposition : Revolution Axis Position
1078  //! \param [in] inRevolutionAxis : Revolution Axis or Zdir
1079  //! \param [in] inVDirection : inVDirection (origin of Vparametrisation) or Xdir
1080  //! \param [in] inYDir : Optional Ydir
1081  //! \return Dtk_StandardRevolutionSurfacePtr created surface
1082  static Dtk_StandardRevolutionSurfacePtr Create(const Dtk_CurvePtr& inRevolvedCurve,const Dtk_pnt& inAxisposition,const Dtk_dir& inRevolutionAxis,const Dtk_dir& inVDirection,const Dtk_dir&inYDir= Dtk_dir());
1083  //! \CreateCopy{in}
1085 
1086  //methods
1087  //! \brief GetRevolvedCurve
1088  //! \return Curve to be revolved
1090  //! \brief GetRevolutionAxis
1091  //! \return revolution Axis (same as GetZDirection )
1092  const Dtk_dir& GetRevolutionAxis() const;
1093  //! \brief Get origin
1094  //! \return Center point of revolution
1095  const Dtk_pnt& GetAxisPosition() const;
1096  //! \brief Give V origin for parametrisation
1097  //! \return Dtk_dir for V start
1098  const Dtk_dir& GetXDirection()const;
1099  //! \brief Give Y Direction (Axis Placement can be indirect )
1100  //! \return Dtk_dir
1102  //! \brief GetZDirection
1103  //! \return revolution Axis (same as GetRevolutionAxis )
1104  const Dtk_dir& GetZDirection()const;
1105  //! \brief Get Radius at origin
1106  //! \return GetRadius
1108 
1109  // Obsolete Function
1111 
1112  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1113  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1114  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1115  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1116  //virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1117  virtual Dtk_Size_t GetSize() const;
1118  virtual Dtk_ErrorStatus _Store(void*);
1123 
1124  virtual Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1125  virtual Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1126 };
1127 
1128 //! \ingroup geom
1129 //! \class Dtk_LinearExtrusionSurface
1130 //! \brief This is the Linear Extrusion Surface Class.
1131 //! \brief U parametrisation : Curve to be extruded
1132 //! \brief V parametrisation : [-infini - +infini] 0 is given by Curve position and unit vector is extrusion axis
1133 //! \image html geom_extrusion.png
1134 //! \SmartPtr{Dtk_LinearExtrusionSurfacePtr}
1135 //!
1137 {
1138 protected:
1139  struct Dtk_Handle; // Not defined here
1140  std::unique_ptr<Dtk_Handle> _Private; // Handle
1145  Dtk_LinearExtrusionSurface(const Dtk_CurvePtr& inExtrudedCurve,const Dtk_dir& inExtrusionAxis);
1146  inline virtual Dtk_Object* Clone() { return new Dtk_LinearExtrusionSurface(*this); }
1147 
1149 private:
1151 public:
1152 
1153  //downcasting
1154  int DtkDynamicType(const int& inId);
1156 
1157  //constructors
1158  //! \brief Create an infinite Dtk_LinearExtrusionSurface from a curve and a extrusion vector two curves
1159  //! \param [in] inExtrudedCurve : Curve to be extruded
1160  //! \param [in] inExtrusionAxis : Extrusion Axis
1161  //! \return Dtk_LinearExtrusionSurfacePtr created surface
1162  static Dtk_LinearExtrusionSurfacePtr Create(const Dtk_CurvePtr& inExtrudedCurve,const Dtk_dir& inExtrusionAxis);
1163  //! \CreateCopy{in}
1165 
1166  //methods
1168  const Dtk_dir& GetExtrusionAxis() const;
1169 
1170  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1171  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1172  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1173  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1174  //virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1175  virtual Dtk_Size_t GetSize() const;
1176  virtual Dtk_ErrorStatus _Store(void*);
1180  virtual Dtk_bool IsUPeriodic() const;
1181  virtual Dtk_bool IsVPeriodic() const;
1182 
1183  Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1184 };
1185 
1186 //! \ingroup geom
1187 //! \class Dtk_RuledSurface
1188 //! \brief This is the Ruled Surface Class.
1189 //! \brief U Parametrisation is given by curve parametrisation
1190 //! \brief V Parametrisation [0.0 - 1.0 ] 0 is first curve and 1 is second curve
1191 //! \SmartPtr{Dtk_RuledSurfacePtr}
1193 {
1194 protected:
1195  struct Dtk_Handle; // Not defined here
1196  std::unique_ptr<Dtk_Handle> _Private; // Handle
1201  Dtk_RuledSurface(const Dtk_CurvePtr& inFirstCurve,const Dtk_CurvePtr& inSecondCurve);
1202  inline virtual Dtk_Object* Clone() { return new Dtk_RuledSurface(*this); }
1203 
1205 private:
1206  friend class Dtk_SmartPtr<Dtk_RuledSurface>;
1207 public:
1208 
1209  //downcasting
1210  int DtkDynamicType(const int& inId);
1212 
1213  //constructors
1214  //! \brief Create Dtk_RuledSurface between two curves
1215  //! \param [in] inFirstCurve : First Curve
1216  //! \param [in] inSecondCurve : Second Curve
1217  //! \return Dtk_RuledSurfacePtr created surface
1218  static Dtk_RuledSurfacePtr Create(const Dtk_CurvePtr& inFirstCurve,const Dtk_CurvePtr& inSecondCurve);
1219  //! \CreateCopy{in}
1221 
1222  //methods
1225 
1226  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1227  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1228  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1229  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1230  virtual Dtk_Size_t GetSize() const;
1231  virtual Dtk_ErrorStatus _Store(void*);
1234 
1235  Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1236  Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1237 };
1238 
1239 //! \ingroup geom
1240 //! \class Dtk_CylindricalSurface
1241 //! \brief This is the Cylindrical Surface Class.
1242 //! \brief U parametrisation : [0.0 - 2PI] 0.0 is given by inUDirection or inXdir or inOriginDirection
1243 //! \brief V parametrisation : [-infini - +infini] as revolved curve is a line
1244 //! \image html geom_cylindrical.png
1245 //! \SmartPtr{Dtk_CylindricalSurfacePtr}
1246 //!
1248 {
1249 protected:
1250  struct Dtk_Handle; // Not defined here
1251  std::unique_ptr<Dtk_Handle> _Private; // Handle
1256  Dtk_CylindricalSurface(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inUDirection, const Dtk_dir& inYDirection, const Dtk_Double64& inRadius);
1257  inline virtual Dtk_Object* Clone() { return new Dtk_CylindricalSurface(*this); }
1259 private:
1260  friend class Dtk_SmartPtr<Dtk_CylindricalSurface>;
1261 public:
1262 
1263  //downcasting
1264  int DtkDynamicType(const int& inId);
1266 
1267  //constructors
1268  //! \brief Create an infinite cylinder
1269  //! \param [in] inOrigin : Cylinder origin
1270  //! \param [in] inNormal : Cylinder Axis or Zdir
1271  //! \param [in] inUDirection : UDirection ( origin of Uparametrisation) or Xdir
1272  //! \param [in] inRadius : Cylinder Radius
1273  //! \param [in] inYDir : Optional Ydir
1274  //! \return Dtk_CylindricalSurfacePtr created surface
1275  static Dtk_CylindricalSurfacePtr Create(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inUDirection,const Dtk_Double64& inRadius, const Dtk_dir& inYDirection=Dtk_dir());
1276  //! \CreateCopy{in}
1278 
1279  //methods
1281  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1283  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1284  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1285  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1286  virtual Dtk_Size_t GetSize() const;
1287  virtual Dtk_ErrorStatus _Store(void*);
1290 
1291  Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1292  Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1293 };
1294 
1295 
1296 //! \ingroup geom
1297 //! \class Dtk_ConicalSurface
1298 //! \brief This is the Conical Surface Class.
1299 //! \brief U parametrisation : [0.0 - 2PI] 0.0 is given by inUDirection or inXdir or inOriginDirection
1300 //! \brief V parametrisation : [-infini - +infini] as revolved curve is a line
1301 //! \image html geom_conical.png
1302 //! \SmartPtr{Dtk_ConicalSurfacePtr}
1303 //!
1305 {
1306 protected:
1307  struct Dtk_Handle; // Not defined here
1308  std::unique_ptr<Dtk_Handle> _Private; // Handle
1313  Dtk_ConicalSurface(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inYDirection, const Dtk_dir& inUDirection,const Dtk_Double64& inRadius,const Dtk_Double64& inAngle);
1314  inline virtual Dtk_Object* Clone() { return new Dtk_ConicalSurface(*this); }
1315 
1317 private:
1318  friend class Dtk_SmartPtr<Dtk_ConicalSurface>;
1319 public:
1320 
1321  //downcasting
1322  int DtkDynamicType(const int& inId);
1324 
1325  //constructors
1326  //! \brief Create an infinite Cone
1327  //! \param [in] inOrigin : Cone origin
1328  //! \param [in] inNormal : Cone Axis or Zdir
1329  //! \param [in] inUDirection : UDirection ( origin of Uparametrisation) or Xdir
1330  //! \param [in] inFirstRadius : Cone Radius at origin
1331  //! \param [in] inAngle : semi_angle with Axis
1332  //! \param [in] inYDir : Optional Ydir
1333  //! \return Dtk_ConicalSurfacePtr created surface
1334  static Dtk_ConicalSurfacePtr Create(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inUDirection,const Dtk_Double64& inFirstRadius,const Dtk_Double64& inAngle, const Dtk_dir& inYDir=Dtk_dir());
1335  //! \CreateCopy{in}
1337 
1338  //methods
1341 
1342 
1343  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1344  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1345  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1346  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1347  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1348  virtual Dtk_Size_t GetSize() const;
1349  virtual Dtk_ErrorStatus _Store(void*);
1352 };
1353 //! \ingroup geom
1354 //! \class Dtk_ToroidalSurface
1355 //! \brief This is the Toroidal Surface Class.
1356 //! \brief U parametrisation : [0.0 - 2PI] 0.0 is given by inUDirection or inXdir or inOriginDirection
1357 //! \brief V parametrisation : [0.0 - 2PI] as revolved curve is a circle
1358 //! \image html geom_toroidal.png
1359 //! \SmartPtr{Dtk_ToroidalSurfacePtr}
1360 //!
1362 {
1363 protected:
1364  struct Dtk_Handle; // Not defined here
1365  std::unique_ptr<Dtk_Handle> _Private; // Handle
1370  Dtk_ToroidalSurface(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal,const Dtk_dir& inYDir, const Dtk_dir& inUDirection,const Dtk_Double64& inMajorRadius,const Dtk_Double64& inMinorRadius);
1371  inline virtual Dtk_Object* Clone() { return new Dtk_ToroidalSurface(*this); }
1372 
1374 private:
1375  friend class Dtk_SmartPtr<Dtk_ToroidalSurface>;
1376 public:
1377 
1378  //downcasting
1379  int DtkDynamicType(const int& inId);
1381 
1382  //constructors
1383  //! \brief Create Dtk_ToroidalSurface
1384  //! \param [in] inOrigin : Toroidal origin
1385  //! \param [in] inNormal : Toroidal Axis or Zdir
1386  //! \param [in] inUDirection : UDirection ( origin of Uparametrisation) or Xdir
1387  //! \param [in] inMajorRadius : Toroidal Major Radius
1388  //! \param [in] inMinorRadius : Toroidal Minor Radius
1389  //! \param [in] inYDir : Optional Ydir
1390  //! \return Dtk_ToroidalSurfacePtr created surface
1391  static Dtk_ToroidalSurfacePtr Create(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inUDirection,const Dtk_Double64& inMajorRadius,const Dtk_Double64& inMinorRadius, const Dtk_dir& inYDir=Dtk_dir());
1392  //! \CreateCopy{in}
1394 
1395  //methods
1398 
1399  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1400  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1401  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1402  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1403  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1404  virtual Dtk_Size_t GetSize() const;
1405  virtual Dtk_ErrorStatus _Store(void*);
1408  virtual Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1409  Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1410  virtual Dtk_bool IsUPeriodic() const;
1411  virtual Dtk_bool IsVPeriodic() const;
1412 };
1413 
1414 //! \ingroup geom
1415 //! \class Dtk_SphericalSurface
1416 //! \brief This is the Spherical Surface Class.
1417 //! \brief U parametrisation : [0.0 - 2PI] 0.0 is given by inUDirection or inXdir or inOriginDirection
1418 //! \brief V parametrisation : [-Pi/2 - +Pi/2] as revolved curve is a trimmed circle
1419 //! \image html geom_spherical.png
1420 //! \SmartPtr{Dtk_SphericalSurfacePtr}
1421 //!
1423 {
1424 protected:
1425  struct Dtk_Handle; // Not defined here
1426  std::unique_ptr<Dtk_Handle> _Private; // Handle
1431  Dtk_SphericalSurface(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inYDir, const Dtk_dir& inUDirection,const Dtk_Double64& inRadius);
1432  inline virtual Dtk_Object* Clone() { return new Dtk_SphericalSurface(*this); }
1433 
1435 private:
1436  friend class Dtk_SmartPtr<Dtk_SphericalSurface>;
1437 public:
1438 
1439  //downcasting
1440  int DtkDynamicType(const int& inId);
1442 
1443  //constructors
1444  //! \brief Create Dtk_SphericalSurface
1445  //! \param [in] inOrigin : Spherical origin
1446  //! \param [in] inNormal : Spherical Axis or Zdir
1447  //! \param [in] inUDirection : UDirection ( origin of Uparametrisation) or Xdir
1448  //! \param [in] inRadius : Spherical Radius
1449  //! \param [in] inYDir : Optional Ydir
1450  //! \return Dtk_SphericalSurfacePtr created surface
1451  static Dtk_SphericalSurfacePtr Create(const Dtk_pnt& inOrigin,const Dtk_dir& inNormal, const Dtk_dir& inUDirection,const Dtk_Double64& inRadius, const Dtk_dir& inYDir=Dtk_dir());
1452  //! \CreateCopy{in}
1454 
1455  //methods
1457 
1458  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1459  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1460  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1461  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1462  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1463  virtual Dtk_Size_t GetSize() const ;
1464  virtual Dtk_ErrorStatus _Store(void*);
1467 
1468  Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1469  Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1470  //Dtk_ErrorStatus SetDomain(Dtk_Double64 inDomain[]);
1471  //! \brief Return DTK_TRUE If Periodic following U parameter
1472  virtual Dtk_bool IsUPeriodic() const;
1473  //! \brief Return DTK_TRUE If Periodic following V parameter
1474  virtual Dtk_bool IsVPeriodic() const;
1475 };
1476 
1477 //! \ingroup geom
1478 //! \class Dtk_OffsetSurface
1479 //! \brief This is the Offset Surface Class.
1480 //! \brief U parametrisation : like basis surface
1481 //! \brief V parametrisation : like basis surface
1482 //! \image html geom_offset.png
1483 //! \SmartPtr{Dtk_OffsetSurfacePtr}
1484 //!
1486 {
1487 protected:
1488  struct Dtk_Handle; // Not defined here
1489  std::unique_ptr<Dtk_Handle> _Private; // Handle
1494  Dtk_OffsetSurface(const Dtk_SurfacePtr &inSurf, const Dtk_Double64& inOffset);
1495  inline virtual Dtk_Object* Clone() { return new Dtk_OffsetSurface(*this); }
1497 private:
1498  friend class Dtk_SmartPtr<Dtk_OffsetSurface>;
1499 public:
1500 
1501  //downcasting
1502  int DtkDynamicType(const int& inId);
1504 
1505  //constructors
1506  //! \brief Create an offset surface following surface normal
1507  //! \param [in] inSurf : Surface to be offset
1508  //! \param [in] inOffset : Size of offset
1509  //! \return Dtk_OffsetSurfacePtr created surface
1510  static Dtk_OffsetSurfacePtr Create(const Dtk_SurfacePtr &inSurf, const Dtk_Double64& inOffset);
1511  //! \CreateCopy{in}
1513 
1514  //methods
1517 
1518  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1519  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1520  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1521  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1522  virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const;
1523  virtual Dtk_Size_t GetSize() const;
1524  virtual Dtk_ErrorStatus _Store(void*);
1527  virtual void PrepareTransfo ();
1528 
1529  //! \brief Compute the result Surface with the offset applied. For some surfaces, their type can be conserved, otherwise it returns a NurbsSurface.
1531 
1532  virtual Dtk_ErrorStatus _ComputeAnyDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1533  virtual Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,int exttype) const;
1534  Dtk_ErrorStatus _ComputeMultipleDerivative_withbasis(const Dtk_Double64 &inUvalue, const Dtk_Double64 &inVvalue, int inUmaxdiff,int inVmaxdiff,int inUVdiffsummax,Dtk_dir* outdirs,Dtk_dir* outdirsbasis,int exttype) const;
1535 };
1536 
1537 //! \SmartPtr{Dtk_FilletSurfacePtr}
1539 {
1540 protected:
1541  struct Dtk_Handle; // Not defined here
1542  std::unique_ptr<Dtk_Handle> _Private; // Handle
1547  Dtk_FilletSurface(const Dtk_CurvePtr &inSpine, const Dtk_Double64& inAngle1, const Dtk_Double64& inAngle2,const Dtk_Double64& inConstantRadius,const Dtk_tab<Dtk_CurvePtr> &inAdjacentCurve,
1548  const Dtk_tab<Dtk_SurfacePtr> &inAdjacentSurface, const Dtk_tab<Dtk_Double64 >& inSpineParam,
1549  const Dtk_tab<Dtk_Double64 > &inKnots,const Dtk_Double64& inRadius1,const Dtk_Double64& inRadius2,const Dtk_NurbsSurfacePtr &inCorrespondingNurbs = NULL);
1550  inline virtual Dtk_Object* Clone() { return new Dtk_FilletSurface(*this); }
1551 
1553 private:
1554  friend class Dtk_SmartPtr<Dtk_FilletSurface>;
1555 public:
1556 
1557  //downcasting
1558  int DtkDynamicType(const int& inId);
1560 
1561  //constructors
1562  //! \brief Calls full featured constructor to allocate a new object.
1563  static Dtk_FilletSurfacePtr Create(const Dtk_CurvePtr &inSpine, const Dtk_Double64& inAngle1, const Dtk_Double64& inAngle2, const Dtk_tab<Dtk_CurvePtr> &inAdjacentCurve,
1564  const Dtk_tab<Dtk_SurfacePtr> &inAdjacentSurface,
1565  const Dtk_tab<Dtk_Double64> &inSpineParam = Dtk_tab<Dtk_Double64>(), const Dtk_tab<Dtk_Double64> &inKnots = Dtk_tab<Dtk_Double64>(),
1566  const Dtk_Double64& inConstantRadius=-1.0,const Dtk_NurbsSurfacePtr &inCorrespondingNurbs = NULL);
1567  //! \CreateCopy{in}
1569 
1570  //methods
1579 
1582 
1583  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1584  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1585  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1586  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1587  virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff,int inVdiff,Dtk_dir &outdir,int exttype) const;
1588  virtual Dtk_ErrorStatus _ComputeMultipleDerivative( Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir* outdirs, int extendtype ) const;
1589  virtual Dtk_Size_t GetSize() const;
1590  virtual Dtk_ErrorStatus _Store(void*);
1593 };
1594 
1595 //! \ingroup geom
1596 //! \class Dtk_OffsetSurface
1597 //! \brief This is the Offset Surface Class.
1598 //! \brief U parametrisation : like basis surface
1599 //! \brief V parametrisation : like basis surface
1600 //! \SmartPtr{Dtk_OffsetSurfacePtr}
1601 //!
1603 {
1604 protected:
1605  struct Dtk_Handle; // Not defined here
1606  std::unique_ptr<Dtk_Handle> _Private; // Handle
1611  Dtk_TransformedSurface(const Dtk_SurfacePtr &inSurf, const Dtk_transfo& inTransformation);
1612  inline virtual Dtk_Object* Clone() { return new Dtk_TransformedSurface(*this); }
1614 private:
1615  friend class Dtk_SmartPtr<Dtk_TransformedSurface>;
1616 public:
1617 
1618  //downcasting
1619  int DtkDynamicType(const int& inId);
1621 
1622  //constructors
1623  //! \brief Create an transformed surface
1624  //! \param [in] inSurf : Surface to be transformed
1625  //! \param [in] inTransformation : transformation matrix
1626  //! \return Dtk_TransformedSurfacePtr created surface
1627  static Dtk_TransformedSurfacePtr Create(const Dtk_SurfacePtr &inSurf, const Dtk_transfo& inTransformation);
1628  //! \CreateCopy{in}
1630 
1631  //methods
1634 
1635  //! \brief Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outDomain[3]
1636  virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const;
1637  virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const;
1638  virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const;
1639  virtual Dtk_Size_t GetSize() const;
1640  virtual Dtk_ErrorStatus _Store(void*);
1643  Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int extendtype) const;
1644  Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir* outdirs, int exttype) const;
1645 };
1646 
1647 //! \ingroup geom
1648 //! \class Dtk_MeshSurface
1649 //! \brief This is the Mesh Surface Class.
1650 //! \brief A Mesh Surface has no parametrisation, nor nurbs conversion feature.
1651 //! Use GetMesh to retrieve geometry.
1652 //! \SmartPtr{Dtk_MeshSurfacePtr}
1654 {
1655 protected:
1656  struct Dtk_Handle; // Not defined here
1657  std::unique_ptr<Dtk_Handle> _Private; // Handle
1658 
1662  virtual ~Dtk_MeshSurface();
1663  inline virtual Dtk_Object* Clone() {return new Dtk_MeshSurface( *this );}
1664  Dtk_MeshSurface( const std::vector<Dtk_pnt>& inP, const std::vector<Dtk_UInt32>& index );
1665  Dtk_MeshSurface( const std::vector<Dtk_pnt>& inP, const std::vector<Dtk_UInt32>& index, const std::vector<Dtk_dir>& inD, const std::vector<Dtk_UInt32>& aindex );
1666 private:
1667  friend class Dtk_SmartPtr<Dtk_MeshSurface>;
1668 
1669 
1670 public:
1671  int DtkDynamicType( const int& inId );
1675  //! \brief No parametrisation
1676  //! \return dtkErrorCannotCompute
1677  virtual Dtk_ErrorStatus GetDomain( Dtk_Double64 outDomain[] ) const;
1678  //! \brief No corresponding nurbs nurface
1679  //! \return NULL
1680  virtual Dtk_NurbsSurfacePtr ToNurbs( const Dtk_Double64 *inTrimDomain = NULL ) const;
1681  //! \brief No parametrisation
1682  //! \return dtkErrorCannotCompute
1683  virtual Dtk_ErrorStatus ComputeUVPoint( const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt ) const;
1684 
1685  Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int extendtype) const;
1686  //! \brief Add MeshSurface to Mesh
1687  //! \param [inout] outMeshPtr : Mesh corresponding to MeshSurface
1688  //! \return dtkNoError if success
1690 
1691  //! \brief Get the Dtk_Mesh corresponding to MeshSurface
1692  //! \return Mesh corresponding to MeshSurface
1694 
1695  //Internal Use
1696  static Dtk_MeshSurfacePtr Create( const std::vector<Dtk_pnt>& inP, const std::vector<Dtk_UInt32>& index );
1697  static Dtk_MeshSurfacePtr Create( const std::vector<Dtk_pnt>& inP, const std::vector<Dtk_UInt32>& index, const std::vector<Dtk_dir>& inD, const std::vector<Dtk_UInt32>& aindex );
1698  const std::vector<Dtk_pnt>& GetVertexArray() const;
1699  const std::vector<Dtk_dir>& GetNormArray() const;
1700  const std::vector<Dtk_UInt32>& GetVertexArrayIndex() const;
1701  const std::vector<Dtk_UInt32>& GetAttrArrayIndex() const;
1702 
1703 };
1704 
1705 
1706 
1707 /*************************************** END SURFACES **********************************/
1708 
1709 
1710 #endif
Dtk_PlaneSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:917
Dtk_CylindricalSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Polyline::~Dtk_Polyline
virtual ~Dtk_Polyline()
Default destructor.
Dtk_Curve::Reverse
virtual void Reverse()=0
Reverse Curve.
Dtk_ToroidalSurface::get_type_detk
type_detk get_type_detk() const
Dtk_TransformedSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1605
Dtk_NurbsCurve::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_StandardRevolutionSurface::Create
static Dtk_StandardRevolutionSurfacePtr Create(const Dtk_StandardRevolutionSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Parabola::GetFocalDistance
Dtk_Double64 GetFocalDistance() const
Dtk_Ellipse::Create
static Dtk_EllipsePtr Create(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inRadius)
Calls full featured constructor to allocate a new object.
Dtk_Polyline::Point
Dtk_pnt & Point(const Dtk_Size_t &inIndex)
Dtk_Surface::IsVPeriodic
virtual Dtk_bool IsVPeriodic() const
Return DTK_TRUE If Periodic following V parameter.
Dtk_Line::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_Conic::GetZDirection
const Dtk_dir & GetZDirection() const
Dtk_StandardRevolutionSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_PlaneSurface::GetNormal
Dtk_dir GetNormal() const
Dtk_Line::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:412
Dtk_NurbsSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Line::ComputeBoundingBox
virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inMorePrecise=0)
Compute Bounding Box.
Dtk_Conic::GetNormalDirection
const Dtk_dir & GetNormalDirection() const
Get Normal vector of Conic (inNormal on schema)
Dtk_NurbsSurface::SetIsVPeriodic
void SetIsVPeriodic(Dtk_bool inPeriodicFlag)
Dtk_FilletSurface::GetNumAdjacentCurves
Dtk_Size_t GetNumAdjacentCurves() const
Dtk_RevolutionSurface::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:974
Dtk_NurbsSurface::~Dtk_NurbsSurface
virtual ~Dtk_NurbsSurface()
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
Dtk_CylindricalSurface::DtkDynamicCast
static Dtk_CylindricalSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_NurbsCurve::IsPeriodic
virtual Dtk_bool IsPeriodic() const
return DTK_TRUE if nurbs is periodic
Dtk_OffsetSurface::Dtk_OffsetSurface
Dtk_OffsetSurface(Dtk_OffsetSurface &&) DTK_NOEXCEPT
Dtk_Line::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_Line::Dtk_Line
Dtk_Line(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2)
Dtk_RuledSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_OffsetSurface::~Dtk_OffsetSurface
virtual ~Dtk_OffsetSurface()
Dtk_Curve::Dtk_Curve
Dtk_Curve(const Dtk_Curve &s)
Dtk_StandardRevolutionSurface::GetYDirection
Dtk_dir GetYDirection() const
Give Y Direction (Axis Placement can be indirect )
Dtk_ToroidalSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Curve::ComputeUPointDir
virtual Dtk_ErrorStatus ComputeUPointDir(const Dtk_Double64 &inU, Dtk_pnt &outPoint, Dtk_dir &outDir) const
Compute point and dir on U parameter.
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve(Dtk_NurbsCurve &&in) DTK_NOEXCEPT
Dtk_StandardRevolutionSurface
This is the Revolution Surface Class.
Definition: util_geom_dtk.hpp:1055
Dtk_SphericalSurface
This is the Spherical Surface Class.
Definition: util_geom_dtk.hpp:1423
DTK_TYPE_MESH_SURFACE
@ DTK_TYPE_MESH_SURFACE
Definition: define.h:602
Dtk_NurbsCurve::Reparam
Dtk_ErrorStatus Reparam(const Dtk_Double64 &inUmin, const Dtk_Double64 &inUmax)
Set Curve parametrisation domain.
Dtk_NurbsSurface::get_type_detk
type_detk get_type_detk() const
Dtk_Conic::~Dtk_Conic
virtual ~Dtk_Conic()
Dtk_CylindricalSurface::get_type_detk
type_detk get_type_detk() const
Dtk_MeshSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
No parametrisation.
Dtk_MeshSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
No parametrisation.
Dtk_ConicalSurface
This is the Conical Surface Class.
Definition: util_geom_dtk.hpp:1305
Dtk_Curve::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:90
Dtk_Parabola::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_NurbsCurve::_KnotInsertion
Dtk_ErrorStatus _KnotInsertion(const Dtk_Double64 &inUparameter, const Dtk_Size_t &inOccurence, Dtk_Double64 inTolerance=DTK_TOLERANCE)
Dtk_NurbsSurface::GetTypeBeforeConversion
type_detk GetTypeBeforeConversion() const
Dtk_ToroidalSurface::DtkDynamicCast
static Dtk_ToroidalSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_RuledSurface::Create
static Dtk_RuledSurfacePtr Create(const Dtk_CurvePtr &inFirstCurve, const Dtk_CurvePtr &inSecondCurve)
Create Dtk_RuledSurface between two curves.
Dtk_Polyline::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_NurbsCurve::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_RevolutionSurface::GetAxisPosition
const Dtk_pnt & GetAxisPosition() const
Get origin
Dtk_NurbsCurve::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:184
Dtk_Conic::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Conic::Transform
virtual Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform Conic
Dtk_RevolutionSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:972
Dtk_NurbsSurface::SetIsUPeriodic
void SetIsUPeriodic(Dtk_bool inPeriodicFlag)
Dtk_NurbsSurface::GetNumPointsV
Dtk_Size_t GetNumPointsV() const
Dtk_Hyperbola::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_Ellipse::ComputeBoundingBox
virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inMorePrecise=0)
Compute Bounding Box.
Dtk_NurbsSurface::GetWeight
Dtk_Double64 GetWeight(const Dtk_Size_t &inUIndex, const Dtk_Size_t &inVIndex) const
Dtk_OffsetSurface::Dtk_OffsetSurface
Dtk_OffsetSurface()
Dtk_Polyline::ToNurbs
virtual Dtk_NurbsCurvePtr ToNurbs() const
Convert Curve to nurbs.
Dtk_Ellipse::get_type_detk
type_detk get_type_detk() const
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface(const Dtk_UInt32 &inUDegree, const Dtk_UInt32 &inVDegree, const Dtk_tab< Dtk_Double64 > &inUKnots, const Dtk_tab< Dtk_Double64 > &inVKnots, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >(), type_detk inSurfaceType=DTK_TYPE_NURBS_SURFACE)
Dtk_ToroidalSurface::Create
static Dtk_ToroidalSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_Double64 &inMajorRadius, const Dtk_Double64 &inMinorRadius, const Dtk_dir &inYDir=Dtk_dir())
Create Dtk_ToroidalSurface.
Dtk_Conic::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:481
Dtk_StandardRevolutionSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_PlaneSurface::Create
static Dtk_PlaneSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_dir &inVDirection=Dtk_dir())
Create an infinite plane surface.
DTK_TOLERANCE
#define DTK_TOLERANCE
Definition: str_def.h:7
Dtk_PlaneSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_OffsetSurface::Dtk_OffsetSurface
Dtk_OffsetSurface(const Dtk_OffsetSurface &)
Dtk_MeshSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int extendtype) const
Dtk_SphericalSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_MeshSurface::Create
static Dtk_MeshSurfacePtr Create(const std::vector< Dtk_pnt > &inP, const std::vector< Dtk_UInt32 > &index)
Dtk_Hyperbola::GetSemiImageAxis
Dtk_Double64 GetSemiImageAxis() const
Dtk_Line::Create
static Dtk_LinePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inDirection)
Calls full featured constructor to allocate a new object.
DTK_TYPE_CONIC
@ DTK_TYPE_CONIC
Definition: define.h:48
Dtk_NurbsSurface::ForceG1Continuity
Dtk_NurbsSurfacePtr ForceG1Continuity(Dtk_Double64 tolerance_to_remove=0.0005) const
Dtk_OffsetSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1488
Dtk_Polyline::Dtk_Polyline
Dtk_Polyline(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2)
Dtk_RuledSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:1202
Dtk_RuledSurface::_ComputeMultipleDerivative
Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_CylindricalSurface::_ComputeMultipleDerivative
Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_NurbsCurve::Create
static Dtk_NurbsCurvePtr Create(const Dtk_NurbsCurvePtr &s, const Dtk_tab< Dtk_Double64 > &inKnotsValues, const Dtk_tab< Dtk_UChar8 > &inKnotsMultiplicities)
Calls full featured constructor to allocate a new object.
Dtk_NurbsSurface::Create
static Dtk_NurbsSurfacePtr Create(const Dtk_UInt32 &inUDegree, const Dtk_UInt32 &inVDegree, const Dtk_tab< Dtk_Double64 > &inUKnots, const Dtk_tab< Dtk_Double64 > &inVKnots, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >(), type_detk inSurfaceType=DTK_TYPE_NURBS_SURFACE)
Calls full featured constructor to allocate a new object.
Dtk_StandardRevolutionSurface::SetTrimUVBox
Dtk_ErrorStatus SetTrimUVBox(Dtk_Double64 inDomain[])
Set Surface Trim Box : Umin = inTrimValues[0] Umax = inTrimValues[1] Vmin = inTrimValues[2] Vmax = in...
Dtk_Curve::ToNurbs
virtual Dtk_NurbsCurvePtr ToNurbs() const =0
Convert Curve to nurbs.
Dtk_Hyperbola::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:655
Dtk_NurbsSurface::GetUKnotMultiplicity
Dtk_UInt32 GetUKnotMultiplicity(const Dtk_Size_t &inIndex) const
Dtk_FilletSurface::Dtk_FilletSurface
Dtk_FilletSurface()
Dtk_Curve::SetTrimmingParameters
virtual Dtk_ErrorStatus SetTrimmingParameters(const Dtk_Double64 &inUmin, const Dtk_Double64 &inUmax)
Set Trim parameter for curve.
Dtk_SphericalSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_PlaneSurface::GetVDirection
Dtk_dir GetVDirection() const
Dtk_Parabola::Dtk_Parabola
Dtk_Parabola()
Dtk_StandardRevolutionSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1057
Dtk_Hyperbola::Dtk_Hyperbola
Dtk_Hyperbola(const Dtk_Hyperbola &in)
Dtk_SphericalSurface::Create
static Dtk_SphericalSurfacePtr Create(const Dtk_SphericalSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Parabola::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:602
Dtk_Curve::SetTrimPoints
void SetTrimPoints(const Dtk_pnt &inStartPoint, const Dtk_pnt &inEndPoint)
Set Trim points for curve.
Dtk_Line::Normalize
virtual void Normalize()
Normalize Curve.
Dtk_FilletSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_NurbsSurface::ComputeVDerivative
virtual Dtk_ErrorStatus ComputeVDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outdir) const
Dtk_PlaneSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_LinearExtrusionSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_LinearExtrusionSurface::DtkDynamicCast
static Dtk_LinearExtrusionSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_RevolutionSurface::GetXDirection
const Dtk_dir & GetXDirection() const
Give U origin for parametrisation.
Dtk_RuledSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Curve::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const =0
Convert Curve to polyline.
Dtk_TransformedSurface::Dtk_TransformedSurface
Dtk_TransformedSurface(Dtk_TransformedSurface &&) DTK_NOEXCEPT
Dtk_SphericalSurface::IsUPeriodic
virtual Dtk_bool IsUPeriodic() const
Return DTK_TRUE If Periodic following U parameter.
Dtk_FilletSurface::~Dtk_FilletSurface
virtual ~Dtk_FilletSurface()
Dtk_NurbsCurve::Create
static Dtk_NurbsCurvePtr Create(const Dtk_UInt32 &inDegree, const Dtk_tab< Dtk_Double64 > &inKnotsValues, const Dtk_tab< Dtk_UChar8 > &inKnotsMultiplicities, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >())
Calls full featured constructor to allocate a new object.
Dtk_Curve::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const =0
Compute point on U parameter.
Dtk_RevolutionSurface::Dtk_RevolutionSurface
Dtk_RevolutionSurface()
Dtk_Line::DtkDynamicCast
static Dtk_Line * DtkDynamicCast(Dtk_Object *inObjectToCast)
Dtk_Ellipse::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Polyline::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_Surface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_NurbsSurface::GetUDegree
Dtk_UInt32 GetUDegree() const
Dtk_NurbsCurve::Split
Dtk_ErrorStatus Split(Dtk_Double64 inTrimDom[2], Dtk_Double64 inTolerance=DTK_TOLERANCE)
Dtk_TransformedSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Curve::DeleteCorrespondingNurbs
void DeleteCorrespondingNurbs()
Dtk_LinearExtrusionSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1139
Dtk_PlaneSurface::Dtk_PlaneSurface
Dtk_PlaneSurface(Dtk_PlaneSurface &&s) DTK_NOEXCEPT
Dtk_Ellipse::Dtk_Ellipse
Dtk_Ellipse(const Dtk_Ellipse &in)
Dtk_Line::Dtk_Line
Dtk_Line()
Dtk_Point::~Dtk_Point
virtual ~Dtk_Point()
Dtk_CylindricalSurface::Dtk_CylindricalSurface
Dtk_CylindricalSurface(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_dir &inYDirection, const Dtk_Double64 &inRadius)
DTK_TYPE_POLYLINE
@ DTK_TYPE_POLYLINE
Definition: define.h:47
Dtk_Polyline::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_Curve::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const =0
Compute U parameter from point.
Dtk_Hyperbola::Create
static Dtk_HyperbolaPtr Create(const Dtk_Hyperbola &in)
Calls copy constructor to allocate a new object.
Dtk_MeshSurface::Dtk_MeshSurface
Dtk_MeshSurface(const Dtk_MeshSurface &)
Dtk_PlaneSurface::GetZDirection
Dtk_dir GetZDirection() const
Dtk_OffsetSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_ToroidalSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1364
DTK_TYPE_SPHERICAL_SURFACE
@ DTK_TYPE_SPHERICAL_SURFACE
Definition: define.h:86
Dtk_Polyline::AddPoint
void AddPoint(const Dtk_Double64 &inX, const Dtk_Double64 &inY, const Dtk_Double64 &inZ=0.0)
Dtk_RevolutionSurface::GetRadius
Dtk_Double64 GetRadius() const
Get Radius at origin.
Dtk_PlaneSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_TransformedSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Surface::Dtk_Surface
Dtk_Surface(Dtk_Surface &&s) DTK_NOEXCEPT
Dtk_NurbsSurface::Create
static Dtk_NurbsSurfacePtr Create(const Dtk_UInt32 &inUDegree, const Dtk_UInt32 &inVDegree, const Dtk_tab< Dtk_Double64 > &inUKnotsValues, const Dtk_tab< Dtk_Double64 > &inVKnotsValues, const Dtk_tab< Dtk_UChar8 > &inUKnotsMultiplicities, const Dtk_tab< Dtk_UChar8 > &inVKnotsMultiplicities, const Dtk_tab< Dtk_tab< Dtk_pnt > > &inControlPoints, const Dtk_tab< Dtk_tab< Dtk_Double64 > > &inWeights=Dtk_tab< Dtk_tab< Dtk_Double64 > >(), type_detk inSurfaceType=DTK_TYPE_NURBS_SURFACE)
Calls full featured constructor to allocate a new object.
Dtk_NurbsSurface::GetUnpackedUKnot
Dtk_Double64 * GetUnpackedUKnot() const
Dtk_SphericalSurface::Create
static Dtk_SphericalSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_Double64 &inRadius, const Dtk_dir &inYDir=Dtk_dir())
Create Dtk_SphericalSurface.
Dtk_ToroidalSurface::Dtk_ToroidalSurface
Dtk_ToroidalSurface()
Dtk_NurbsCurve::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inMorePrecise=0)
Compute Bounding Box.
Dtk_StandardRevolutionSurface::Normalize
Dtk_ErrorStatus Normalize()
Dtk_PlaneSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_Curve::Dtk_Curve
Dtk_Curve()
Dtk_Line::Dtk_Line
Dtk_Line(Dtk_Line &&in) DTK_NOEXCEPT
Dtk_FilletSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_ToroidalSurface
This is the Toroidal Surface Class.
Definition: util_geom_dtk.hpp:1362
Dtk_NurbsSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Conic::ToNurbs
virtual Dtk_NurbsCurvePtr ToNurbs() const
Get Nurbs corresponding to conic (with trim)
Dtk_RevolutionSurface::~Dtk_RevolutionSurface
virtual ~Dtk_RevolutionSurface()
Dtk_NurbsSurface::IsUniform
Dtk_bool IsUniform() const
Dtk_UInt32
uint32_t Dtk_UInt32
Definition: define.h:687
Dtk_PlaneSurface::Dtk_PlaneSurface
Dtk_PlaneSurface(const Dtk_PlaneSurface &s)
Dtk_Line::~Dtk_Line
virtual ~Dtk_Line()
Destructor.
Dtk_SphericalSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Size_t
size_t Dtk_Size_t
Definition: define.h:711
Dtk_Curve::GetTrimUMax
Dtk_Double64 GetTrimUMax() const
Get end Trim parameter.
Dtk_NurbsSurface::Transform
virtual Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_StandardRevolutionSurface::DtkDynamicCast
static Dtk_StandardRevolutionSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_StandardRevolutionSurface::SetStartAngle
Dtk_ErrorStatus SetStartAngle(Dtk_Double64 inAngle)
Dtk_PlaneSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_ToroidalSurface::GetMajorRadius
Dtk_Double64 GetMajorRadius() const
Dtk_Conic::get_type_detk
type_detk get_type_detk() const
Dtk_Curve::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_PlaneSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:910
Dtk_Curve::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_Ellipse::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform
Dtk_OffsetSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Point::Dtk_Point
Dtk_Point(const Dtk_Point &s)
Dtk_Hyperbola::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_ToroidalSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Curve::ComputeBoundingBox
virtual Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inMorePrecise=0)
Compute Bounding Box.
Dtk_Polyline::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_Conic::GetCenterPoint
const Dtk_pnt & GetCenterPoint() const
Get Center of Conic (inCenter on schema)
Dtk_NurbsSurface::Point
Dtk_pnt & Point(const Dtk_Size_t &inUIndex, const Dtk_Size_t &inVIndex)
Dtk_RevolutionSurface::GetRevolvedCurve
Dtk_CurvePtr GetRevolvedCurve() const
GetRevolvedCurve.
Dtk_NurbsCurve::IsUniform
Dtk_bool IsUniform() const
return DTK_TRUE if knots are uniform
Dtk_Surface::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:720
Dtk_ToroidalSurface::_ComputeMultipleDerivative
Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Conic::Dtk_Conic
Dtk_Conic(Dtk_Conic &&in) DTK_NOEXCEPT
Dtk_LinearExtrusionSurface::Dtk_LinearExtrusionSurface
Dtk_LinearExtrusionSurface()
Dtk_Surface::IsUPeriodic
virtual Dtk_bool IsUPeriodic() const
Return DTK_TRUE If Periodic following U parameter.
Dtk_NurbsCurve::GetNumPoints
Dtk_Size_t GetNumPoints() const
return Num Control points
Dtk_Conic::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Line::ComputeUDir
virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64 &inU, Dtk_dir &outDir) const
Compute dir on U parameter.
Dtk_PlaneSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_ConicalSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_SphericalSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_OffsetSurface::Create
static Dtk_OffsetSurfacePtr Create(const Dtk_OffsetSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Curve
Dtk_Curve is a geometrical entity representing a curve. It is an abstract class that cannot be instan...
Definition: util_geom_dtk.hpp:86
Dtk_RevolutionSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_RevolutionSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_ConicalSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Line::Dtk_Line
Dtk_Line(const Dtk_Line &inLineToCopy)
Dtk_NurbsSurface::ReduceDegree
Dtk_ErrorStatus ReduceDegree(const Dtk_UInt32 &inTargetUDegree, const Dtk_UInt32 &inTargetVDegree)
Dtk_Hyperbola::Dtk_Hyperbola
Dtk_Hyperbola(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inSemiAxis, const Dtk_Double64 &inSemiImageAxis)
Dtk_Parabola::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Return First point.
Dtk_StandardRevolutionSurface::get_type_detk
type_detk get_type_detk() const
Dtk_ConicalSurface::get_type_detk
type_detk get_type_detk() const
Dtk_Point::GetCoordinates
Dtk_ErrorStatus GetCoordinates(Dtk_pnt &pnt) const
Dtk_TransformedSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_LinearExtrusionSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_TransformedSurface::Dtk_TransformedSurface
Dtk_TransformedSurface(const Dtk_TransformedSurface &)
Dtk_NurbsCurve::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outParameter) const
Compute pparameter.
Dtk_Polyline::Create
static Dtk_PolylinePtr Create(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2)
Calls full featured constructor to allocate a new object.
Dtk_LinearExtrusionSurface::get_type_detk
type_detk get_type_detk() const
Dtk_Line::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Ellipse::GetMinorRadius
Dtk_Double64 GetMinorRadius() const
Dtk_NurbsCurve::IsRationnal
Dtk_bool IsRationnal() const
return DTK_TRUE if one weight != 1
Dtk_NurbsSurface::Reparam
virtual Dtk_ErrorStatus Reparam(Dtk_Double64 inDomain[])
Dtk_RevolutionSurface::DtkDynamicCast
static Dtk_RevolutionSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_FilletSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_RevolutionSurface::GetZDirection
const Dtk_dir & GetZDirection() const
GetZDirection.
Dtk_LinearExtrusionSurface::IsUPeriodic
virtual Dtk_bool IsUPeriodic() const
Return DTK_TRUE If Periodic following U parameter.
DTK_TYPE_PARABOLA
@ DTK_TYPE_PARABOLA
Definition: define.h:52
Dtk_NurbsSurface::_KnotInsertion
Dtk_ErrorStatus _KnotInsertion(const Dtk_Double64 &inParameter, const Dtk_Size_t &inOccurence, const Dtk_bool &inUSplit, Dtk_Double64 inTolerance=DTK_TOLERANCE)
Dtk_Parabola::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:607
Dtk_Polyline::Point
const Dtk_pnt & Point(const Dtk_Size_t &inIndex) const
return the point at place inIndex
Dtk_Polyline::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Compute dir on U parameter.
Dtk_CylindricalSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
DTK_FALSE
#define DTK_FALSE
Definition: define.h:727
Dtk_NurbsSurface::DtkDynamicCast
static Dtk_NurbsSurface * DtkDynamicCast(Dtk_Object *s)
DTK_TYPE_NURBS_CURVE
@ DTK_TYPE_NURBS_CURVE
Definition: define.h:485
Dtk_Polyline::Dtk_Polyline
Dtk_Polyline(const Dtk_Polyline &inPolylineToCopy)
Dtk_Parabola::~Dtk_Parabola
virtual ~Dtk_Parabola()
Dtk_Ellipse::DtkDynamicCast
static Dtk_Ellipse * DtkDynamicCast(Dtk_Object *inObject)
Dtk_ConicalSurface::Dtk_ConicalSurface
Dtk_ConicalSurface(Dtk_ConicalSurface &&s) DTK_NOEXCEPT
Dtk_bool
char Dtk_bool
Definition: define.h:724
Dtk_NurbsCurve::GetWeight
Dtk_Double64 GetWeight(const Dtk_Size_t &inIndex) const
return weight
Dtk_RevolutionSurface::GetYDirection
Dtk_dir GetYDirection() const
Give Y Direction (Axis Placement can be indirect )
Dtk_Hyperbola::get_type_detk
type_detk get_type_detk() const
Dtk_Curve::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Hyperbola::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_RevolutionSurface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Surface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_Ellipse::Dtk_Ellipse
Dtk_Ellipse()
Dtk_StandardRevolutionSurface::Dtk_StandardRevolutionSurface
Dtk_StandardRevolutionSurface(const Dtk_StandardRevolutionSurface &)
Dtk_Curve::GetTrimEndPoint
Dtk_pnt GetTrimEndPoint() const
Return last trim point.
Dtk_NurbsCurve::Point
const Dtk_pnt & Point(const Dtk_Size_t &inIndex) const
return the point at place inIndex
Dtk_FilletSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_LinearExtrusionSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_Conic::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_Hyperbola::Dtk_Hyperbola
Dtk_Hyperbola()
Dtk_OffsetSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_PlaneSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve(const Dtk_NurbsCurve &s)
Dtk_Polyline::DtkDynamicCast
static Dtk_Polyline * DtkDynamicCast(Dtk_Object *inObjectToCast)
Dtk_RuledSurface::get_type_detk
type_detk get_type_detk() const
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve()
Dtk_Curve::GetDimension
Dtk_Size_t GetDimension() const
Return 2 or 3.
Dtk_FilletSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Hyperbola::GetDomain
Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_Surface::~Dtk_Surface
virtual ~Dtk_Surface()
Dtk_Line::_Private
std::unique_ptr< Dtk_Handle > _Private
Handle
Definition: util_geom_dtk.hpp:408
Dtk_LinearExtrusionSurface
This is the Linear Extrusion Surface Class.
Definition: util_geom_dtk.hpp:1137
Dtk_FilletSurface::Create
static Dtk_FilletSurfacePtr Create(const Dtk_CurvePtr &inSpine, const Dtk_Double64 &inAngle1, const Dtk_Double64 &inAngle2, const Dtk_tab< Dtk_CurvePtr > &inAdjacentCurve, const Dtk_tab< Dtk_SurfacePtr > &inAdjacentSurface, const Dtk_tab< Dtk_Double64 > &inSpineParam=Dtk_tab< Dtk_Double64 >(), const Dtk_tab< Dtk_Double64 > &inKnots=Dtk_tab< Dtk_Double64 >(), const Dtk_Double64 &inConstantRadius=-1.0, const Dtk_NurbsSurfacePtr &inCorrespondingNurbs=NULL)
Calls full featured constructor to allocate a new object.
Dtk_Double64
double Dtk_Double64
Definition: define.h:698
Dtk_TransformedSurface::GetSurface
Dtk_SurfacePtr GetSurface() const
Dtk_RevolutionSurface::SetAsDeprecated
SetAsDeprecated("2026.3", "Use Dtk_StandardRevolutionSurfacePtr") static Dtk_RevolutionSurfacePtr Create(const Dtk_CurvePtr &inRevolvedCurve
OBSOLETE Create Dtk_RevolutionSurface.
Dtk_PlaneSurface::GetUDirection
Dtk_dir GetUDirection() const
Dtk_Hyperbola::ToNurbs
Dtk_NurbsCurvePtr ToNurbs() const
Get Nurbs corresponding to conic (with trim)
Dtk_ToroidalSurface::GetMinorRadius
Dtk_Double64 GetMinorRadius() const
Dtk_PlaneSurface::Dtk_PlaneSurface
Dtk_PlaneSurface()
Dtk_Ellipse::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_ConicalSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_RevolutionSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Polyline::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:342
Dtk_NurbsSurface::IsBezier
Dtk_bool IsBezier() const
Dtk_NurbsCurve::SetIsPeriodic
void SetIsPeriodic(const Dtk_bool &inIsPeriodic)
sets is_closed field to DTK_TRUE or DTK_FALSE
Dtk_FilletSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_NurbsCurve::_ComputeWeight
Dtk_Double64 _ComputeWeight(Dtk_Double64 inUvalue, int exttype) const
Dtk_Surface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int extendtype) const
Dtk_RuledSurface::Dtk_RuledSurface
Dtk_RuledSurface(Dtk_RuledSurface &&s) DTK_NOEXCEPT
DTK_TYPE_CURVE
@ DTK_TYPE_CURVE
Definition: define.h:56
Dtk_RevolutionSurface::SetTrimUVBox
Dtk_ErrorStatus SetTrimUVBox(Dtk_Double64 inDomain[])
Set Surface Trim Box : Umin = inTrimValues[0] Umax = inTrimValues[1] Vmin = inTrimValues[2] Vmax = in...
Dtk_ConicalSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_Conic::SetStartAngle
Dtk_ErrorStatus SetStartAngle(Dtk_Double64 inAngle)
Dtk_Ellipse::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:538
Dtk_Point::Dtk_Point
Dtk_Point()
Dtk_Polyline::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:336
Dtk_NurbsSurface::GetNumPointsU
Dtk_Size_t GetNumPointsU() const
Dtk_RuledSurface::DtkDynamicCast
static Dtk_RuledSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_Surface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const =0
Compute 3D point.
Dtk_Parabola::Dtk_Parabola
Dtk_Parabola(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inMajorRadius)
Dtk_NurbsCurve::GetKnotMultiplicity
Dtk_UInt32 GetKnotMultiplicity(const Dtk_Size_t &inIndex) const
return knot multiplicity at inIndex place
Dtk_Parabola::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:600
DTK_TYPE_NURBS_SURFACE
@ DTK_TYPE_NURBS_SURFACE
Definition: define.h:486
Dtk_NurbsSurface::IsPlane
Dtk_bool IsPlane() const
Dtk_Parabola::Create
static Dtk_ParabolaPtr Create(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inFocal)
Calls full featured constructor to allocate a new object.
Dtk_FilletSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1541
Dtk_NurbsCurve::get_type_detk
type_detk get_type_detk() const
Return Curve type.
Dtk_ConicalSurface::Create
static Dtk_ConicalSurfacePtr Create(const Dtk_ConicalSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Ellipse::ComputeUDir
virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64 &inU, Dtk_dir &outDir) const
Compute dir on U parameter.
Dtk_Curve::Dtk_Curve
Dtk_Curve(Dtk_Curve &&in) DTK_NOEXCEPT
Dtk_FilletSurface
Definition: util_geom_dtk.hpp:1539
util_mesh_dtk.hpp
Dtk_MeshSurface::~Dtk_MeshSurface
virtual ~Dtk_MeshSurface()
Dtk_Line::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Return First point.
Dtk_NurbsCurve::_KnotRemoval
int _KnotRemoval(const Dtk_Double64 &inU, const int &inNum, const Dtk_Double64 &inTolerance)
Dtk_NurbsSurface::_KnotRemoval
int _KnotRemoval(const Dtk_Double64 &inParameter, const int &inOccurence, const Dtk_bool &inUSplit, const Dtk_Double64 &inTolerance)
DTK_TYPE_SURFACE
@ DTK_TYPE_SURFACE
Definition: define.h:105
Dtk_Ellipse::IsCircle
Dtk_bool IsCircle() const
Dtk_Surface::SetTrimUVBox
virtual Dtk_ErrorStatus SetTrimUVBox(Dtk_Double64 inTrimValues[])
Set Surface Trim Box : Umin = inTrimValues[0] Umax = inTrimValues[1] Vmin = inTrimValues[2] Vmax = in...
Dtk_SphericalSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_NurbsCurve::Reverse
virtual void Reverse()
Reverse Curve.
DTK_TYPE_STANDARD_REVOLUTION_SURFACE
@ DTK_TYPE_STANDARD_REVOLUTION_SURFACE
Definition: define.h:488
Dtk_CylindricalSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_ToroidalSurface::IsUPeriodic
virtual Dtk_bool IsUPeriodic() const
Return DTK_TRUE If Periodic following U parameter.
Dtk_Surface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const =0
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_ConicalSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_RuledSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1195
Dtk_FilletSurface::GetParam1
Dtk_Double64 GetParam1() const
Dtk_Line::GetDirection
Dtk_dir GetDirection() const
return direction of line
Dtk_ToroidalSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_RevolutionSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface(const Dtk_UInt32 &inUDegree, const Dtk_UInt32 &inVDegree, const Dtk_tab< Dtk_Double64 > &inUKnotsValues, const Dtk_tab< Dtk_Double64 > &inVKnotsValues, const Dtk_tab< Dtk_UChar8 > &inUKnotsMultiplicities, const Dtk_tab< Dtk_UChar8 > &inVKnotsMultiplicities, const Dtk_tab< Dtk_tab< Dtk_pnt > > &inControlPoints, const Dtk_tab< Dtk_tab< Dtk_Double64 > > &inWeights=Dtk_tab< Dtk_tab< Dtk_Double64 > >(), type_detk inSurfaceType=DTK_TYPE_NURBS_SURFACE)
Dtk_PlaneSurface::GetXDirection
Dtk_dir GetXDirection() const
Dtk_CylindricalSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_SphericalSurface::get_type_detk
type_detk get_type_detk() const
Dtk_Curve::Clone
virtual Dtk_Object * Clone()=0
Dtk_CylindricalSurface
This is the Cylindrical Surface Class.
Definition: util_geom_dtk.hpp:1248
Dtk_MeshSurface::GetAttrArrayIndex
const std::vector< Dtk_UInt32 > & GetAttrArrayIndex() const
Dtk_ToroidalSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_TransformedSurface::Create
static Dtk_TransformedSurfacePtr Create(const Dtk_SurfacePtr &inSurf, const Dtk_transfo &inTransformation)
Create an transformed surface.
Dtk_TransformedSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int extendtype) const
Dtk_OffsetSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Ellipse::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const
Compute U parameter from point.
Dtk_Point::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Parabola::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform
Dtk_MeshSurface::GetNormArray
const std::vector< Dtk_dir > & GetNormArray() const
Dtk_FilletSurface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int extendtype) const
Dtk_Polyline::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_Line::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:418
Dtk_TransformedSurface::~Dtk_TransformedSurface
virtual ~Dtk_TransformedSurface()
Dtk_MeshSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_Curve::DtkDynamicCast
static Dtk_Curve * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Hyperbola::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Return First point.
Dtk_Curve::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const =0
Return Last point.
Dtk_OffsetSurface
This is the Offset Surface Class.
Definition: util_geom_dtk.hpp:1486
DTK_TYPE_POINT
@ DTK_TYPE_POINT
Definition: define.h:479
Dtk_NurbsCurve::_DegreeElevation
Dtk_ErrorStatus _DegreeElevation(const Dtk_Size_t &inDegreeElevation)
Dtk_Point::GetCoordinates
Dtk_ErrorStatus GetCoordinates(Dtk_Double64 &x, Dtk_Double64 &y, Dtk_Double64 &z) const
Get Coordinates For Point.
Dtk_CylindricalSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1250
Dtk_Curve::IsLine
Dtk_bool IsLine()
return True if Curve is a line
Dtk_Polyline::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_OffsetSurface::get_type_detk
type_detk get_type_detk() const
Dtk_StandardRevolutionSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Polyline::Create
static Dtk_PolylinePtr Create(Dtk_tab< Dtk_pnt > inPoints)
Calls full featured constructor to allocate a new object.
Dtk_PlaneSurface::GetOrigin
Dtk_pnt GetOrigin() const
Dtk_Parabola::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_Hyperbola::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_Polyline::Transform
virtual Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform Polyline with inTransformation
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve(const Dtk_tab< Dtk_CurvePtr > &inCurvesToMerge, Dtk_Double64 stichtol, Dtk_bool LengthParameter)
Dtk_Parabola
Definition: util_geom_dtk.hpp:598
Dtk_Curve::Normalize
virtual void Normalize()
Normalize Curve.
Dtk_NurbsCurve::Create
static Dtk_NurbsCurvePtr Create(const Dtk_UInt32 &inDegree, const Dtk_tab< Dtk_Double64 > &inKnots, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >())
Calls full featured constructor to allocate a new object.
Dtk_Line::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_FilletSurface::GetKnots
Dtk_tab< Dtk_Double64 > GetKnots() const
Dtk_RevolutionSurface::Dtk_RevolutionSurface
Dtk_RevolutionSurface(const Dtk_RevolutionSurface &)
Dtk_FilletSurface::GetAdjacentSurface
Dtk_SurfacePtr GetAdjacentSurface(const Dtk_Size_t &inIndex) const
Dtk_NurbsCurve::CanHaveDiscontinuity
Dtk_bool CanHaveDiscontinuity() const
return DTK_TRUE if nurbs can have discontinuity
Dtk_RevolutionSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_OffsetSurface::ComputeOffsetedSurface
Dtk_SurfacePtr ComputeOffsetedSurface() const
Compute the result Surface with the offset applied. For some surfaces, their type can be conserved,...
Dtk_StandardRevolutionSurface::GetRevolvedCurve
Dtk_CurvePtr GetRevolvedCurve() const
GetRevolvedCurve.
Dtk_Surface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_PlaneSurface::~Dtk_PlaneSurface
virtual ~Dtk_PlaneSurface()
Dtk_Line::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_Line::Create
static Dtk_LinePtr Create(const Dtk_pnt &inPnt1, const Dtk_pnt &inPnt2)
Calls full featured constructor to allocate a new object.
Dtk_ToroidalSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_RevolutionSurface::GetRevolutionAxis
const Dtk_dir & GetRevolutionAxis() const
GetRevolutionAxis.
Dtk_MeshSurface::GetVertexArrayIndex
const std::vector< Dtk_UInt32 > & GetVertexArrayIndex() const
Dtk_Line::ToNurbs
virtual Dtk_NurbsCurvePtr ToNurbs() const
Convert Curve to nurbs.
Dtk_Conic::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:479
Dtk_CylindricalSurface::GetRadius
Dtk_Double64 GetRadius() const
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface(const Dtk_NurbsSurface &in)
Dtk_NurbsSurface::IsRationnal
Dtk_bool IsRationnal() const
DTK_TYPE_PLANE
@ DTK_TYPE_PLANE
Definition: define.h:83
Dtk_NurbsSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_NurbsSurface::ComputeUDerivative
virtual Dtk_ErrorStatus ComputeUDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outdir) const
Dtk_NurbsSurface::Create
static Dtk_NurbsSurfacePtr Create(const Dtk_NurbsSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Point::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_MeshSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
No corresponding nurbs nurface.
Dtk_RuledSurface::_ComputeAnyDerivative
Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_TransformedSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_NurbsCurve::GetNumKnots
Dtk_Size_t GetNumKnots() const
return number of different knot value
Dtk_RuledSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Point::Dtk_Point
Dtk_Point(const Dtk_pnt &pt)
constructors
Dtk_Hyperbola::DtkDynamicCast
static Dtk_Hyperbola * DtkDynamicCast(Dtk_Object *inObject)
Dtk_NurbsSurface::GetVKnotMultiplicity
Dtk_UInt32 GetVKnotMultiplicity(const Dtk_Size_t &inIndex) const
Dtk_SphericalSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_SphericalSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1425
Dtk_SphericalSurface::IsVPeriodic
virtual Dtk_bool IsVPeriodic() const
Return DTK_TRUE If Periodic following V parameter.
Dtk_OffsetSurface::GetSurface
Dtk_SurfacePtr GetSurface() const
Dtk_NurbsSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:796
Dtk_ConicalSurface::GetSemiAngle
Dtk_Double64 GetSemiAngle() const
Dtk_Point::Dtk_Point
Dtk_Point(Dtk_Point &&in) DTK_NOEXCEPT
Dtk_Hyperbola
Definition: util_geom_dtk.hpp:651
Dtk_Curve::~Dtk_Curve
virtual ~Dtk_Curve()
Dtk_RevolutionSurface
This is the Revolution Surface Class.
Definition: util_geom_dtk.hpp:970
Dtk_SphericalSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_ConicalSurface::~Dtk_ConicalSurface
virtual ~Dtk_ConicalSurface()
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface(Dtk_NurbsSurface &&in) DTK_NOEXCEPT
Dtk_FilletSurface::DtkDynamicCast
static Dtk_FilletSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_MeshSurface::DtkDynamicCast
static Dtk_MeshSurface * DtkDynamicCast(Dtk_Object *inObject)
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve(const Dtk_UInt32 &inDegree, const Dtk_tab< Dtk_Double64 > &inKnots, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >())
Dtk_NurbsCurve::Create
static Dtk_NurbsCurvePtr Create(const Dtk_tab< Dtk_CurvePtr > &inCurvesToMerge, Dtk_Double64 stichtol=DTK_TOLERANCE, Dtk_bool LengthParameter=DTK_FALSE)
Calls full featured constructor to allocate a new object.
Dtk_CylindricalSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_StandardRevolutionSurface::GetRevolutionAxis
const Dtk_dir & GetRevolutionAxis() const
GetRevolutionAxis.
DTK_TYPE_LINE
@ DTK_TYPE_LINE
Definition: define.h:46
Dtk_MeshSurface::AddMeshFaceToMesh
Dtk_ErrorStatus AddMeshFaceToMesh(Dtk_MeshPtr &inoutMeshPtr) const
Add MeshSurface to Mesh.
Dtk_Hyperbola::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_CylindricalSurface::~Dtk_CylindricalSurface
virtual ~Dtk_CylindricalSurface()
Dtk_LinearExtrusionSurface::Dtk_LinearExtrusionSurface
Dtk_LinearExtrusionSurface(Dtk_LinearExtrusionSurface &&) DTK_NOEXCEPT
Dtk_RuledSurface
This is the Ruled Surface Class.
Definition: util_geom_dtk.hpp:1193
Dtk_Polyline::GetNumPoints
Dtk_Size_t GetNumPoints() const
return number of points for the polyline
Dtk_Surface::PDtk_StoreDataSurface
friend void PDtk_StoreDataSurface(void *, Dtk_SurfacePtr &)
Dtk_NurbsSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_ToroidalSurface::Dtk_ToroidalSurface
Dtk_ToroidalSurface(Dtk_ToroidalSurface &&) DTK_NOEXCEPT
Dtk_Ellipse
This is the ellipse and circle Class. parametrisation :[ 0.0 - 2PI ] 0.0 is given by inXref or inOrig...
Definition: util_geom_dtk.hpp:536
Dtk_Ellipse::GetDomain
Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_Point::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:26
Dtk_Ellipse::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_NurbsCurve::ComputeUDir
virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64 &inU, Dtk_dir &outDir) const
Compute dir on U parameter.
Dtk_StandardRevolutionSurface::Dtk_StandardRevolutionSurface
Dtk_StandardRevolutionSurface(Dtk_StandardRevolutionSurface &&) DTK_NOEXCEPT
Dtk_RevolutionSurface::inUDirection
const Dtk_pnt const Dtk_dir const Dtk_dir & inUDirection
Definition: util_geom_dtk.hpp:999
Dtk_OffsetSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_ToroidalSurface::~Dtk_ToroidalSurface
virtual ~Dtk_ToroidalSurface()
Dtk_ToroidalSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_FilletSurface::GetSpineCurve
Dtk_CurvePtr GetSpineCurve() const
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface()
Dtk_SphericalSurface::GetRadius
Dtk_Double64 GetRadius() const
Dtk_PlaneSurface::Dtk_PlaneSurface
Dtk_PlaneSurface(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_dir &inVDirection)
Dtk_Curve::SetDimension
void SetDimension(const Dtk_Size_t &inDimension)
Set curve dimension (2 or 3)
Dtk_FilletSurface::get_type_detk
type_detk get_type_detk() const
Dtk_NurbsCurve::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_Ellipse::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_LinearExtrusionSurface::Create
static Dtk_LinearExtrusionSurfacePtr Create(const Dtk_LinearExtrusionSurface &in)
Calls copy constructor to allocate a new object.
Dtk_ConicalSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Conic::Dtk_Conic
Dtk_Conic()
Dtk_Hyperbola::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_NurbsSurface::GetVKnotValue
Dtk_Double64 GetVKnotValue(const Dtk_Size_t &inIndex) const
Dtk_CylindricalSurface::Create
static Dtk_CylindricalSurfacePtr Create(const Dtk_CylindricalSurface &in)
Calls copy constructor to allocate a new object.
Dtk_NurbsCurve::ForceG1Continuity
Dtk_NurbsCurvePtr ForceG1Continuity() const
Dtk_FilletSurface::GetSpineParametrization
Dtk_tab< Dtk_Double64 > GetSpineParametrization() const
Dtk_NurbsCurve::Create
static Dtk_NurbsCurvePtr Create(const Dtk_NurbsCurve &in)
Calls copy constructor to allocate a new object.
Dtk_Surface::ComputeUVto3DFirstDerivative
Dtk_ErrorStatus ComputeUVto3DFirstDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, const Dtk_dir &inUVFirstDerivative, Dtk_dir &out3DFirstDerivative) const
Compute 3D first derivative on UV point according to UV derivative.
Dtk_MeshSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Conic::DtkDynamicCast
static Dtk_Conic * DtkDynamicCast(Dtk_Object *inObject)
Dtk_NurbsSurface::SetTypeBeforeConversion
void SetTypeBeforeConversion(type_detk type)
Dtk_MeshSurface::GetVertexArray
const std::vector< Dtk_pnt > & GetVertexArray() const
Dtk_RuledSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_Point::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:31
Dtk_PlaneSurface::get_type_detk
type_detk get_type_detk() const
Dtk_StandardRevolutionSurface::Create
static Dtk_StandardRevolutionSurfacePtr Create(const Dtk_CurvePtr &inRevolvedCurve, const Dtk_pnt &inAxisposition, const Dtk_dir &inRevolutionAxis, const Dtk_dir &inVDirection, const Dtk_dir &inYDir=Dtk_dir())
Create Dtk_StandardRevolutionSurface.
Dtk_NurbsCurve::Dtk_NurbsCurve
Dtk_NurbsCurve(const Dtk_UInt32 &inDegree, const Dtk_tab< Dtk_Double64 > &inKnotsValues, const Dtk_tab< Dtk_UChar8 > &inKnotsMultiplicities, const Dtk_tab< Dtk_pnt > &inControlPoints, const Dtk_tab< Dtk_Double64 > &inWeights=Dtk_tab< Dtk_Double64 >())
Dtk_SphericalSurface::_ComputeMultipleDerivative
Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Ellipse::Dtk_Ellipse
Dtk_Ellipse(Dtk_Ellipse &&in) DTK_NOEXCEPT
Dtk_TransformedSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Point::Create
static Dtk_PointPtr Create(const Dtk_Double64 &inX, const Dtk_Double64 &inY, const Dtk_Double64 &inZ)
Calls full featured constructor to allocate a new object.
Dtk_NurbsCurve::Point
Dtk_pnt & Point(const Dtk_Size_t &inIndex)
Dtk_Parabola::GetDomain
Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
Dtk_Polyline::Dtk_Polyline
Dtk_Polyline(Dtk_Polyline &&in) DTK_NOEXCEPT
Dtk_StandardRevolutionSurface::GetXDirection
const Dtk_dir & GetXDirection() const
Give V origin for parametrisation.
Dtk_NurbsCurve::IsClosed
Dtk_bool IsClosed(Dtk_Double64 inTol=DTK_TOLERANCE) const
return DTK_TRUE if nurbs is closed
Dtk_NurbsSurface::Split
Dtk_ErrorStatus Split(Dtk_Double64 inTrimDom[4], Dtk_Double64 inTolerance=DTK_TOLERANCE)
Dtk_OffsetSurface::GetOffset
Dtk_Double64 GetOffset() const
Dtk_Polyline::IsLine
Dtk_bool IsLine() const
return DTK_TRUE if polyline is a line DTK_FALSE otherwise
Dtk_FilletSurface::GetConstantRadius
Dtk_Double64 GetConstantRadius() const
Dtk_UChar8
unsigned char Dtk_UChar8
Definition: define.h:697
Dtk_NurbsCurve::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Transform Curve.
Dtk_RuledSurface::GetSecondCurve
Dtk_CurvePtr GetSecondCurve() const
Dtk_LinearExtrusionSurface::~Dtk_LinearExtrusionSurface
virtual ~Dtk_LinearExtrusionSurface()
Dtk_ToroidalSurface::Dtk_ToroidalSurface
Dtk_ToroidalSurface(const Dtk_ToroidalSurface &)
Dtk_NurbsSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:783
Dtk_NurbsSurface::GetUKnotValue
Dtk_Double64 GetUKnotValue(const Dtk_Size_t &inIndex) const
Dtk_SphericalSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_RevolutionSurface::inRevolutionAxis
const Dtk_pnt const Dtk_dir & inRevolutionAxis
Definition: util_geom_dtk.hpp:999
Dtk_NurbsCurve::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:194
Dtk_NurbsCurve::SetTypeBeforeConversion
void SetTypeBeforeConversion(const type_detk &inType)
Dtk_Hyperbola::Reverse
virtual void Reverse()
Reverse Curve.
Dtk_TransformedSurface::_ComputeMultipleDerivative
Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_NurbsSurface::Point
const Dtk_pnt & Point(const Dtk_Size_t &inUIndex, const Dtk_Size_t &inVIndex) const
Dtk_StandardRevolutionSurface::GetZDirection
const Dtk_dir & GetZDirection() const
GetZDirection.
Dtk_LinearExtrusionSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_Point::Create
static Dtk_PointPtr Create(const Dtk_Point &in)
Calls copy constructor to allocate a new object.
Dtk_RuledSurface::Dtk_RuledSurface
Dtk_RuledSurface(const Dtk_CurvePtr &inFirstCurve, const Dtk_CurvePtr &inSecondCurve)
Dtk_LinearExtrusionSurface::Create
static Dtk_LinearExtrusionSurfacePtr Create(const Dtk_CurvePtr &inExtrudedCurve, const Dtk_dir &inExtrusionAxis)
Create an infinite Dtk_LinearExtrusionSurface from a curve and a extrusion vector two curves.
Dtk_FilletSurface::GetParam2
Dtk_Double64 GetParam2() const
Dtk_NurbsCurve::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:186
Dtk_Curve::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:88
Dtk_OffsetSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
Dtk_Parabola::Create
static Dtk_ParabolaPtr Create(const Dtk_Parabola &in)
Calls copy constructor to allocate a new object.
Dtk_Hyperbola::~Dtk_Hyperbola
virtual ~Dtk_Hyperbola()
Dtk_ToroidalSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Parabola::DtkDynamicCast
static Dtk_Parabola * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Ellipse::Create
static Dtk_EllipsePtr Create(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inMajorRadius, const Dtk_Double64 &inMinorRadius)
Calls full featured constructor to allocate a new object.
Dtk_StandardRevolutionSurface::~Dtk_StandardRevolutionSurface
virtual ~Dtk_StandardRevolutionSurface()
Dtk_ConicalSurface::Create
static Dtk_ConicalSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_Double64 &inFirstRadius, const Dtk_Double64 &inAngle, const Dtk_dir &inYDir=Dtk_dir())
Create an infinite Cone.
Dtk_NurbsCurve::_ComputeAnyDerivativeExtended
Dtk_ErrorStatus _ComputeAnyDerivativeExtended(Dtk_Double64 inUvalue, int inUdiff, Dtk_dir &outdir, int exttype) const
Compute any derivative for an U value outside of the curve definition.
Dtk_RuledSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_LinearExtrusionSurface::IsVPeriodic
virtual Dtk_bool IsVPeriodic() const
Return DTK_TRUE If Periodic following V parameter.
Dtk_NurbsCurve::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_FilletSurface::Dtk_FilletSurface
Dtk_FilletSurface(const Dtk_FilletSurface &)
Dtk_ConicalSurface::Dtk_ConicalSurface
Dtk_ConicalSurface(const Dtk_ConicalSurface &s)
Dtk_TransformedSurface::DtkDynamicCast
static Dtk_TransformedSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_pnt
This is a mathematical point class.
Definition: dtk_pnt.hpp:20
type_detk
type_detk
Definition: define.h:21
Dtk_Hyperbola::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:660
Dtk_NurbsCurve::GetDegree
Dtk_UInt32 GetDegree() const
return degree
Dtk_StandardRevolutionSurface::GetAxisPosition
const Dtk_pnt & GetAxisPosition() const
Get origin
Dtk_Curve::IsClosed
virtual Dtk_bool IsClosed(Dtk_Double64 inTol=DTK_TOLERANCE) const
return True if Curve is closed
Dtk_Point::Create
static Dtk_PointPtr Create(const Dtk_pnt &in)
Dtk_Curve::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const =0
Return First point.
Dtk_Surface::Clone
virtual Dtk_Object * Clone()=0
DTK_TYPE_TRANSFORMED_SURFACE
@ DTK_TYPE_TRANSFORMED_SURFACE
Definition: define.h:490
Dtk_ConicalSurface::Dtk_ConicalSurface
Dtk_ConicalSurface()
Dtk_Surface::GetTrimUVBox
Dtk_ErrorStatus GetTrimUVBox(Dtk_Double64 outTrimValues[]) const
Get Surface Trim Box : Umin = outTrimValues[0] Umax = outTrimValues[1] Vmin = outTrimValues[2] Vmax =...
Dtk_RevolutionSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_ToroidalSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_Line::Dtk_Line
Dtk_Line(const Dtk_pnt &inOrigin, const Dtk_dir &inDirection)
DTK_TYPE_CYLINDRICAL_SURFACE
@ DTK_TYPE_CYLINDRICAL_SURFACE
Definition: define.h:84
Dtk_Polyline::Dtk_Polyline
Dtk_Polyline()
Dtk_Line::Reverse
virtual void Reverse()
Reverse Curve.
Dtk_Parabola::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 u, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_Surface
Dtk_Surface is a geometrical entity representing a surface. Some type of surface are unlimited such a...
Definition: util_geom_dtk.hpp:716
Dtk_LinearExtrusionSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_OffsetSurface::PrepareTransfo
virtual void PrepareTransfo()
Dtk_OffsetSurface::DtkDynamicCast
static Dtk_OffsetSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_Surface::Dtk_Surface
Dtk_Surface()
Dtk_CylindricalSurface::Dtk_CylindricalSurface
Dtk_CylindricalSurface()
Dtk_NurbsCurve::ToNurbs
virtual Dtk_NurbsCurvePtr ToNurbs() const
Convert Curve to nurbs.
Dtk_Line::get_type_detk
type_detk get_type_detk() const
Dtk_Conic
This is the Conic Class.
Definition: util_geom_dtk.hpp:477
Dtk_CylindricalSurface::GetDomain
Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_NurbsCurve::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Return First point.
Dtk_TransformedSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_StandardRevolutionSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_Curve::PDtk_StoreDataCurve
friend void PDtk_StoreDataCurve(void *, Dtk_CurvePtr &)
Dtk_PlaneSurface::GetYDirection
Dtk_dir GetYDirection() const
Dtk_StandardRevolutionSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_NurbsSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_NurbsSurface::GetNumKnotsU
Dtk_Size_t GetNumKnotsU() const
Dtk_Hyperbola::Dtk_Hyperbola
Dtk_Hyperbola(Dtk_Hyperbola &&in) DTK_NOEXCEPT
Dtk_Ellipse::GetMajorRadius
Dtk_Double64 GetMajorRadius() const
Dtk_StandardRevolutionSurface::GetRadius
Dtk_Double64 GetRadius() const
Get Radius at origin.
Dtk_Parabola::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Curve::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_Surface::ComputeUVto3DSecondDerivative
Dtk_ErrorStatus ComputeUVto3DSecondDerivative(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, const Dtk_dir &inUVFirstDerivative, const Dtk_dir &inUVSecondDerivative, Dtk_dir &out3DSecondDerivative) const
Compute 3D second derivative on UV point according to UV derivatives.
Dtk_FilletSurface::Create
static Dtk_FilletSurfacePtr Create(const Dtk_FilletSurface &in)
Calls copy constructor to allocate a new object.
Dtk_Point::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:24
Dtk_Conic::GetXDirection
const Dtk_dir & GetXDirection() const
Dtk_NurbsSurface::GetNumKnotsV
Dtk_Size_t GetNumKnotsV() const
Dtk_RevolutionSurface::inYDir
const Dtk_pnt const Dtk_dir const Dtk_dir const Dtk_dir & inYDir
Definition: util_geom_dtk.hpp:999
Dtk_TransformedSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_LinearExtrusionSurface::GetExtrusionAxis
const Dtk_dir & GetExtrusionAxis() const
Dtk_PlaneSurface::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:912
Dtk_ToroidalSurface::Create
static Dtk_ToroidalSurfacePtr Create(const Dtk_ToroidalSurface &in)
Calls copy constructor to allocate a new object.
Dtk_LinearExtrusionSurface::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_NurbsCurve::IsLine
Dtk_bool IsLine() const
return DTK_TRUE if nurbs is line
Dtk_PlaneSurface::Normalize
Dtk_ErrorStatus Normalize()
Dtk_MeshSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:1663
Dtk_NurbsCurve::ComputeUPointDir
Dtk_ErrorStatus ComputeUPointDir(const Dtk_Double64 &inUparameter, Dtk_pnt &outPoint, Dtk_dir &outDir) const
Compute point and dir on U parameter.
Dtk_Curve::ComputeLength
Dtk_Double64 ComputeLength()
return curve Length
Dtk_Parabola::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_Surface::Dtk_Surface
Dtk_Surface(const Dtk_Surface &s)
Dtk_Line::Create
static Dtk_LinePtr Create(const Dtk_Line &in)
Calls copy constructor to allocate a new object.
Dtk_Line::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_Ellipse::DtkDynamicType
int DtkDynamicType(const int &inId)
downcasting
Dtk_TransformedSurface::get_type_detk
type_detk get_type_detk() const
Dtk_Conic::GetYDirection
Dtk_dir GetYDirection() const
Get Y direction of Conic.
Dtk_RevolutionSurface::get_type_detk
type_detk get_type_detk() const
Dtk_MeshSurface
This is the Mesh Surface Class.
Definition: util_geom_dtk.hpp:1654
Dtk_PlaneSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_TransformedSurface::Dtk_TransformedSurface
Dtk_TransformedSurface()
Dtk_Polyline::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_NurbsSurface::GetUnpackedVKnot
Dtk_Double64 * GetUnpackedVKnot() const
Dtk_SphericalSurface::DtkDynamicCast
static Dtk_SphericalSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_Surface::DtkDynamicCast
static Dtk_Surface * DtkDynamicCast(Dtk_Object *s)
Dtk_Polyline::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_MeshSurface::GetMesh
Dtk_MeshPtr GetMesh() const
Get the Dtk_Mesh corresponding to MeshSurface.
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:84
Dtk_RevolutionSurface::inAxisposition
const Dtk_pnt & inAxisposition
Definition: util_geom_dtk.hpp:999
Dtk_Hyperbola::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:653
Dtk_CylindricalSurface::Dtk_CylindricalSurface
Dtk_CylindricalSurface(const Dtk_CylindricalSurface &s)
DTK_TYPE_FILLET_SURFACE
@ DTK_TYPE_FILLET_SURFACE
Definition: define.h:107
Dtk_ConicalSurface::GetRadius
Dtk_Double64 GetRadius() const
Dtk_Polyline::get_type_detk
type_detk get_type_detk() const
Dtk_LinearExtrusionSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_OffsetSurface::Create
static Dtk_OffsetSurfacePtr Create(const Dtk_SurfacePtr &inSurf, const Dtk_Double64 &inOffset)
Create an offset surface following surface normal.
Dtk_ConicalSurface::Dtk_ConicalSurface
Dtk_ConicalSurface(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inYDirection, const Dtk_dir &inUDirection, const Dtk_Double64 &inRadius, const Dtk_Double64 &inAngle)
Dtk_Hyperbola::Create
static Dtk_HyperbolaPtr Create(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inSemiAxis, const Dtk_Double64 &inSemiImageAxis)
Calls full featured constructor to allocate a new object.
Dtk_NurbsCurve::GetKnotValue
Dtk_Double64 GetKnotValue(const Dtk_Size_t &inIndex) const
return knot value at inIndex place
Dtk_Ellipse::~Dtk_Ellipse
virtual ~Dtk_Ellipse()
Dtk_Parabola::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_ConicalSurface::DtkDynamicCast
static Dtk_ConicalSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_MeshSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1656
Dtk_Ellipse::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_Line::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff, Dtk_dir &outdir, int exttype) const
Dtk_MeshSurface::Dtk_MeshSurface
Dtk_MeshSurface()
Dtk_Ellipse::Dtk_Ellipse
Dtk_Ellipse(const Dtk_pnt &inCenter, const Dtk_dir &inNormal, const Dtk_dir &inXref, const Dtk_Double64 &inMajorRadius, const Dtk_Double64 &inMinorRadius)
Dtk_NurbsSurface::IsVPeriodic
virtual Dtk_bool IsVPeriodic() const
return DTK_TRUE if nurbs is periodic in V
Dtk_Point
This class represent a point coordinates and information. It is part of the Dtk_Vertex entity.
Definition: util_geom_dtk.hpp:22
Dtk_FilletSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
DTK_TYPE_ELLIPSE
@ DTK_TYPE_ELLIPSE
Definition: define.h:50
Dtk_RuledSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_Parabola::Reverse
virtual void Reverse()
Reverse Curve.
Dtk_NurbsCurve::DtkDynamicCast
static Dtk_NurbsCurve * DtkDynamicCast(Dtk_Object *inObject)
Dtk_RevolutionSurface::Normalize
Dtk_ErrorStatus Normalize()
Dtk_Conic::Dtk_Conic
Dtk_Conic(const Dtk_Conic &in)
Dtk_Curve::GetTrimStartPoint
Dtk_pnt GetTrimStartPoint() const
Return first trim point.
Dtk_Curve::InverseTrim
virtual Dtk_ErrorStatus InverseTrim()
Dtk_Ellipse::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:545
Dtk_RuledSurface::Dtk_RuledSurface
Dtk_RuledSurface()
Dtk_Hyperbola::GetSemiAxis
Dtk_Double64 GetSemiAxis() const
Dtk_NurbsCurve::GetUnpackedKnot
Dtk_Double64 * GetUnpackedKnot() const
util_geom_ptr_dtk.hpp
Dtk_NurbsCurve::ComputeEndPoint
virtual Dtk_pnt ComputeEndPoint() const
Return Last point.
Dtk_Point::get_type_detk
type_detk get_type_detk() const
Return type.
Dtk_SphericalSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
DTK_TYPE_OFFSET_SURFACE
@ DTK_TYPE_OFFSET_SURFACE
Definition: define.h:106
Dtk_Line::Transform
virtual Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform Line with inTransformation
Dtk_Parabola::get_type_detk
type_detk get_type_detk() const
Dtk_Surface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const =0
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_LinearExtrusionSurface::Normalize
Dtk_ErrorStatus Normalize()
DTK_TYPE_RULED_SURFACE
@ DTK_TYPE_RULED_SURFACE
Definition: define.h:91
Dtk_StandardRevolutionSurface::Dtk_StandardRevolutionSurface
Dtk_StandardRevolutionSurface()
Dtk_Polyline::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inMorePrecise=0)
Compute Bounding Box.
Dtk_Polyline::Dtk_Polyline
Dtk_Polyline(Dtk_tab< Dtk_pnt > inPoints)
Dtk_OffsetSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_Ellipse::ToPolyline
virtual Dtk_PolylinePtr ToPolyline(const int &inMinPoint, const Dtk_Double64 &inTolerance) const
Convert Curve to polyline.
Dtk_Hyperbola::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const
Compute U parameter from point.
Dtk_PlaneSurface
This is the Plane Surface Class.
Definition: util_geom_dtk.hpp:908
Dtk_Curve::IsPeriodic
virtual Dtk_bool IsPeriodic() const
return True if Curve is periodic
Dtk_CylindricalSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_Ellipse::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:540
Dtk_NurbsSurface
This is the Nurbs Surface Class.
Definition: util_geom_dtk.hpp:781
Dtk_Parabola::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_NurbsSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_Ellipse::ComputeStartPoint
virtual Dtk_pnt ComputeStartPoint() const
Return First point.
Dtk_NurbsSurface::GetVDegree
Dtk_UInt32 GetVDegree() const
DTK_TYPE_TOROIDAL_SURFACE
@ DTK_TYPE_TOROIDAL_SURFACE
Definition: define.h:87
Dtk_NurbsSurface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Object
Definition: dtk_object.hpp:8
Dtk_Surface::DeleteCorrespondingNurbs
void DeleteCorrespondingNurbs()
Dtk_SphericalSurface::~Dtk_SphericalSurface
virtual ~Dtk_SphericalSurface()
Dtk_Polyline::_Private
std::unique_ptr< Dtk_Handle > _Private
Handle
Definition: util_geom_dtk.hpp:332
Dtk_Line::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const
Get Curve Parametrisation.
Dtk_Polyline::Reverse
virtual void Reverse()
Reverse Curve.
Dtk_RevolutionSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_RevolutionSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_NurbsCurve::SetIsClosed
void SetIsClosed(const Dtk_bool &inIsClosed)
sets is_closed field to DTK_TRUE or DTK_FALSE
Dtk_TransformedSurface
Definition: util_geom_dtk.hpp:1603
Dtk_Conic::Clone
virtual Dtk_Object * Clone()=0
Dtk_NurbsSurface::Create
static Dtk_NurbsSurfacePtr Create(const Dtk_tab< Dtk_SurfacePtr > &inSurfacesToMerge, Dtk_Double64 stichtol=DTK_TOLERANCE)
Calls full featured constructor to allocate a new object.
Dtk_MeshSurface::Create
static Dtk_MeshSurfacePtr Create(const std::vector< Dtk_pnt > &inP, const std::vector< Dtk_UInt32 > &index, const std::vector< Dtk_dir > &inD, const std::vector< Dtk_UInt32 > &aindex)
Dtk_NurbsSurface::Dtk_NurbsSurface
Dtk_NurbsSurface(const Dtk_tab< Dtk_SurfacePtr > &inSurfacesToMerge, Dtk_Double64 stichtol)
Dtk_FilletSurface::GetAdjacentCurve
Dtk_CurvePtr GetAdjacentCurve(const Dtk_Size_t &inIndex) const
Dtk_ToroidalSurface::IsVPeriodic
virtual Dtk_bool IsVPeriodic() const
Return DTK_TRUE If Periodic following V parameter.
Dtk_FilletSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_NurbsSurface::_typeID
@ _typeID
Definition: util_geom_dtk.hpp:785
Dtk_Line::GetOrigin
Dtk_pnt GetOrigin() const
return origin of line
Dtk_Line::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const
Compute U parameter from point.
Dtk_SphericalSurface::Dtk_SphericalSurface
Dtk_SphericalSurface()
Dtk_ConicalSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Point::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Transform Point.
Dtk_ToroidalSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Curve::GetTrimUMin
Dtk_Double64 GetTrimUMin() const
Get start Trim parameter.
Dtk_ConicalSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_NurbsCurve::~Dtk_NurbsCurve
virtual ~Dtk_NurbsCurve()
Dtk_LinearExtrusionSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_Surface::_HasInternalNurbs
Dtk_bool _HasInternalNurbs() const
Dtk_RuledSurface::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Dtk_RevolutionSurface::Dtk_RevolutionSurface
Dtk_RevolutionSurface(Dtk_RevolutionSurface &&) DTK_NOEXCEPT
DTK_TYPE_HYPERBOLA
@ DTK_TYPE_HYPERBOLA
Definition: define.h:51
Dtk_Parabola::Dtk_Parabola
Dtk_Parabola(Dtk_Parabola &&in) DTK_NOEXCEPT
Dtk_FilletSurface::Dtk_FilletSurface
Dtk_FilletSurface(Dtk_FilletSurface &&) DTK_NOEXCEPT
Dtk_NurbsCurve::GetTypeBeforeConversion
type_detk GetTypeBeforeConversion() const
Dtk_Line
This is the Infinite Line Class. 0.0 parametrisation is first point or origin 1.0 parametrisation is ...
Definition: util_geom_dtk.hpp:405
DTK_TYPE_CONICAL_SURFACE
@ DTK_TYPE_CONICAL_SURFACE
Definition: define.h:85
Dtk_Ellipse::Create
static Dtk_EllipsePtr Create(const Dtk_Ellipse &in)
Calls copy constructor to allocate a new object.
Dtk_Hyperbola::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
transform
Dtk_Curve::IsTrimmed
Dtk_bool IsTrimmed() const
Return DTK_TRUE if Curve Is trimmed by point or parameter value.
Dtk_Surface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int extendtype) const
Dtk_RuledSurface::~Dtk_RuledSurface
virtual ~Dtk_RuledSurface()
Dtk_NurbsCurve::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, int inUdiff, Dtk_dir &outdir, int exttype) const
Compute any derivative for an U value.
Dtk_Point::DtkDynamicCast
static Dtk_Point * DtkDynamicCast(Dtk_Object *inObject)
Dtk_PlaneSurface::DtkDynamicCast
static Dtk_PlaneSurface * DtkDynamicCast(Dtk_Object *s)
Dtk_CylindricalSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_Parabola::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const
Compute U parameter from point.
Dtk_RuledSurface::GetFirstCurve
Dtk_CurvePtr GetFirstCurve() const
Dtk_Parabola::Dtk_Parabola
Dtk_Parabola(const Dtk_Parabola &in)
Dtk_Surface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Ellipse::Reverse
virtual void Reverse()
Reverse Curve.
Dtk_NurbsSurface::ComputeUVPoint
virtual Dtk_ErrorStatus ComputeUVPoint(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_pnt &outpnt) const
Compute 3D point.
Dtk_CylindricalSurface::ComputeNormal
virtual Dtk_ErrorStatus ComputeNormal(const Dtk_Double64 &inUValue, const Dtk_Double64 &inVValue, Dtk_dir &outDir) const
Compute Normal on UV point.
DTK_TYPE_REVOLUTION_SURFACE
@ DTK_TYPE_REVOLUTION_SURFACE
Definition: define.h:487
Dtk_StandardRevolutionSurface::_ComputeAnyDerivative
virtual Dtk_ErrorStatus _ComputeAnyDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUdiff, int inVdiff, Dtk_dir &outdir, int exttype) const
Dtk_Surface::IsTrimmed
Dtk_bool IsTrimmed() const
Return DTK_TRUE if Surface Is trimmed by parameter value.
Dtk_RuledSurface::Create
static Dtk_RuledSurfacePtr Create(const Dtk_RuledSurface &in)
Calls copy constructor to allocate a new object.
Dtk_OffsetSurface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Polyline::ComputeParameter
virtual Dtk_ErrorStatus ComputeParameter(const Dtk_pnt &inPoint, Dtk_Double64 &outU) const
Compute U parameter from point.
Dtk_RevolutionSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:979
Dtk_Polyline::Create
static Dtk_PolylinePtr Create(const Dtk_Polyline &in)
Calls copy constructor to allocate a new object.
Dtk_Curve::ComputeUDir
virtual Dtk_ErrorStatus ComputeUDir(const Dtk_Double64 &inU, Dtk_dir &outDir) const
Compute dir on U parameter.
Dtk_Curve::Transform
Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Transform Curve.
Dtk_dir
This is a mathematical direction class.
Definition: dtk_dir.hpp:14
Dtk_CylindricalSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:1257
Dtk_NurbsSurface::SplitAt
Dtk_ErrorStatus SplitAt(const Dtk_Double64 &inParameter, const Dtk_bool &inUSplit, const Dtk_bool &inKeepLeft, Dtk_NurbsSurfacePtr &outOtherPart, Dtk_Double64 inTolerance=DTK_TOLERANCE)
Dtk_CylindricalSurface::Dtk_CylindricalSurface
Dtk_CylindricalSurface(Dtk_CylindricalSurface &&s) DTK_NOEXCEPT
Dtk_MeshSurface::get_type_detk
type_detk get_type_detk() const
Dtk_NurbsCurve
This is the Nurbs Class.
Definition: util_geom_dtk.hpp:182
Dtk_Point::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dump entity.
Dtk_RevolutionSurface::SetStartAngle
Dtk_ErrorStatus SetStartAngle(Dtk_Double64 inAngle)
Dtk_NurbsSurface::IsUPeriodic
virtual Dtk_bool IsUPeriodic() const
return DTK_TRUE if nurbs is periodic in U
Dtk_ConicalSurface::Clone
virtual Dtk_Object * Clone()
Definition: util_geom_dtk.hpp:1314
Dtk_ConicalSurface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:1307
Dtk_Curve::ComputeOffset
Dtk_NurbsCurvePtr ComputeOffset(Dtk_Double64 inOffset, Dtk_dir inOffsetDirection)
Compute offset curve and convert it to nurbs.
Dtk_NurbsCurve::ComputeUPoint
virtual Dtk_ErrorStatus ComputeUPoint(const Dtk_Double64 &inU, Dtk_pnt &outPoint) const
Compute point on U parameter.
Dtk_Conic::GetOriginDirection
const Dtk_dir & GetOriginDirection() const
Get Origin of parametrisation of Conic (inXdir on schema)
Dtk_Surface::_Private
std::unique_ptr< Dtk_Handle > _Private
Definition: util_geom_dtk.hpp:718
Dtk_StandardRevolutionSurface::_ComputeMultipleDerivative
virtual Dtk_ErrorStatus _ComputeMultipleDerivative(Dtk_Double64 inUvalue, Dtk_Double64 inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, int exttype) const
Dtk_Polyline
This is the Polyline and Segment Line Class.
Definition: util_geom_dtk.hpp:329
Dtk_PlaneSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_LinearExtrusionSurface::Dtk_LinearExtrusionSurface
Dtk_LinearExtrusionSurface(const Dtk_LinearExtrusionSurface &)
Dtk_StandardRevolutionSurface::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 outDomain[]) const
Get Surface Parametrisation : Umin = outDomain[0] Umax = outDomain[1] Vmin = outDomain[2] Vmax = outD...
Dtk_Polyline::AddPoint
void AddPoint(const Dtk_pnt &inNewPoint)
Add point to polyline.
Dtk_NurbsCurve::IsBezier
Dtk_bool IsBezier() const
return DTK_TRUE if bezier
Dtk_OffsetSurface::_ComputeMultipleDerivative_withbasis
Dtk_ErrorStatus _ComputeMultipleDerivative_withbasis(const Dtk_Double64 &inUvalue, const Dtk_Double64 &inVvalue, int inUmaxdiff, int inVmaxdiff, int inUVdiffsummax, Dtk_dir *outdirs, Dtk_dir *outdirsbasis, int exttype) const
Dtk_OffsetSurface::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Curve::GetDomain
virtual Dtk_ErrorStatus GetDomain(Dtk_Double64 &outUmin, Dtk_Double64 &outUmax) const =0
Get Curve Parametrisation.
Dtk_Curve::ComputeOrientedBoundingBox
virtual Dtk_ErrorStatus ComputeOrientedBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, const Dtk_transfo &inLocal)
Compute Oriented Bounding Box.
Dtk_StandardRevolutionSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_NurbsCurve::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_SphericalSurface::Dtk_SphericalSurface
Dtk_SphericalSurface(Dtk_SphericalSurface &&) DTK_NOEXCEPT
Dtk_NurbsSurface::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Surface::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax) const
Set Surface Parametrisation : Umin = inDomain[0] Umax = inDomain[1] Vmin = inDomain[2] Vmax = inDomai...
Dtk_SphericalSurface::Dtk_SphericalSurface
Dtk_SphericalSurface(const Dtk_SphericalSurface &)
Dtk_Hyperbola::GetSize
virtual Dtk_Size_t GetSize() const
DTK_NOEXCEPT
#define DTK_NOEXCEPT
Definition: config.hpp:20
Dtk_PlaneSurface::Create
static Dtk_PlaneSurfacePtr Create(const Dtk_PlaneSurface &in)
Calls copy constructor to allocate a new object.
DTK_TYPE_LINEAR_EXTRUSION_SURFACE
@ DTK_TYPE_LINEAR_EXTRUSION_SURFACE
Definition: define.h:489
Dtk_RuledSurface::Dtk_RuledSurface
Dtk_RuledSurface(const Dtk_RuledSurface &s)
Dtk_TransformedSurface::GetTransformation
Dtk_transfo GetTransformation() const
Dtk_MeshSurface::Dtk_MeshSurface
Dtk_MeshSurface(const std::vector< Dtk_pnt > &inP, const std::vector< Dtk_UInt32 > &index)
Dtk_Entity
Definition: util_ent_dtk.hpp:367
Dtk_CylindricalSurface::Create
static Dtk_CylindricalSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_Double64 &inRadius, const Dtk_dir &inYDirection=Dtk_dir())
Create an infinite cylinder.
Dtk_OffsetSurface::ToNurbs
virtual Dtk_NurbsSurfacePtr ToNurbs(const Dtk_Double64 *inTrimDomain=NULL) const
Convert a surface into a Nurbs, keeping the parametrisation of the initial surface.
Dtk_FilletSurface::GetNumAdjacentSurfaces
Dtk_Size_t GetNumAdjacentSurfaces() const
Dtk_TransformedSurface::Create
static Dtk_TransformedSurfacePtr Create(const Dtk_TransformedSurface &in)
Calls copy constructor to allocate a new object.
Dtk_LinearExtrusionSurface::GetExtrudedCurve
Dtk_CurvePtr GetExtrudedCurve() const