0022627: Change OCCT memory management defaults
[occt.git] / src / BRep / BRep_CurveOnSurface.cxx
CommitLineData
7fd59977 1// File: BRep_CurveOnSurface.cxx
2// Created: Tue Jul 6 18:24:27 1993
3// Author: Remi LEQUETTE
4// <rle@phylox>
5
6
7#include <BRep_CurveOnSurface.ixx>
8#include <Precision.hxx>
9
10
11//=======================================================================
12//function : BRep_CurveOnSurface
13//purpose :
14//=======================================================================
15
16BRep_CurveOnSurface::BRep_CurveOnSurface(const Handle(Geom2d_Curve)& PC,
17 const Handle(Geom_Surface)& S,
18 const TopLoc_Location& L) :
19 BRep_GCurve(L,PC->FirstParameter(),PC->LastParameter()),
20 myPCurve(PC),
21 mySurface(S)
22{
23}
24
25
26//=======================================================================
27//function : D0
28//purpose :
29//=======================================================================
30
31void BRep_CurveOnSurface::D0(const Standard_Real U, gp_Pnt& P) const
32{
33 // shoud be D0 NYI
34 gp_Pnt2d P2d = myPCurve->Value(U);
35 P = mySurface->Value(P2d.X(),P2d.Y());
36 P.Transform(myLocation.Transformation());
37}
38
39//=======================================================================
40//function : IsCurveOnSurface
41//purpose :
42//=======================================================================
43
44Standard_Boolean BRep_CurveOnSurface::IsCurveOnSurface()const
45{
46 return Standard_True;
47}
48
49//=======================================================================
50//function : IsCurveOnSurface
51//purpose :
52//=======================================================================
53
54Standard_Boolean BRep_CurveOnSurface::IsCurveOnSurface
55 (const Handle(Geom_Surface)& S, const TopLoc_Location& L)const
56{
57 return (S == mySurface) && (L == myLocation);
58}
59
60
61
62//=======================================================================
63//function : Surface
64//purpose :
65//=======================================================================
66
67const Handle(Geom_Surface)& BRep_CurveOnSurface::Surface()const
68{
69 return mySurface;
70}
71
72
73//=======================================================================
74//function : PCurve
75//purpose :
76//=======================================================================
77
78const Handle(Geom2d_Curve)& BRep_CurveOnSurface::PCurve()const
79{
80 return myPCurve;
81}
82
83//=======================================================================
84//function : PCurve
85//purpose :
86//=======================================================================
87
88void BRep_CurveOnSurface::PCurve(const Handle(Geom2d_Curve)& C)
89{
90 myPCurve = C;
91}
92
93
94//=======================================================================
95//function : Copy
96//purpose :
97//=======================================================================
98
99Handle(BRep_CurveRepresentation) BRep_CurveOnSurface::Copy() const
100{
101 Handle(BRep_CurveOnSurface) C = new BRep_CurveOnSurface(myPCurve,
102 mySurface,
103 Location());
104
105 C->SetRange(First(),Last());
106 C->SetUVPoints(myUV1,myUV2);
107
108 return C;
109}
110
111
112//=======================================================================
113//function : Update
114//purpose :
115//=======================================================================
116
117void BRep_CurveOnSurface::Update()
118{
119 Standard_Real f = First();
120 Standard_Real l = Last();
121 Standard_Boolean isneg = Precision::IsNegativeInfinite(f);
122 Standard_Boolean ispos = Precision::IsPositiveInfinite(l);
123 if (!isneg) {
124 myPCurve->D0(f,myUV1);
125 }
126 if (!ispos) {
127 myPCurve->D0(l,myUV2);
128 }
129}
130
131