1
unit LUX.Asset.VisToolkit.Cells;
3
interface //#################################################################### ■
5
uses LUX, LUX.D1, LUX.D2, LUX.D3,
7
LUX.Asset.VisToolkit.Poin;
9
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
19
VTK_TRIANGLE_STRIP = 06,
28
VTK_PENTAGONAL_PRISM = 15,
29
VTK_HEXAGONAL_PRISM = 16,
30
// Quadratic, isoparametric cells
31
VTK_QUADRATIC_EDGE = 21,
32
VTK_QUADRATIC_TRIANGLE = 22,
33
VTK_QUADRATIC_QUAD = 23,
34
VTK_QUADRATIC_POLYGON = 36,
35
VTK_QUADRATIC_TETRA = 24,
36
VTK_QUADRATIC_HEXAHEDRON = 25,
37
VTK_QUADRATIC_WEDGE = 26,
38
VTK_QUADRATIC_PYRAMID = 27,
39
VTK_BIQUADRATIC_QUAD = 28,
40
VTK_TRIQUADRATIC_HEXAHEDRON = 29,
41
VTK_QUADRATIC_LINEAR_QUAD = 30,
42
VTK_QUADRATIC_LINEAR_WEDGE = 31,
43
VTK_BIQUADRATIC_QUADRATIC_WEDGE = 32,
44
VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON = 33,
45
VTK_BIQUADRATIC_TRIANGLE = 34,
46
// Cubic, isoparametric cell
48
// Special class of cells formed by convex group of points
49
VTK_CONVEX_POINT_SET = 41,
50
// Polyhedron cell (consisting of polygonal faces)
52
// Higher order cells in parametric form
53
VTK_PARAMETRIC_CURVE = 51,
54
VTK_PARAMETRIC_SURFACE = 52,
55
VTK_PARAMETRIC_TRI_SURFACE = 53,
56
VTK_PARAMETRIC_QUAD_SURFACE = 54,
57
VTK_PARAMETRIC_TETRA_REGION = 55,
58
VTK_PARAMETRIC_HEX_REGION = 56,
60
VTK_HIGHER_ORDER_EDGE = 60,
61
VTK_HIGHER_ORDER_TRIANGLE = 61,
62
VTK_HIGHER_ORDER_QUAD = 62,
63
VTK_HIGHER_ORDER_POLYGON = 63,
64
VTK_HIGHER_ORDER_TETRAHEDRON = 64,
65
VTK_HIGHER_ORDER_WEDGE = 65,
66
VTK_HIGHER_ORDER_PYRAMID = 66,
67
VTK_HIGHER_ORDER_HEXAHEDRON = 67,
68
// Arbitrary order Lagrange elements (formulated separated from generic higher order cells)
69
VTK_LAGRANGE_CURVE = 68,
70
VTK_LAGRANGE_TRIANGLE = 69,
71
VTK_LAGRANGE_QUADRILATERAL = 70,
72
VTK_LAGRANGE_TETRAHEDRON = 71,
73
VTK_LAGRANGE_HEXAHEDRON = 72,
74
VTK_LAGRANGE_WEDGE = 73,
75
VTK_LAGRANGE_PYRAMID = 74,
76
VTK_NUMBER_OF_CELL_TYPES );
78
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
80
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
82
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TvtkCell
84
TvtkCell = class( TvtkElem )
88
_Poins :TArray<TvtkPoin>;
92
function GetPoins( const I_:Integer ) :TvtkPoin;
93
procedure SetPoins( const I_:Integer; const Poin_:TvtkPoin );
94
function GetPoinsN :Integer;
95
procedure SetPoinsN( const PoinsN_:Integer );
97
class function New( const Kind_:TCellTypes ) :TvtkCell;
99
destructor Destroy; override;
101
property Kind :TCellTypes read _Kind write _Kind ;
102
property Poins[ const I_:Integer ] :TvtkPoin read GetPoins write SetPoins ;
103
property PoinsN :Integer read GetPoinsN write SetPoinsN;
104
property Scalar :Single read _Scalar write _Scalar;
105
property Vector :TSingle3D read _Vector write _Vector;
108
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
110
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
112
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
114
implementation //############################################################### ■
116
uses LUX.Asset.VisToolkit.Cells.LINEAR,
117
LUX.Asset.VisToolkit.Cells.QUADRATIC,
118
LUX.Asset.VisToolkit.Cells.CUBIC,
119
LUX.Asset.VisToolkit.Cells.CONVEX,
120
LUX.Asset.VisToolkit.Cells.POLYHEDRON,
121
LUX.Asset.VisToolkit.Cells.PARAMETRIC,
122
LUX.Asset.VisToolkit.Cells.HIGHER,
123
LUX.Asset.VisToolkit.Cells.LAGRANGE;
125
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
127
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
129
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TvtkCell
131
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
133
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
135
function TvtkCell.GetPoins( const I_:Integer ) :TvtkPoin;
137
Result := _Poins[ I_ ];
140
procedure TvtkCell.SetPoins( const I_:Integer; const Poin_:TvtkPoin );
142
_Poins[ I_ ] := Poin_;
145
//------------------------------------------------------------------------------
147
function TvtkCell.GetPoinsN :Integer;
149
Result := Length( _Poins );
152
procedure TvtkCell.SetPoinsN( const PoinsN_:Integer );
154
SetLength( _Poins, PoinsN_ );
157
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
159
class function TvtkCell.New( const Kind_:TCellTypes ) :TvtkCell;
163
case Integer( Kind_ ) of
165
00: Result := TvtkCell00.Create;
166
01: Result := TvtkCell01.Create;
167
02: Result := TvtkCell02.Create;
168
03: Result := TvtkCell03.Create;
169
04: Result := TvtkCell04.Create;
170
05: Result := TvtkCell05.Create;
171
06: Result := TvtkCell06.Create;
172
07: Result := TvtkCell07.Create;
173
08: Result := TvtkCell08.Create;
174
09: Result := TvtkCell09.Create;
175
10: Result := TvtkCell10.Create;
176
11: Result := TvtkCell11.Create;
177
12: Result := TvtkCell12.Create;
178
13: Result := TvtkCell13.Create;
179
14: Result := TvtkCell14.Create;
180
15: Result := TvtkCell15.Create;
181
16: Result := TvtkCell16.Create;
182
/// Quadratic, isoparametric cells
183
21: Result := TvtkCell21.Create;
184
22: Result := TvtkCell22.Create;
185
23: Result := TvtkCell23.Create;
186
36: Result := TvtkCell36.Create;
187
24: Result := TvtkCell24.Create;
188
25: Result := TvtkCell25.Create;
189
26: Result := TvtkCell26.Create;
190
27: Result := TvtkCell27.Create;
191
28: Result := TvtkCell28.Create;
192
29: Result := TvtkCell29.Create;
193
30: Result := TvtkCell30.Create;
194
31: Result := TvtkCell31.Create;
195
32: Result := TvtkCell32.Create;
196
33: Result := TvtkCell33.Create;
197
34: Result := TvtkCell34.Create;
198
/// Cubic, isoparametric cell
199
35: Result := TvtkCell35.Create;
200
/// Special class of cells formed by convex group of points
201
41: Result := TvtkCell41.Create;
202
/// Polyhedron cell (consisting of polygonal faces)
203
42: Result := TvtkCell42.Create;
204
/// Higher order cells in parametric form
205
51: Result := TvtkCell51.Create;
206
52: Result := TvtkCell52.Create;
207
53: Result := TvtkCell53.Create;
208
54: Result := TvtkCell54.Create;
209
55: Result := TvtkCell55.Create;
210
56: Result := TvtkCell56.Create;
211
/// Higher order cells
212
60: Result := TvtkCell60.Create;
213
61: Result := TvtkCell61.Create;
214
62: Result := TvtkCell62.Create;
215
63: Result := TvtkCell63.Create;
216
64: Result := TvtkCell64.Create;
217
65: Result := TvtkCell65.Create;
218
66: Result := TvtkCell66.Create;
219
67: Result := TvtkCell67.Create;
220
/// Arbitrary order Lagrange elements (formulated separated from generic higher order cells)
221
68: Result := TvtkCell68.Create;
222
69: Result := TvtkCell69.Create;
223
70: Result := TvtkCell70.Create;
224
71: Result := TvtkCell71.Create;
225
72: Result := TvtkCell72.Create;
226
73: Result := TvtkCell73.Create;
227
74: Result := TvtkCell74.Create;
231
constructor TvtkCell.Create;
237
destructor TvtkCell.Destroy;
243
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
245
//############################################################################## □
247
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
249
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
251
end. //######################################################################### ■