0026936: Drawbacks of inlining in new type system in OCCT 7.0 -- manual
[occt.git] / src / GeomPlate / GeomPlate_Surface.cxx
CommitLineData
b311480e 1// Created on: 1996-11-21
2// Created by: Joelle CHAUVET
3// Copyright (c) 1996-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 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
973c2be1 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.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
b311480e 16
7fd59977 17// Modified: Wed Mar 5 09:45:42 1997
18// by: Joelle CHAUVET
19// G1134 : new methods RealBounds and Constraints
20// Modified: Mon Jun 16 15:22:41 1997
21// by: Jerome LEMONIER
22// Correction de la methode D2 (faute de frappe dans le code)
23// Correction de la methode D1 (D0 inutile)
b311480e 24
42cf5bc1 25#include <Geom_Curve.hxx>
26#include <Geom_Geometry.hxx>
27#include <Geom_Surface.hxx>
28#include <Geom_UndefinedDerivative.hxx>
29#include <Geom_UndefinedValue.hxx>
30#include <GeomPlate_Surface.hxx>
31#include <gp_GTrsf2d.hxx>
32#include <gp_Pnt.hxx>
33#include <gp_Trsf.hxx>
34#include <gp_Vec.hxx>
7fd59977 35#include <gp_XY.hxx>
42cf5bc1 36#include <Plate_Plate.hxx>
37#include <Standard_NoSuchObject.hxx>
38#include <Standard_RangeError.hxx>
39#include <Standard_Type.hxx>
7fd59977 40
41//=======================================================================
42//function : GeomPlate_Surface
43//purpose :
44//=======================================================================
7fd59977 45GeomPlate_Surface::GeomPlate_Surface(const Handle(Geom_Surface)& Surfinit,const Plate_Plate& Surfinter) : mySurfinter(Surfinter),mySurfinit(Surfinit)
46{
47}
48
49//=======================================================================
50//function : UReverse
51//purpose :
52//=======================================================================
53
54void GeomPlate_Surface::UReverse()
55{
56 //Standard_Failure::Raise("UReverse");
57}
58
59
60//=======================================================================
61//function : UReversedParameter
62//purpose :
63//=======================================================================
64
65Standard_Real GeomPlate_Surface::UReversedParameter(const Standard_Real U) const
66{ //Standard_Failure::Raise("UReversedParameter");
67 return (-U);
68}
69
70
71//=======================================================================
72//function : VReverse
73//purpose :
74//=======================================================================
75
76void GeomPlate_Surface::VReverse()
77{ //Standard_Failure::Raise("VReverse");
78}
79
80
81//=======================================================================
82//function : VReversedParameter
83//purpose :
84//=======================================================================
85
86Standard_Real GeomPlate_Surface::VReversedParameter(const Standard_Real V) const
87{ //Standard_Failure::Raise("VReversedParameter");
88 return (-V);
89}
90
91
92//=======================================================================
93//function : TransformParameters
94//purpose :
95//=======================================================================
96
97//void GeomPlate_Surface::TransformParameters(Standard_Real& U, Standard_Real& V, const gp_Trsf& T) const
98void GeomPlate_Surface::TransformParameters(Standard_Real& , Standard_Real& , const gp_Trsf& ) const
99{//Standard_Failure::Raise("TransformParameters");
100}
101
102
103//=======================================================================
104//function : ParametricTransformation
105//purpose :
106//=======================================================================
107
108//gp_GTrsf2d GeomPlate_Surface::ParametricTransformation(const gp_Trsf& T) const
109gp_GTrsf2d GeomPlate_Surface::ParametricTransformation(const gp_Trsf& ) const
110{//Standard_Failure::Raise("ParametricTransformation");
111 return gp_GTrsf2d();
112}
113
114
115//=======================================================================
116//function : Bounds
117//purpose :
118//=======================================================================
119
120void GeomPlate_Surface::Bounds(Standard_Real& U1, Standard_Real& U2, Standard_Real& V1, Standard_Real& V2) const
121{
122 if (mySurfinit->DynamicType() == STANDARD_TYPE(GeomPlate_Surface))
123 mySurfinit->Bounds(U1,U2,V1,V2);
124 else
125 {U1=myUmin;U2=myUmax;V1=myVmin;V2=myVmax;}
126}
127
128
129//=======================================================================
130//function : IsUClosed
131//purpose :
132//=======================================================================
133
134Standard_Boolean GeomPlate_Surface::IsUClosed() const
135{ //Standard_Failure::Raise("IsUClosed(");
136 //return 1;
137 return 0;
138}
139
140
141//=======================================================================
142//function : IsVClosed
143//purpose :
144//=======================================================================
145
146Standard_Boolean GeomPlate_Surface::IsVClosed() const
147{ //Standard_Failure::Raise("IsVClosed(");
148 //return 1;
149 return 0;
150}
151
152
153//=======================================================================
154//function : IsUPeriodic
155//purpose :
156//=======================================================================
157
158Standard_Boolean GeomPlate_Surface::IsUPeriodic() const
159{
160 return Standard_False;
161}
162
163
164//=======================================================================
165//function : UPeriod
166//purpose :
167//=======================================================================
168
169Standard_Real GeomPlate_Surface::UPeriod() const
170{
171 return Standard_False;
172}
173
174
175//=======================================================================
176//function : IsVPeriodic
177//purpose :
178//=======================================================================
179
180Standard_Boolean GeomPlate_Surface::IsVPeriodic() const
181{
182 return Standard_False;
183}
184
185
186//=======================================================================
187//function : VPeriod
188//purpose :
189//=======================================================================
190
191Standard_Real GeomPlate_Surface::VPeriod() const
192{
193 return Standard_False;
194}
195
196
197//=======================================================================
198//function : UIso
199//purpose :
200//=======================================================================
201
202//Handle(Geom_Curve) GeomPlate_Surface::UIso(const Standard_Real U) const
203Handle(Geom_Curve) GeomPlate_Surface::UIso(const Standard_Real ) const
204{ //Standard_Failure::Raise("UIso");
205 return Handle(Geom_Curve)();
206}
207
208
209//=======================================================================
210//function : VIso
211//purpose :
212//=======================================================================
213
214//Handle(Geom_Curve) GeomPlate_Surface::VIso(const Standard_Real V) const
215Handle(Geom_Curve) GeomPlate_Surface::VIso(const Standard_Real ) const
216{ //Standard_Failure::Raise("VIso");
217 return Handle(Geom_Curve)();
218}
219
220
221//=======================================================================
222//function : Continuity
223//purpose :
224//=======================================================================
225
226GeomAbs_Shape GeomPlate_Surface::Continuity() const
227{ //Standard_Failure::Raise("Continuity()");
228 return GeomAbs_Shape();
229
230}
231
232
233//=======================================================================
234//function : IsCNu
235//purpose :
236//=======================================================================
237
238//Standard_Boolean GeomPlate_Surface::IsCNu(const Standard_Integer N) const
239Standard_Boolean GeomPlate_Surface::IsCNu(const Standard_Integer ) const
240{ Standard_Failure::Raise("IsCNu");
241 return 1;
242}
243
244
245//=======================================================================
246//function : IsCNv
247//purpose :
248//=======================================================================
249
250//Standard_Boolean GeomPlate_Surface::IsCNv(const Standard_Integer N) const
251Standard_Boolean GeomPlate_Surface::IsCNv(const Standard_Integer ) const
252{ Standard_Failure::Raise("IsCNv");
253 return 1;
254}
255
256
257//=======================================================================
258//function : D0
259//purpose :
260//=======================================================================
261
262void GeomPlate_Surface::D0(const Standard_Real U, const Standard_Real V, gp_Pnt& P) const
263{
264 gp_XY P1(U,V);
265 gp_Pnt P2;
266 mySurfinit->D0(U,V,P2);
267 gp_XYZ P3;//=mySurfinter.Evaluate(P1);
268 P3=mySurfinter.Evaluate(P1);
269 for (Standard_Integer i=1; i<=3; i++)
270 {
271 P.SetCoord(i,P3.Coord(i)+P2.Coord(i));
272 }
273}
274
275
276//=======================================================================
277//function : D1
278//purpose :
279//=======================================================================
280
281void GeomPlate_Surface::D1(const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) const
282{
283 gp_XY P1(U,V);
284 gp_Pnt P2;
285 D0(U,V,P);
286 gp_Vec V1U,V1V;
287 mySurfinit->D1(U,V,P2,V1U,V1V);
288 gp_XYZ V2U=mySurfinter.EvaluateDerivative(P1,1,0);
289 gp_XYZ V2V=mySurfinter.EvaluateDerivative(P1,0,1);
290 for (Standard_Integer i=1; i<=3; i++)
291 {
292 D1U.SetCoord(i,V1U.Coord(i)+V2U.Coord(i));
293 D1V.SetCoord(i,V1V.Coord(i)+V2V.Coord(i));
294 }
295}
296
297
298//=======================================================================
299//function : D2
300//purpose :
301//=======================================================================
302
303void GeomPlate_Surface::D2(const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV) const
304{
305 gp_XY P1(U,V);
306 gp_Pnt P2;
307
308 gp_Vec V1U,V1V,V1UV,vv,v;
309 D1(U,V,P,D1U,D1V);
310 mySurfinit->D2(U,V,P2,vv,v,V1U,V1V,V1UV);
311 gp_XYZ V2U=mySurfinter.EvaluateDerivative(P1,2,0);
312 gp_XYZ V2V=mySurfinter.EvaluateDerivative(P1,0,2);
313 gp_XYZ V2UV=mySurfinter.EvaluateDerivative(P1,1,1);
314 for (Standard_Integer i=1; i<=3; i++)
315 {
316 D2U.SetCoord(i,V1U.Coord(i)+V2U.Coord(i));
317 D2V.SetCoord(i,V1V.Coord(i)+V2V.Coord(i));
318 D2UV.SetCoord(i,V1UV.Coord(i)+V2UV.Coord(i));
319 }
320}
321
322
323//=======================================================================
324//function : D3
325//purpose :
326//=======================================================================
327
328//void GeomPlate_Surface::D3(const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV) const
329void GeomPlate_Surface::D3(const Standard_Real , const Standard_Real , gp_Pnt& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& , gp_Vec& ) const
330{ Standard_Failure::Raise("D3");
331}
332
333
334//=======================================================================
335//function : DN
336//purpose :
337//=======================================================================
338
339//gp_Vec GeomPlate_Surface::DN(const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv) const
340gp_Vec GeomPlate_Surface::DN(const Standard_Real , const Standard_Real , const Standard_Integer , const Standard_Integer ) const
341{ Standard_Failure::Raise("DN");
342 return gp_Vec();
343}
344
345
346//=======================================================================
347//function : Copy
348//purpose :
349//=======================================================================
350
351Handle(Geom_Geometry) GeomPlate_Surface::Copy() const
352{
353 Handle(GeomPlate_Surface) GPS
354 = new GeomPlate_Surface(mySurfinit,mySurfinter);
355 return GPS;
356}
357
358
359//=======================================================================
360//function : Transform
361//purpose :
362//=======================================================================
363
364//void GeomPlate_Surface::Transform(const gp_Trsf& T)
365void GeomPlate_Surface::Transform(const gp_Trsf& )
366{ //Standard_Failure::Raise("Transform");
367}
368
369//=======================================================================
370//function : CallSurfinit
371//purpose :
372//=======================================================================
373
374Handle(Geom_Surface) GeomPlate_Surface::CallSurfinit() const
375
376{
377 return mySurfinit;
378}
379
380
381//=======================================================================
382//function : SetBounds
383//purpose :
384//=======================================================================
385
386void GeomPlate_Surface::SetBounds(const Standard_Real Umin, const Standard_Real Umax, const Standard_Real Vmin, const Standard_Real Vmax)
387{
388 if ((Umin>Umax) || (Vmin>Vmax)) Standard_Failure::Raise("Bounds haven't the good sense");
7fd59977 389 if ((Umin==Umax) || (Vmin==Vmax)) Standard_Failure::Raise("Bounds are equal");
2a8523ac 390 myUmin=Umin;myUmax=Umax;myVmin=Vmin;myVmax=Vmax;
7fd59977 391}
392
393
394//=======================================================================
395//function : RealBounds
396//purpose :
397//=======================================================================
398
399void GeomPlate_Surface::RealBounds(Standard_Real& U1, Standard_Real& U2, Standard_Real& V1, Standard_Real& V2) const
400{
401 mySurfinter.UVBox(U1,U2,V1,V2);
402}
403
404
405//=======================================================================
406//function : Constraints
407//purpose :
408//=======================================================================
409
410void GeomPlate_Surface::Constraints(TColgp_SequenceOfXY& Seq) const
411{
412 mySurfinter.UVConstraints(Seq);
413}