Luxophia

Форк
0
/
LUX.Asset.VisToolkit.Cells.pas 
251 строка · 9.7 Кб
1
unit LUX.Asset.VisToolkit.Cells;
2

3
interface //#################################################################### ■
4

5
uses LUX, LUX.D1, LUX.D2, LUX.D3,
6
     LUX.Asset.VisToolkit_,
7
     LUX.Asset.VisToolkit.Poin;
8

9
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
10

11
     TCellTypes = (
12
       // Linear cells
13
       VTK_EMPTY_CELL                       = 00,
14
       VTK_VERTEX                           = 01,
15
       VTK_POLY_VERTEX                      = 02,
16
       VTK_LINE                             = 03,
17
       VTK_POLY_LINE                        = 04,
18
       VTK_TRIANGLE                         = 05,
19
       VTK_TRIANGLE_STRIP                   = 06,
20
       VTK_POLYGON                          = 07,
21
       VTK_PIXEL                            = 08,
22
       VTK_QUAD                             = 09,
23
       VTK_TETRA                            = 10,
24
       VTK_VOXEL                            = 11,
25
       VTK_HEXAHEDRON                       = 12,
26
       VTK_WEDGE                            = 13,
27
       VTK_PYRAMID                          = 14,
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
47
       VTK_CUBIC_LINE                       = 35,
48
       // Special class of cells formed by convex group of points
49
       VTK_CONVEX_POINT_SET                 = 41,
50
       // Polyhedron cell (consisting of polygonal faces)
51
       VTK_POLYHEDRON                       = 42,
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,
59
       // Higher order cells
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                  );
77

78
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
79

80
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
81

82
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TvtkCell
83

84
     TvtkCell = class( TvtkElem )
85
     private
86
     protected
87
       _Kind   :TCellTypes;
88
       _Poins  :TArray<TvtkPoin>;
89
       _Scalar :Single;
90
       _Vector :TSingle3D;
91
       ///// アクセス
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 );
96
     public
97
       class function New( const Kind_:TCellTypes ) :TvtkCell;
98
       constructor Create;
99
       destructor Destroy; override;
100
       ///// プロパティ
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;
106
     end;
107

108
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
109

110
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
111

112
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
113

114
implementation //############################################################### ■
115

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;
124

125
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
126

127
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
128

129
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TvtkCell
130

131
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
132

133
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
134

135
function TvtkCell.GetPoins( const I_:Integer ) :TvtkPoin;
136
begin
137
     Result := _Poins[ I_ ];
138
end;
139

140
procedure TvtkCell.SetPoins( const I_:Integer; const Poin_:TvtkPoin );
141
begin
142
     _Poins[ I_ ] := Poin_;
143
end;
144

145
//------------------------------------------------------------------------------
146

147
function TvtkCell.GetPoinsN :Integer;
148
begin
149
     Result := Length( _Poins );
150
end;
151

152
procedure TvtkCell.SetPoinsN( const PoinsN_:Integer );
153
begin
154
     SetLength( _Poins, PoinsN_ );
155
end;
156

157
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
158

159
class function TvtkCell.New( const Kind_:TCellTypes ) :TvtkCell;
160
begin
161
     inherited;
162

163
     case Integer( Kind_ ) of
164
      /// Linear cells
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;
228
     end;
229
end;
230

231
constructor TvtkCell.Create;
232
begin
233
     inherited;
234

235
end;
236

237
destructor TvtkCell.Destroy;
238
begin
239

240
     inherited;
241
end;
242

243
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
244

245
//############################################################################## □
246

247
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
248

249
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
250

251
end. //######################################################################### ■
252

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.