1 // File: BRep_CurveOnSurface.cxx
2 // Created: Tue Jul 6 18:24:27 1993
3 // Author: Remi LEQUETTE
7 #include <BRep_CurveOnSurface.ixx>
8 #include <Precision.hxx>
11 //=======================================================================
12 //function : BRep_CurveOnSurface
14 //=======================================================================
16 BRep_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()),
26 //=======================================================================
29 //=======================================================================
31 void BRep_CurveOnSurface::D0(const Standard_Real U, gp_Pnt& P) const
34 gp_Pnt2d P2d = myPCurve->Value(U);
35 P = mySurface->Value(P2d.X(),P2d.Y());
36 P.Transform(myLocation.Transformation());
39 //=======================================================================
40 //function : IsCurveOnSurface
42 //=======================================================================
44 Standard_Boolean BRep_CurveOnSurface::IsCurveOnSurface()const
49 //=======================================================================
50 //function : IsCurveOnSurface
52 //=======================================================================
54 Standard_Boolean BRep_CurveOnSurface::IsCurveOnSurface
55 (const Handle(Geom_Surface)& S, const TopLoc_Location& L)const
57 return (S == mySurface) && (L == myLocation);
62 //=======================================================================
65 //=======================================================================
67 const Handle(Geom_Surface)& BRep_CurveOnSurface::Surface()const
73 //=======================================================================
76 //=======================================================================
78 const Handle(Geom2d_Curve)& BRep_CurveOnSurface::PCurve()const
83 //=======================================================================
86 //=======================================================================
88 void BRep_CurveOnSurface::PCurve(const Handle(Geom2d_Curve)& C)
94 //=======================================================================
97 //=======================================================================
99 Handle(BRep_CurveRepresentation) BRep_CurveOnSurface::Copy() const
101 Handle(BRep_CurveOnSurface) C = new BRep_CurveOnSurface(myPCurve,
105 C->SetRange(First(),Last());
106 C->SetUVPoints(myUV1,myUV2);
112 //=======================================================================
115 //=======================================================================
117 void BRep_CurveOnSurface::Update()
119 Standard_Real f = First();
120 Standard_Real l = Last();
121 Standard_Boolean isneg = Precision::IsNegativeInfinite(f);
122 Standard_Boolean ispos = Precision::IsPositiveInfinite(l);
124 myPCurve->D0(f,myUV1);
127 myPCurve->D0(l,myUV2);