0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
[occt.git] / src / GeomPlate / GeomPlate_PointConstraint.cxx
1 // Created on: 1997-05-05
2 // Created by: Jerome LEMONIER
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17
18 #include <Extrema_ExtPS.hxx>
19 #include <Extrema_POnSurf.hxx>
20 #include <Geom_Plane.hxx>
21 #include <Geom_Surface.hxx>
22 #include <GeomAdaptor_Surface.hxx>
23 #include <GeomAPI_ProjectPointOnSurf.hxx>
24 #include <GeomLProp_SLProps.hxx>
25 #include <GeomPlate_PointConstraint.hxx>
26 #include <gp_Ax3.hxx>
27 #include <gp_Pnt.hxx>
28 #include <gp_Pnt2d.hxx>
29 #include <gp_Trsf.hxx>
30 #include <gp_Vec.hxx>
31 #include <Standard_ConstructionError.hxx>
32 #include <Standard_Type.hxx>
33
34 IMPLEMENT_STANDARD_RTTIEXT(GeomPlate_PointConstraint,Standard_Transient)
35
36 //---------------------------------------------------------
37 //         Constructeurs avec un point 
38 //---------------------------------------------------------
39 GeomPlate_PointConstraint::GeomPlate_PointConstraint(const gp_Pnt& Pt, 
40                                              const Standard_Integer Order, 
41                                              const Standard_Real TolDist)
42 :
43 myOrder(Order),
44 myLProp(2,TolDist),
45 myPoint(Pt),
46 myU(0.0),
47 myV(0.0),
48 myTolDist(TolDist),
49 myTolAng(0.0),
50 myTolCurv(0.0),
51 hasPnt2dOnSurf(Standard_False)
52 { if ((myOrder>1)||(myOrder<-1))
53     throw Standard_Failure("GeomPlate_PointConstraint : the constraint must 0 or -1 with a point");
54 }
55
56 //---------------------------------------------------------
57 //         Constructeurs avec un point sur surface
58 //---------------------------------------------------------
59 GeomPlate_PointConstraint::GeomPlate_PointConstraint
60 (const Standard_Real U,
61  const Standard_Real V,
62  const Handle(Geom_Surface)& Surf,
63  const Standard_Integer Order,
64  const Standard_Real TolDist,
65  const Standard_Real TolAng,
66  const Standard_Real TolCurv)
67 :myOrder(Order),
68  myLProp(2,TolDist),
69  mySurf(Surf),
70  myU(U),
71  myV(V),
72  myTolDist(TolDist),
73  myTolAng(TolAng),
74  myTolCurv(TolCurv),
75  hasPnt2dOnSurf(Standard_False)
76
77
78   Surf->D2(myU,myV,myPoint,myD11,myD12,myD21,myD22,myD23);
79   myLProp.SetSurface(Surf);
80 }
81
82 //---------------------------------------------------------
83 // Fonction : D0
84 //---------------------------------------------------------
85 void GeomPlate_PointConstraint::D0(gp_Pnt& P) const
86 { P=myPoint;
87 }
88
89 //---------------------------------------------------------
90 // Fonction : D1
91 //---------------------------------------------------------
92 void GeomPlate_PointConstraint::D1(gp_Pnt& P,gp_Vec& V1,gp_Vec& V2) const
93 { P=myPoint;
94   V1=myD11;
95   V2=myD12;
96 }
97
98 //---------------------------------------------------------
99 // Fonction : D2
100 //---------------------------------------------------------
101 void GeomPlate_PointConstraint::D2(gp_Pnt& P,gp_Vec& V1,gp_Vec& V2,gp_Vec& V3,gp_Vec& V4,gp_Vec& V5) const
102 { P=myPoint;
103   V1=myD11;
104   V2=myD12;
105   V3=myD21;
106   V4=myD22;
107   V5=myD23;
108 }
109
110 //---------------------------------------------------------
111 // Fonction : SetG0Criterion
112 //---------------------------------------------------------
113 void GeomPlate_PointConstraint :: SetG0Criterion( const Standard_Real TolDist )
114 {
115   myTolDist = TolDist;
116 }
117 //---------------------------------------------------------
118 // Fonction : SetG1Criterion
119 //---------------------------------------------------------
120 void GeomPlate_PointConstraint :: SetG1Criterion( const Standard_Real TolAng )
121 {
122   myTolAng = TolAng;
123 }
124 //---------------------------------------------------------
125 // Fonction : SetG2Criterion
126 //---------------------------------------------------------
127 void GeomPlate_PointConstraint :: SetG2Criterion( const Standard_Real TolCurv )
128 {
129   myTolCurv = TolCurv;
130 }
131
132 //---------------------------------------------------------
133 // Fonction : G0Criterion
134 //---------------------------------------------------------
135 Standard_Real GeomPlate_PointConstraint::G0Criterion() const
136 { return myTolDist;
137 }
138
139 //---------------------------------------------------------
140 // Fonction : G1Criterion 
141 //---------------------------------------------------------
142 Standard_Real GeomPlate_PointConstraint::G1Criterion() const
143 { return myTolAng;
144 }
145
146 //---------------------------------------------------------
147 // Fonction : G2Criterion 
148 //---------------------------------------------------------
149 Standard_Real GeomPlate_PointConstraint::G2Criterion() const
150 { return myTolCurv;
151 }
152
153 //---------------------------------------------------------
154 // Fonction : Surface 
155 //---------------------------------------------------------
156 //Handle(Geom_Surface) GeomPlate_PointConstraint::Surface() const
157 //{  throw Standard_Failure("GeomPlate_PointConstraint.cxx : The surface does not exist");
158 //}
159 //------------------------------------------------------------
160 //Fonction : LPropSurf
161 //------------------------------------------------------------
162 GeomLProp_SLProps &GeomPlate_PointConstraint::LPropSurf()
163 { // if (myFrontiere.IsNull())
164   //  throw Standard_Failure("GeomPlate_CurveConstraint.cxx : Curve must be on a Surface");
165  // gp_Pnt2d P2d= myFrontiere->ChangeCurve().GetCurve()->Value(U);
166 myLProp.SetParameters(myU,myV);
167 return myLProp;
168 }
169
170
171 //------------------------------------------------------------
172 //Fonction : Order
173 //------------------------------------------------------------
174 Standard_Integer GeomPlate_PointConstraint::Order() const
175 {
176 return myOrder;
177 }
178 //------------------------------------------------------------
179 //Fonction : SetOrder
180 //------------------------------------------------------------
181 void GeomPlate_PointConstraint::SetOrder(const Standard_Integer Order) 
182 { myOrder=Order;
183 }
184
185 //------------------------------------------------------------
186 //Fonction : HasPnt2dOnSurf
187 //------------------------------------------------------------
188 Standard_Boolean GeomPlate_PointConstraint::HasPnt2dOnSurf() const
189
190   return hasPnt2dOnSurf;
191 }
192 //------------------------------------------------------------
193 //Fonction : SetPnt2dOnSurf
194 //------------------------------------------------------------
195 void GeomPlate_PointConstraint::SetPnt2dOnSurf(const gp_Pnt2d& Pnt2d) 
196
197   myPt2d=Pnt2d;
198   hasPnt2dOnSurf = Standard_True;
199 }
200 //------------------------------------------------------------
201 //Fonction : Pnt2dOnSurf
202 //------------------------------------------------------------
203 gp_Pnt2d GeomPlate_PointConstraint::Pnt2dOnSurf() const
204 { return myPt2d;
205 }
206