b311480e |
1 | // Created on: 1993-03-10 |
2 | // Created by: JCV |
3 | // Copyright (c) 1993-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 | // ******************************************************************* |
7fd59977 |
18 | // ******************************************************************* |
19 | |
42cf5bc1 |
20 | #include <ElCLib.hxx> |
21 | #include <Geom_BezierSurface.hxx> |
22 | #include <Geom_BSplineSurface.hxx> |
23 | #include <Geom_ConicalSurface.hxx> |
24 | #include <Geom_Curve.hxx> |
25 | #include <Geom_CylindricalSurface.hxx> |
7fd59977 |
26 | #include <Geom_Geometry.hxx> |
42cf5bc1 |
27 | #include <Geom_OffsetSurface.hxx> |
7fd59977 |
28 | #include <Geom_Plane.hxx> |
42cf5bc1 |
29 | #include <Geom_RectangularTrimmedSurface.hxx> |
7fd59977 |
30 | #include <Geom_SphericalSurface.hxx> |
42cf5bc1 |
31 | #include <Geom_Surface.hxx> |
7fd59977 |
32 | #include <Geom_SurfaceOfLinearExtrusion.hxx> |
42cf5bc1 |
33 | #include <Geom_SurfaceOfRevolution.hxx> |
34 | #include <Geom_ToroidalSurface.hxx> |
35 | #include <Geom_TrimmedCurve.hxx> |
36 | #include <Geom_UndefinedDerivative.hxx> |
37 | #include <Geom_UndefinedValue.hxx> |
38 | #include <gp_GTrsf2d.hxx> |
39 | #include <gp_Pnt.hxx> |
40 | #include <gp_Trsf.hxx> |
41 | #include <gp_Vec.hxx> |
7fd59977 |
42 | #include <Precision.hxx> |
42cf5bc1 |
43 | #include <Standard_ConstructionError.hxx> |
44 | #include <Standard_NoSuchObject.hxx> |
45 | #include <Standard_RangeError.hxx> |
46 | #include <Standard_Type.hxx> |
7fd59977 |
47 | |
92efcf78 |
48 | IMPLEMENT_STANDARD_RTTIEXT(Geom_RectangularTrimmedSurface,Geom_BoundedSurface) |
49 | |
7fd59977 |
50 | typedef Geom_RectangularTrimmedSurface RectangularTrimmedSurface; |
7fd59977 |
51 | typedef gp_Ax1 Ax1; |
52 | typedef gp_Ax2 Ax2; |
53 | typedef gp_Pnt Pnt; |
54 | typedef gp_Trsf Trsf; |
55 | typedef gp_Vec Vec; |
56 | |
7fd59977 |
57 | //======================================================================= |
58 | //function : Copy |
59 | //purpose : |
60 | //======================================================================= |
61 | |
62 | Handle(Geom_Geometry) Geom_RectangularTrimmedSurface::Copy () const { |
63 | |
c04c30b3 |
64 | Handle(Geom_RectangularTrimmedSurface) S; |
7fd59977 |
65 | |
66 | if ( isutrimmed && isvtrimmed ) |
67 | S = new RectangularTrimmedSurface (basisSurf, |
68 | utrim1 , utrim2, |
69 | vtrim1 , vtrim2, |
70 | Standard_True , Standard_True ); |
71 | else if ( isutrimmed) |
72 | S = new RectangularTrimmedSurface (basisSurf, |
73 | utrim1 , utrim2, |
74 | Standard_True, Standard_True ); |
75 | else if (isvtrimmed) |
76 | S = new RectangularTrimmedSurface (basisSurf, |
77 | vtrim1 , vtrim2, |
78 | Standard_False , Standard_True ); |
79 | |
80 | return S; |
81 | } |
82 | |
83 | |
84 | //======================================================================= |
85 | //function : Geom_RectangularTrimmedSurface |
86 | //purpose : |
87 | //======================================================================= |
88 | |
89 | Geom_RectangularTrimmedSurface::Geom_RectangularTrimmedSurface ( |
90 | |
c04c30b3 |
91 | const Handle(Geom_Surface)& S, |
7fd59977 |
92 | const Standard_Real U1, |
93 | const Standard_Real U2, |
94 | const Standard_Real V1, |
95 | const Standard_Real V2, |
96 | const Standard_Boolean USense, |
97 | const Standard_Boolean VSense) |
98 | |
99 | : utrim1 (U1), |
100 | vtrim1(V1), |
101 | utrim2 (U2), |
102 | vtrim2 (V2), |
103 | isutrimmed (Standard_True), |
104 | isvtrimmed (Standard_True) |
105 | { |
106 | |
107 | // kill trimmed basis surfaces |
108 | Handle(Geom_RectangularTrimmedSurface) T = |
109 | Handle(Geom_RectangularTrimmedSurface)::DownCast(S); |
110 | if (!T.IsNull()) |
c04c30b3 |
111 | basisSurf = Handle(Geom_Surface)::DownCast(T->BasisSurface()->Copy()); |
7fd59977 |
112 | else |
c04c30b3 |
113 | basisSurf = Handle(Geom_Surface)::DownCast(S->Copy()); |
7fd59977 |
114 | |
115 | Handle(Geom_OffsetSurface) O = |
116 | Handle(Geom_OffsetSurface)::DownCast(basisSurf); |
117 | if (!O.IsNull()) |
118 | { |
119 | Handle(Geom_RectangularTrimmedSurface) S2 = |
120 | new Geom_RectangularTrimmedSurface( O->BasisSurface(),U1,U2, V1, V2, USense, VSense); |
121 | Handle(Geom_OffsetSurface) OS = new Geom_OffsetSurface(S2, O->Offset()); |
c04c30b3 |
122 | basisSurf = Handle(Geom_Surface)::DownCast(OS); |
7fd59977 |
123 | } |
124 | |
125 | SetTrim( U1, U2, V1, V2, USense, VSense); |
126 | } |
127 | |
128 | |
129 | //======================================================================= |
130 | //function : Geom_RectangularTrimmedSurface |
131 | //purpose : |
132 | //======================================================================= |
133 | |
134 | Geom_RectangularTrimmedSurface::Geom_RectangularTrimmedSurface ( |
135 | |
136 | const Handle(Geom_Surface)& S, |
137 | const Standard_Real Param1, |
138 | const Standard_Real Param2, |
139 | const Standard_Boolean UTrim, |
140 | const Standard_Boolean Sense |
141 | ) { |
142 | |
143 | // kill trimmed basis surfaces |
144 | Handle(Geom_RectangularTrimmedSurface) T = |
145 | Handle(Geom_RectangularTrimmedSurface)::DownCast(S); |
146 | if (!T.IsNull()) |
c04c30b3 |
147 | basisSurf = Handle(Geom_Surface)::DownCast(T->BasisSurface()->Copy()); |
7fd59977 |
148 | else |
c04c30b3 |
149 | basisSurf = Handle(Geom_Surface)::DownCast(S->Copy()); |
7fd59977 |
150 | |
151 | Handle(Geom_OffsetSurface) O = |
152 | Handle(Geom_OffsetSurface)::DownCast(basisSurf); |
153 | if (!O.IsNull()) |
154 | { |
155 | Handle(Geom_RectangularTrimmedSurface) S2 = |
156 | new Geom_RectangularTrimmedSurface( O->BasisSurface(),Param1,Param2, UTrim, Sense); |
157 | Handle(Geom_OffsetSurface) OS = new Geom_OffsetSurface(S2, O->Offset()); |
c04c30b3 |
158 | basisSurf = Handle(Geom_Surface)::DownCast(OS); |
7fd59977 |
159 | } |
160 | |
161 | SetTrim(Param1, Param2, UTrim, Sense); |
162 | } |
163 | |
164 | |
165 | //======================================================================= |
166 | //function : SetTrim |
167 | //purpose : |
168 | //======================================================================= |
169 | |
170 | void Geom_RectangularTrimmedSurface::SetTrim (const Standard_Real U1, |
171 | const Standard_Real U2, |
172 | const Standard_Real V1, |
173 | const Standard_Real V2, |
174 | const Standard_Boolean USense, |
175 | const Standard_Boolean VSense ) { |
176 | |
177 | SetTrim( U1, U2, V1, V2, Standard_True, Standard_True, USense, VSense); |
178 | } |
179 | |
180 | |
181 | |
182 | //======================================================================= |
183 | //function : SetTrim |
184 | //purpose : |
185 | //======================================================================= |
186 | |
187 | void Geom_RectangularTrimmedSurface::SetTrim (const Standard_Real Param1, |
188 | const Standard_Real Param2, |
189 | const Standard_Boolean UTrim, |
190 | const Standard_Boolean Sense ) { |
191 | |
192 | // dummy arguments to call general SetTrim |
193 | Standard_Real dummy_a = 0.; |
194 | Standard_Real dummy_b = 0.; |
195 | Standard_Boolean dummy_Sense = Standard_True; |
196 | |
197 | if ( UTrim) { |
198 | SetTrim( Param1 , Param2 , |
199 | dummy_a , dummy_b , |
200 | Standard_True , Standard_False, |
201 | Sense , dummy_Sense ); |
202 | } |
203 | else { |
204 | SetTrim( dummy_a , dummy_b , |
205 | Param1 , Param2 , |
206 | Standard_False, Standard_True, |
207 | dummy_Sense , Sense ); |
208 | } |
209 | } |
210 | |
211 | |
212 | //======================================================================= |
213 | //function : SetTrim |
214 | //purpose : |
215 | //======================================================================= |
216 | |
217 | void Geom_RectangularTrimmedSurface::SetTrim(const Standard_Real U1, |
218 | const Standard_Real U2, |
219 | const Standard_Real V1, |
220 | const Standard_Real V2, |
221 | const Standard_Boolean UTrim, |
222 | const Standard_Boolean VTrim, |
223 | const Standard_Boolean USense, |
224 | const Standard_Boolean VSense) { |
225 | |
226 | Standard_Boolean UsameSense = Standard_True; |
227 | Standard_Boolean VsameSense = Standard_True; |
228 | Standard_Real Udeb, Ufin, Vdeb, Vfin; |
229 | |
230 | basisSurf->Bounds(Udeb, Ufin, Vdeb, Vfin); |
231 | |
232 | // Trimming the U-Direction |
233 | isutrimmed = UTrim; |
234 | if (!UTrim) { |
235 | utrim1 = Udeb; |
236 | utrim2 = Ufin; |
237 | } |
238 | else { |
239 | if ( U1 == U2) |
240 | Standard_ConstructionError::Raise |
241 | ("Geom_RectangularTrimmedSurface::U1==U2"); |
242 | |
243 | if (basisSurf->IsUPeriodic()) { |
244 | UsameSense = USense; |
245 | |
246 | // set uTrim1 in the range Udeb , Ufin |
247 | // set uTrim2 in the range uTrim1 , uTrim1 + Period() |
248 | utrim1 = U1; |
249 | utrim2 = U2; |
250 | ElCLib::AdjustPeriodic(Udeb, Ufin, |
251 | Min(Abs(utrim2-utrim1)/2,Precision::PConfusion()), |
252 | utrim1, utrim2); |
253 | } |
254 | else { |
255 | if (U1 < U2) { |
256 | UsameSense = USense; |
257 | utrim1 = U1; |
258 | utrim2 = U2; |
259 | } |
260 | else { |
261 | UsameSense = !USense; |
262 | utrim1 = U2; |
263 | utrim2 = U1; |
264 | } |
265 | |
266 | if ((Udeb-utrim1 > Precision::PConfusion()) || |
267 | (utrim2-Ufin > Precision::PConfusion())) |
268 | Standard_ConstructionError::Raise |
269 | ("Geom_RectangularTrimmedSurface::U parameters out of range"); |
270 | |
271 | } |
272 | } |
273 | |
274 | // Trimming the V-Direction |
275 | isvtrimmed = VTrim; |
276 | if (!VTrim) { |
277 | vtrim1 = Vdeb; |
278 | vtrim2 = Vfin; |
279 | } |
280 | else { |
281 | if ( V1 == V2) |
282 | Standard_ConstructionError::Raise |
283 | ("Geom_RectangularTrimmedSurface::V1==V2"); |
284 | |
285 | if (basisSurf->IsVPeriodic()) { |
286 | VsameSense = VSense; |
287 | |
288 | // set vTrim1 in the range Vdeb , Vfin |
289 | // set vTrim2 in the range vTrim1 , vTrim1 + Period() |
290 | vtrim1 = V1; |
291 | vtrim2 = V2; |
292 | ElCLib::AdjustPeriodic(Vdeb, Vfin, |
293 | Min(Abs(vtrim2-vtrim1)/2,Precision::PConfusion()), |
294 | vtrim1, vtrim2); |
295 | } |
296 | else { |
297 | if (V1 < V2) { |
298 | VsameSense = VSense; |
299 | vtrim1 = V1; |
300 | vtrim2 = V2; |
301 | } |
302 | else { |
303 | VsameSense = !VSense; |
304 | vtrim1 = V2; |
305 | vtrim2 = V1; |
306 | } |
307 | |
308 | if ((Vdeb-vtrim1 > Precision::PConfusion()) || |
309 | (vtrim2-Vfin > Precision::PConfusion())) |
310 | Standard_ConstructionError::Raise |
311 | ("Geom_RectangularTrimmedSurface::V parameters out of range"); |
312 | |
313 | } |
314 | } |
315 | |
316 | if (!UsameSense) UReverse(); |
317 | if (!VsameSense) VReverse(); |
318 | } |
319 | |
320 | |
321 | //======================================================================= |
322 | //function : UReverse |
323 | //purpose : |
324 | //======================================================================= |
325 | |
326 | void Geom_RectangularTrimmedSurface::UReverse () |
327 | { |
328 | Standard_Real U1 = basisSurf->UReversedParameter(utrim2); |
329 | Standard_Real U2 = basisSurf->UReversedParameter(utrim1); |
330 | basisSurf->UReverse(); |
331 | SetTrim(U1,U2,vtrim1,vtrim2, |
332 | isutrimmed,isvtrimmed, |
333 | Standard_True,Standard_True); |
334 | } |
335 | |
336 | |
337 | //======================================================================= |
338 | //function : UReversedParameter |
339 | //purpose : |
340 | //======================================================================= |
341 | |
342 | Standard_Real Geom_RectangularTrimmedSurface::UReversedParameter( const Standard_Real U) const { |
343 | |
344 | return basisSurf->UReversedParameter(U); |
345 | } |
346 | |
347 | |
348 | //======================================================================= |
349 | //function : VReverse |
350 | //purpose : |
351 | //======================================================================= |
352 | |
353 | void Geom_RectangularTrimmedSurface::VReverse () |
354 | { |
355 | Standard_Real V1 = basisSurf->VReversedParameter(vtrim2); |
356 | Standard_Real V2 = basisSurf->VReversedParameter(vtrim1); |
357 | basisSurf->VReverse(); |
358 | SetTrim(utrim1,utrim2,V1,V2, |
359 | isutrimmed,isvtrimmed, |
360 | Standard_True,Standard_True); |
361 | } |
362 | |
363 | |
364 | //======================================================================= |
365 | //function : VReversedParameter |
366 | //purpose : |
367 | //======================================================================= |
368 | |
369 | Standard_Real Geom_RectangularTrimmedSurface::VReversedParameter( const Standard_Real V) const { |
370 | |
371 | return basisSurf->VReversedParameter( V); |
372 | } |
373 | |
374 | |
375 | //======================================================================= |
376 | //function : BasisSurface |
377 | //purpose : |
378 | //======================================================================= |
379 | |
c04c30b3 |
380 | Handle(Geom_Surface) Geom_RectangularTrimmedSurface::BasisSurface () const |
7fd59977 |
381 | { |
382 | return basisSurf; |
383 | } |
384 | |
385 | |
386 | //======================================================================= |
387 | //function : Continuity |
388 | //purpose : |
389 | //======================================================================= |
390 | |
391 | GeomAbs_Shape Geom_RectangularTrimmedSurface::Continuity () const { |
392 | |
393 | return basisSurf->Continuity(); |
394 | } |
395 | |
396 | |
397 | //======================================================================= |
398 | //function : D0 |
399 | //purpose : |
400 | //======================================================================= |
401 | |
402 | void Geom_RectangularTrimmedSurface::D0 |
403 | (const Standard_Real U, const Standard_Real V, |
404 | Pnt& P ) const { |
405 | |
406 | basisSurf->D0 (U, V, P); |
407 | } |
408 | |
409 | |
410 | //======================================================================= |
411 | //function : D1 |
412 | //purpose : |
413 | //======================================================================= |
414 | |
415 | void Geom_RectangularTrimmedSurface::D1 |
416 | (const Standard_Real U, const Standard_Real V, |
417 | Pnt& P, |
418 | Vec& D1U, Vec& D1V) const { |
419 | |
420 | basisSurf->D1 (U, V, P, D1U, D1V); |
421 | } |
422 | |
423 | |
424 | //======================================================================= |
425 | //function : D2 |
426 | //purpose : |
427 | //======================================================================= |
428 | |
429 | void Geom_RectangularTrimmedSurface::D2 |
430 | (const Standard_Real U, const Standard_Real V, |
431 | Pnt& P, |
432 | Vec& D1U, Vec& D1V, |
433 | Vec& D2U, Vec& D2V, Vec& D2UV) const { |
434 | |
435 | basisSurf->D2 (U, V, P, D1U, D1V, D2U, D2V, D2UV); |
436 | } |
437 | |
438 | |
439 | //======================================================================= |
440 | //function : D3 |
441 | //purpose : |
442 | //======================================================================= |
443 | |
444 | void Geom_RectangularTrimmedSurface::D3 |
445 | (const Standard_Real U, const Standard_Real V, |
446 | Pnt& P, |
447 | Vec& D1U, Vec& D1V, |
448 | Vec& D2U, Vec& D2V, Vec& D2UV, |
449 | Vec& D3U, Vec& D3V, Vec& D3UUV, Vec& D3UVV) const { |
450 | |
451 | basisSurf->D3 (U, V, P, D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV); |
452 | } |
453 | |
454 | |
455 | //======================================================================= |
456 | //function : DN |
457 | //purpose : |
458 | //======================================================================= |
459 | |
460 | Vec Geom_RectangularTrimmedSurface::DN |
461 | (const Standard_Real U , const Standard_Real V, |
462 | const Standard_Integer Nu, const Standard_Integer Nv) const { |
463 | |
464 | return basisSurf->DN (U, V, Nu, Nv); |
465 | } |
466 | |
467 | |
468 | //======================================================================= |
469 | //function : Bounds |
470 | //purpose : |
471 | //======================================================================= |
472 | |
473 | void Geom_RectangularTrimmedSurface::Bounds (Standard_Real& U1, |
474 | Standard_Real& U2, |
475 | Standard_Real& V1, |
476 | Standard_Real& V2) const { |
477 | |
478 | U1 = utrim1; |
479 | U2 = utrim2; |
480 | V1 = vtrim1; |
481 | V2 = vtrim2; |
482 | } |
483 | |
484 | |
485 | //======================================================================= |
486 | //function : UIso |
487 | //purpose : |
488 | //======================================================================= |
489 | |
490 | Handle(Geom_Curve) Geom_RectangularTrimmedSurface::UIso (const Standard_Real U) const { |
491 | |
492 | Handle(Geom_Curve) C = basisSurf->UIso (U); |
493 | |
494 | if ( isvtrimmed) { |
495 | Handle(Geom_TrimmedCurve) Ct; |
496 | Ct = new Geom_TrimmedCurve (C, vtrim1, vtrim2, Standard_True); |
497 | return Ct; |
498 | } |
499 | else { |
500 | return C; |
501 | } |
502 | } |
503 | |
504 | |
505 | //======================================================================= |
506 | //function : VIso |
507 | //purpose : |
508 | //======================================================================= |
509 | |
510 | Handle(Geom_Curve) Geom_RectangularTrimmedSurface::VIso (const Standard_Real V) const { |
511 | |
512 | Handle(Geom_Curve) C = basisSurf->VIso (V); |
513 | |
514 | if ( isutrimmed) { |
515 | Handle(Geom_TrimmedCurve) Ct; |
516 | Ct = new Geom_TrimmedCurve (C, utrim1, utrim2, Standard_True); |
517 | return Ct; |
518 | } |
519 | else { |
520 | return C; |
521 | } |
522 | } |
523 | |
524 | |
525 | //======================================================================= |
526 | //function : IsCNu |
527 | //purpose : |
528 | //======================================================================= |
529 | |
530 | Standard_Boolean Geom_RectangularTrimmedSurface::IsCNu (const Standard_Integer N) const { |
531 | |
532 | Standard_RangeError_Raise_if (N < 0," "); |
533 | return basisSurf->IsCNu (N); |
534 | } |
535 | |
536 | |
537 | //======================================================================= |
538 | //function : IsCNv |
539 | //purpose : |
540 | //======================================================================= |
541 | |
542 | Standard_Boolean Geom_RectangularTrimmedSurface::IsCNv (const Standard_Integer N) const { |
543 | |
544 | Standard_RangeError_Raise_if (N < 0," "); |
545 | return basisSurf->IsCNv (N); |
546 | } |
547 | |
548 | |
549 | //======================================================================= |
550 | //function : Transform |
551 | //purpose : |
552 | //======================================================================= |
553 | |
554 | void Geom_RectangularTrimmedSurface::Transform (const Trsf& T) |
555 | { |
556 | basisSurf->Transform (T); |
557 | basisSurf->TransformParameters(utrim1,vtrim1,T); |
558 | basisSurf->TransformParameters(utrim2,vtrim2,T); |
559 | } |
560 | |
561 | |
562 | //======================================================================= |
563 | //function : IsUPeriodic |
564 | //purpose : |
565 | // 24/11/98: pmn : Compare la periode a la longeur de l'intervalle |
566 | //======================================================================= |
567 | |
568 | Standard_Boolean Geom_RectangularTrimmedSurface::IsUPeriodic () const |
569 | { |
570 | if (basisSurf->IsUPeriodic() && !isutrimmed) |
571 | return Standard_True; |
572 | return Standard_False; |
573 | } |
574 | |
575 | |
576 | //======================================================================= |
577 | //function : UPeriod |
578 | //purpose : |
579 | //======================================================================= |
580 | |
581 | Standard_Real Geom_RectangularTrimmedSurface::UPeriod() const |
582 | { |
583 | return basisSurf->UPeriod(); |
584 | } |
585 | |
586 | |
587 | //======================================================================= |
588 | //function : IsVPeriodic |
589 | //purpose : |
590 | //======================================================================= |
591 | |
592 | Standard_Boolean Geom_RectangularTrimmedSurface::IsVPeriodic () const |
593 | { |
594 | if (basisSurf->IsVPeriodic() && !isvtrimmed) |
595 | return Standard_True; |
596 | return Standard_False; |
597 | } |
598 | |
599 | |
600 | //======================================================================= |
601 | //function : VPeriod |
602 | //purpose : |
603 | //======================================================================= |
604 | |
605 | Standard_Real Geom_RectangularTrimmedSurface::VPeriod() const |
606 | { |
607 | return basisSurf->VPeriod(); |
608 | } |
609 | |
610 | |
611 | //======================================================================= |
612 | //function : IsUClosed |
613 | //purpose : |
614 | //======================================================================= |
615 | |
616 | Standard_Boolean Geom_RectangularTrimmedSurface::IsUClosed () const { |
617 | |
618 | if (isutrimmed) |
619 | return Standard_False; |
620 | else |
621 | return basisSurf->IsUClosed(); |
622 | } |
623 | |
624 | |
625 | //======================================================================= |
626 | //function : IsVClosed |
627 | //purpose : |
628 | //======================================================================= |
629 | |
630 | Standard_Boolean Geom_RectangularTrimmedSurface::IsVClosed () const { |
631 | |
632 | if (isvtrimmed) |
633 | return Standard_False; |
634 | else |
635 | return basisSurf->IsVClosed(); |
636 | } |
637 | |
638 | //======================================================================= |
639 | //function : TransformParameters |
640 | //purpose : |
641 | //======================================================================= |
642 | |
643 | void Geom_RectangularTrimmedSurface::TransformParameters(Standard_Real& U, |
644 | Standard_Real& V, |
645 | const gp_Trsf& T) |
646 | const |
647 | { |
648 | basisSurf->TransformParameters(U,V,T); |
649 | } |
650 | |
651 | //======================================================================= |
652 | //function : ParametricTransformation |
653 | //purpose : |
654 | //======================================================================= |
655 | |
656 | gp_GTrsf2d Geom_RectangularTrimmedSurface::ParametricTransformation |
657 | (const gp_Trsf& T) const |
658 | { |
659 | return basisSurf->ParametricTransformation(T); |
660 | } |
661 | |