1 // File: Geom2d_Circle.cxx
2 // Created: Wed Mar 24 19:20:00 1993
5 // Copyright: Matra Datavision 1993
7 //File Geom2d_Circle.cxx, JCV 12/07/91
10 #include <Geom2d_Circle.ixx>
13 #include <Standard_RangeError.hxx>
14 #include <Standard_ConstructionError.hxx>
17 typedef Geom2d_Circle Circle;
18 typedef Handle(Geom2d_Circle) Handle(Circle);
20 typedef gp_Dir2d Dir2d;
21 typedef gp_Pnt2d Pnt2d;
22 typedef gp_Trsf2d Trsf2d;
23 typedef gp_Vec2d Vec2d;
33 //=======================================================================
36 //=======================================================================
38 Handle(Geom2d_Geometry) Geom2d_Circle::Copy() const
41 C = new Circle (pos, radius);
46 //=======================================================================
47 //function : Geom2d_Circle
49 //=======================================================================
51 Geom2d_Circle::Geom2d_Circle (const gp_Circ2d& C) : radius (C.Radius()) {
57 //=======================================================================
58 //function : Geom2d_Circle
60 //=======================================================================
62 Geom2d_Circle::Geom2d_Circle (const Ax2d& A, const Standard_Real Radius,
63 const Standard_Boolean Sense)
66 if (Radius < 0.0) { Standard_ConstructionError::Raise(); }
67 pos = gp_Ax22d(A, Sense);
70 //=======================================================================
71 //function : Geom2d_Circle
73 //=======================================================================
75 Geom2d_Circle::Geom2d_Circle (const gp_Ax22d& A, const Standard_Real Radius)
79 if (Radius < 0.0) { Standard_ConstructionError::Raise(); }
83 //=======================================================================
84 //function : SetCirc2d
86 //=======================================================================
88 void Geom2d_Circle::SetCirc2d (const gp_Circ2d& C) {
95 //=======================================================================
96 //function : SetRadius
98 //=======================================================================
100 void Geom2d_Circle::SetRadius (const Standard_Real R)
102 if (R < 0.0) { Standard_ConstructionError::Raise(); }
106 //=======================================================================
109 //=======================================================================
111 Standard_Real Geom2d_Circle::Radius () const
116 //=======================================================================
119 //=======================================================================
121 gp_Circ2d Geom2d_Circle::Circ2d () const
123 return gp_Circ2d (pos, radius);
126 //=======================================================================
127 //function : ReversedParameter
129 //=======================================================================
131 Standard_Real Geom2d_Circle::ReversedParameter( const Standard_Real U) const
133 return (2. * M_PI - U);
136 //=======================================================================
137 //function : Eccentricity
139 //=======================================================================
141 Standard_Real Geom2d_Circle::Eccentricity () const
146 //=======================================================================
147 //function : FirstParameter
149 //=======================================================================
151 Standard_Real Geom2d_Circle::FirstParameter () const
156 //=======================================================================
157 //function : LastParameter
159 //=======================================================================
161 Standard_Real Geom2d_Circle::LastParameter () const
166 //=======================================================================
167 //function : IsClosed
169 //=======================================================================
171 Standard_Boolean Geom2d_Circle::IsClosed () const
173 return Standard_True;
176 //=======================================================================
177 //function : IsPeriodic
179 //=======================================================================
181 Standard_Boolean Geom2d_Circle::IsPeriodic () const
183 return Standard_True;
186 //=======================================================================
189 //=======================================================================
191 void Geom2d_Circle::D0 (const Standard_Real U,
194 P= ElCLib::CircleValue (U, pos, radius);
198 //=======================================================================
201 //=======================================================================
203 void Geom2d_Circle::D1 (const Standard_Real U, Pnt2d& P, Vec2d& V1) const
205 ElCLib::CircleD1 (U, pos, radius, P, V1);
209 //=======================================================================
212 //=======================================================================
214 void Geom2d_Circle::D2 (const Standard_Real U,
216 Vec2d& V1, Vec2d& V2) const
218 ElCLib::CircleD2 (U, pos, radius, P, V1, V2);
222 //=======================================================================
225 //=======================================================================
227 void Geom2d_Circle::D3 (const Standard_Real U,
229 Vec2d& V1, Vec2d& V2, Vec2d& V3) const
231 ElCLib::CircleD3 (U, pos, radius, P, V1, V2, V3);
235 //=======================================================================
238 //=======================================================================
240 Vec2d Geom2d_Circle::DN (const Standard_Real U, const Standard_Integer N) const
242 Standard_RangeError_Raise_if (N < 1," ");
243 return ElCLib::CircleDN (U, pos, radius, N);
247 //=======================================================================
248 //function : Transform
250 //=======================================================================
252 void Geom2d_Circle::Transform (const Trsf2d& T)
254 radius = radius * Abs(T.ScaleFactor());