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