summaryrefslogtreecommitdiff
path: root/inc/Approx_CurvilinearParameter.hxx
blob: 801359aa4cf0f9a1b0f58f61f889f3d24edf0d4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _Approx_CurvilinearParameter_HeaderFile
#define _Approx_CurvilinearParameter_HeaderFile

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

#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_Geom_BSplineCurve_HeaderFile
#include <Handle_Geom_BSplineCurve.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Geom2d_BSplineCurve_HeaderFile
#include <Handle_Geom2d_BSplineCurve.hxx>
#endif
#ifndef _Handle_Adaptor3d_HCurve_HeaderFile
#include <Handle_Adaptor3d_HCurve.hxx>
#endif
#ifndef _GeomAbs_Shape_HeaderFile
#include <GeomAbs_Shape.hxx>
#endif
#ifndef _Handle_Adaptor2d_HCurve2d_HeaderFile
#include <Handle_Adaptor2d_HCurve2d.hxx>
#endif
#ifndef _Handle_Adaptor3d_HSurface_HeaderFile
#include <Handle_Adaptor3d_HSurface.hxx>
#endif
#ifndef _Standard_OStream_HeaderFile
#include <Standard_OStream.hxx>
#endif
class Geom_BSplineCurve;
class Geom2d_BSplineCurve;
class Standard_OutOfRange;
class Standard_ConstructionError;
class Adaptor3d_HCurve;
class Adaptor2d_HCurve2d;
class Adaptor3d_HSurface;


//! Approximation of a Curve to make its parameter be its <br>
//!          curvilinear  abscissa <br>
//!          If the curve is a curve on a surface S, C2D is the corresponding Pcurve, <br>
//!          we considere the curve is given by its representation S(C2D(u)) <br>
//!          If the curve is a curve on 2 surfaces S1 and S2 and C2D1 C2D2 are <br>
//!          the two corresponding Pcurve, we considere the curve is given <br>
//!          by its representation  1/2(S1(C2D1(u) + S2 (C2D2(u))) <br>
class Approx_CurvilinearParameter  {
public:

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

  //! case of a free 3D curve <br>
  Standard_EXPORT   Approx_CurvilinearParameter(const Handle(Adaptor3d_HCurve)& C3D,const Standard_Real Tol,const GeomAbs_Shape Order,const Standard_Integer MaxDegree,const Standard_Integer MaxSegments);
  //! case of a curve on one surface <br>
  Standard_EXPORT   Approx_CurvilinearParameter(const Handle(Adaptor2d_HCurve2d)& C2D,const Handle(Adaptor3d_HSurface)& Surf,const Standard_Real Tol,const GeomAbs_Shape Order,const Standard_Integer MaxDegree,const Standard_Integer MaxSegments);
  //! case of a curve on two surfaces <br>
//! <br>
  Standard_EXPORT   Approx_CurvilinearParameter(const Handle(Adaptor2d_HCurve2d)& C2D1,const Handle(Adaptor3d_HSurface)& Surf1,const Handle(Adaptor2d_HCurve2d)& C2D2,const Handle(Adaptor3d_HSurface)& Surf2,const Standard_Real Tol,const GeomAbs_Shape Order,const Standard_Integer MaxDegree,const Standard_Integer MaxSegments);
  
  Standard_EXPORT     Standard_Boolean IsDone() const;
  
  Standard_EXPORT     Standard_Boolean HasResult() const;
  //! returns the Bspline curve corresponding to the reparametrized 3D curve <br>
  Standard_EXPORT     Handle_Geom_BSplineCurve Curve3d() const;
  //! returns the maximum error on the reparametrized 3D curve <br>
  Standard_EXPORT     Standard_Real MaxError3d() const;
  //! returns the BsplineCurve representing the reparametrized 2D curve on the <br>
//!          first surface (case of a curve on one or two surfaces) <br>
  Standard_EXPORT     Handle_Geom2d_BSplineCurve Curve2d1() const;
  //! returns the maximum error on the first reparametrized 2D curve <br>
  Standard_EXPORT     Standard_Real MaxError2d1() const;
  //! returns the BsplineCurve representing the reparametrized 2D curve on the <br>
//!          second surface (case of a curve on two surfaces) <br>
  Standard_EXPORT     Handle_Geom2d_BSplineCurve Curve2d2() const;
  //! returns the maximum error on the second reparametrized 2D curve <br>
  Standard_EXPORT     Standard_Real MaxError2d2() const;
  //! print the maximum errors(s) <br>
  Standard_EXPORT     void Dump(Standard_OStream& o) const;





protected:





private:

  
  Standard_EXPORT   static  void ToleranceComputation(const Handle(Adaptor2d_HCurve2d)& C2D,const Handle(Adaptor3d_HSurface)& S,const Standard_Integer MaxNumber,const Standard_Real Tol,Standard_Real& TolV,Standard_Real& TolW) ;


Standard_Integer myCase;
Standard_Boolean myDone;
Standard_Boolean myHasResult;
Handle_Geom_BSplineCurve myCurve3d;
Standard_Real myMaxError3d;
Handle_Geom2d_BSplineCurve myCurve2d1;
Standard_Real myMaxError2d1;
Handle_Geom2d_BSplineCurve myCurve2d2;
Standard_Real myMaxError2d2;


};





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


#endif