1 // File: gce_MakeElips2d.cxx
2 // Created: Wed Sep 2 12:35:36 1992
6 #include <gce_MakeElips2d.ixx>
8 #include <gp_Lin2d.hxx>
9 #include <StdFail_NotDone.hxx>
11 //=========================================================================
12 // Creation d une Ellipse 2d de gp de centre <Center> et de sommets +
14 // <CenterS1> donne le grand axe . +
15 // <S1> donne le grand rayon et <S2> le petit rayon. +
16 //=========================================================================
18 gce_MakeElips2d::gce_MakeElips2d(const gp_Pnt2d& S1 ,
20 const gp_Pnt2d& Center )
22 Standard_Real D1 = S1.Distance(Center);
23 gp_Dir2d XAxis(gp_XY(S1.XY()-Center.XY()));
24 gp_Dir2d YAxis(gp_XY(S2.XY()-Center.XY()));
25 Standard_Real D2 = gp_Lin2d(Center,XAxis).Distance(S2);
26 if (D1 < D2) { TheError = gce_InvertAxis; }
27 else if (D2 < gp::Resolution()) { TheError = gce_NullAxis; }
29 TheElips2d = gp_Elips2d(gp_Ax22d(Center,XAxis,YAxis),D1,D2);
34 gce_MakeElips2d::gce_MakeElips2d(const gp_Ax2d& MajorAxis ,
35 const Standard_Real MajorRadius ,
36 const Standard_Real MinorRadius ,
37 const Standard_Boolean Sense )
39 if (MajorRadius < 0.0) { TheError = gce_NegativeRadius; }
40 else if (MajorRadius < MinorRadius) { TheError = gce_InvertRadius; }
42 TheElips2d = gp_Elips2d(MajorAxis,MajorRadius,MinorRadius,Sense);
47 gce_MakeElips2d::gce_MakeElips2d(const gp_Ax22d& A ,
48 const Standard_Real MajorRadius ,
49 const Standard_Real MinorRadius )
51 if (MajorRadius < 0.0) { TheError = gce_NegativeRadius; }
52 else if (MajorRadius < MinorRadius) { TheError = gce_InvertRadius; }
54 TheElips2d = gp_Elips2d(A,MajorRadius,MinorRadius);
59 const gp_Elips2d& gce_MakeElips2d::Value() const
61 StdFail_NotDone_Raise_if(!TheError == gce_Done,"");
65 const gp_Elips2d& gce_MakeElips2d::Operator() const
70 gce_MakeElips2d::operator gp_Elips2d() const