blob: b0dae6dcc6867c66ab7627436d22bc3deaed06ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
-- File: EllipseToBSplineCurve.cdl
-- Created: Thu Oct 10 14:38:50 1991
-- Author: Jean Claude VAUTHIER
---Copyright: Matra Datavision 1991, 1992
class EllipseToBSplineCurve from Convert inherits ConicToBSplineCurve
--- Purpose :
-- This algorithm converts a ellipse into a rational B-spline curve.
-- The ellipse is represented an Elips2d from package gp with
-- the parametrization :
-- P (U) =
-- Loc + (MajorRadius * Cos(U) * Xdir + MinorRadius * Sin(U) * Ydir)
-- where Loc is the center of the ellipse, Xdir and Ydir are the
-- normalized directions of the local cartesian coordinate system of
-- the ellipse. The parametrization range is U [0, 2PI].
--- KeyWords :
-- Convert, Ellipse, BSplineCurve, 2D .
uses Elips2d from gp,
ParameterisationType from Convert
raises DomainError from Standard
is
Create (E : Elips2d;
Parameterisation : ParameterisationType from Convert
= Convert_TgtThetaOver2 ) returns EllipseToBSplineCurve;
--- Purpose : The equivalent B-spline curve has the same orientation
-- as the ellipse E.
Create (E : Elips2d; U1, U2 : Real;
Parameterisation : ParameterisationType from Convert
= Convert_TgtThetaOver2 ) returns EllipseToBSplineCurve
--- Purpose :
-- The ellipse E is limited between the parametric values U1, U2.
-- The equivalent B-spline curve is oriented from U1 to U2 and has
-- the same orientation as E.
raises DomainError;
--- Purpose :
-- Raised if U1 = U2 or U1 = U2 + 2.0 * Pi
end EllipseToBSplineCurve;
|