7fd59977 |
1 | -- File: GeomFill_Frenet.cdl |
2 | -- Created: Fri Dec 19 11:57:17 1997 |
3 | -- Author: Philippe MANGIN |
4 | -- <pmn@sgi29> |
5 | ---Copyright: Matra Datavision 1997 |
6 | |
7 | |
8 | class Frenet from GeomFill |
9 | inherits TrihedronLaw from GeomFill |
10 | |
11 | ---Purpose: Defined Frenet Trihedron Law |
12 | |
13 | uses |
14 | HCurve from Adaptor3d, |
15 | Shape from GeomAbs, |
16 | Array1OfReal from TColStd, |
17 | Pnt from gp, |
18 | Vec from gp, |
19 | HArray1OfReal from TColStd, |
20 | HArray1OfBoolean from TColStd |
21 | raises |
22 | OutOfRange, ConstructionError |
23 | is |
24 | |
25 | Create |
26 | returns Frenet from GeomFill |
27 | raises ConstructionError; |
28 | |
29 | Copy(me) |
30 | returns TrihedronLaw from GeomFill |
31 | is redefined; |
32 | |
33 | Init(me: mutable) |
34 | is static; |
35 | |
36 | SetCurve(me : mutable; C : HCurve from Adaptor3d) |
37 | is redefined; |
38 | |
39 | -- |
40 | -- |
41 | --========== To compute Location and derivatives Location |
42 | -- |
43 | D0(me : mutable; |
44 | Param: Real; |
45 | Tangent : out Vec from gp; |
46 | Normal : out Vec from gp; |
47 | BiNormal : out Vec from gp) |
48 | ---Purpose: compute Triedrhon on curve at parameter <Param> |
49 | returns Boolean is redefined; |
50 | |
51 | D1(me : mutable; |
52 | Param: Real; |
53 | Tangent : out Vec from gp; |
54 | DTangent : out Vec from gp; |
55 | Normal : out Vec from gp; |
56 | DNormal : out Vec from gp; |
57 | BiNormal : out Vec from gp; |
58 | DBiNormal : out Vec from gp) |
59 | ---Purpose: compute Triedrhon and derivative Trihedron on curve |
60 | -- at parameter <Param> |
61 | -- Warning : It used only for C1 or C2 aproximation |
62 | returns Boolean |
63 | is redefined; |
64 | |
65 | D2(me : mutable; |
66 | Param: Real; |
67 | Tangent : out Vec from gp; |
68 | DTangent : out Vec from gp; |
69 | D2Tangent : out Vec from gp; |
70 | Normal : out Vec from gp; |
71 | DNormal : out Vec from gp; |
72 | D2Normal : out Vec from gp; |
73 | BiNormal : out Vec from gp; |
74 | DBiNormal : out Vec from gp; |
75 | D2BiNormal : out Vec from gp) |
76 | ---Purpose: compute Trihedron on curve |
77 | -- first and seconde derivatives. |
78 | -- Warning : It used only for C2 aproximation |
79 | returns Boolean |
80 | is redefined; |
81 | -- |
82 | -- =================== Management of continuity =================== |
83 | -- |
84 | NbIntervals(me; S : Shape from GeomAbs) |
85 | ---Purpose: Returns the number of intervals for continuity |
86 | -- <S>. |
87 | -- May be one if Continuity(me) >= <S> |
88 | returns Integer is redefined; |
89 | |
90 | Intervals(me; T : in out Array1OfReal from TColStd; |
91 | S : Shape from GeomAbs) |
92 | ---Purpose: Stores in <T> the parameters bounding the intervals |
93 | -- of continuity <S>. |
94 | -- |
95 | -- The array must provide enough room to accomodate |
96 | -- for the parameters. i.e. T.Length() > NbIntervals() |
97 | raises |
98 | OutOfRange from Standard |
99 | is redefined; |
100 | |
101 | |
102 | -- =================== To help computation of Tolerance =============== |
103 | GetAverageLaw(me : mutable; |
104 | ATangent : out Vec from gp; |
105 | ANormal : out Vec from gp; |
106 | ABiNormal : out Vec from gp) |
107 | ---Purpose: Get average value of Tangent(t) and Normal(t) it is usfull to |
108 | -- make fast approximation of rational surfaces. |
109 | is redefined; |
110 | |
111 | -- =================== To help Particular case =============== |
112 | |
113 | IsConstant(me) |
114 | ---Purpose: Say if the law is Constant. |
115 | returns Boolean |
116 | is redefined; |
117 | |
118 | IsOnlyBy3dCurve(me) |
119 | ---Purpose: Return True. |
120 | returns Boolean |
121 | is redefined; |
122 | |
123 | IsSingular(me; U: Real; Index: out Integer) |
124 | returns Boolean |
125 | is private; |
126 | |
127 | DoSingular(me: mutable; U: Real; Index: Integer; |
128 | Tangent, BiNormal: out Vec from gp; |
129 | n, k, TFlag, BNFlag: out Integer) |
130 | returns Boolean |
131 | is private; |
132 | |
133 | SingularD0(me : mutable; |
134 | Param: Real; Index: Integer; |
135 | Tangent : out Vec from gp; |
136 | Normal : out Vec from gp; |
137 | BiNormal : out Vec from gp) |
138 | ---Purpose: computes Triedrhon on curve at parameter <Param> |
139 | returns Boolean |
140 | is private; |
141 | |
142 | SingularD1(me : mutable; |
143 | Param: Real; Index: Integer; |
144 | Tangent : out Vec from gp; |
145 | DTangent : out Vec from gp; |
146 | Normal : out Vec from gp; |
147 | DNormal : out Vec from gp; |
148 | BiNormal : out Vec from gp; |
149 | DBiNormal : out Vec from gp) |
150 | ---Purpose: computes Triedrhon and derivative Trihedron on curve |
151 | -- at parameter <Param> |
152 | -- Warning : It used only for C1 or C2 aproximation |
153 | returns Boolean |
154 | is private; |
155 | |
156 | SingularD2(me : mutable; |
157 | Param: Real; Index: Integer; |
158 | Tangent : out Vec from gp; |
159 | DTangent : out Vec from gp; |
160 | D2Tangent : out Vec from gp; |
161 | Normal : out Vec from gp; |
162 | DNormal : out Vec from gp; |
163 | D2Normal : out Vec from gp; |
164 | BiNormal : out Vec from gp; |
165 | DBiNormal : out Vec from gp; |
166 | D2BiNormal : out Vec from gp) |
167 | ---Purpose: computes Trihedron on curve |
168 | -- first and seconde derivatives. |
169 | -- Warning : It used only for C2 aproximation |
170 | returns Boolean |
171 | is private; |
172 | |
173 | fields |
174 | P : Pnt from gp; |
175 | mySngl : HArray1OfReal from TColStd; |
176 | mySnglLen : HArray1OfReal from TColStd; |
177 | isSngl : Boolean from Standard; -- True if there is some |
178 | -- singular points |
179 | end Frenet; |