Luxophia
1unit LUX.D3.M4;
2
3interface
4
5uses
6LUX, LUX.D1, LUX.D2, LUX.D3;
7
8type
9
10TSingle3DM4 = record
11private
12function GetM(const Y_, X_: Integer): TSingle3D; inline;
13procedure SetM(const Y_, X_: Integer; const M_: TSingle3D); inline;
14public
15property M[const Y_, X_: Integer]: TSingle3D read GetM write SetM; default;
16case Integer of
170:
18(_: array [1 .. 4, 1 .. 4] of TSingle3D;);
191:
20(_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
21_43, _44: TSingle3D;
22);
23end;
24
25TDouble3DM4 = record
26private
27function GetM(const Y_, X_: Integer): TDouble3D; inline;
28procedure SetM(const Y_, X_: Integer; const M_: TDouble3D); inline;
29public
30property M[const Y_, X_: Integer]: TDouble3D read GetM write SetM; default;
31case Integer of
320:
33(_: array [1 .. 4, 1 .. 4] of TDouble3D;);
341:
35(_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
36_43, _44: TDouble3D;
37);
38end;
39
40TdSingle3DM4 = record
41private
42function GetM(const Y_, X_: Integer): TdSingle3D; inline;
43procedure SetM(const Y_, X_: Integer; const M_: TdSingle3D); inline;
44public
45property M[const Y_, X_: Integer]: TdSingle3D read GetM write SetM; default;
46class operator Implicit(const M_: TSingle3DM4): TdSingle3DM4; inline;
47class operator Explicit(const M_: TdSingle3DM4): TSingle3DM4; inline;
48case Integer of
490:
50(_: array [1 .. 4, 1 .. 4] of TdSingle3D;);
511:
52(_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
53_43, _44: TdSingle3D;
54);
55end;
56
57TdDouble3DM4 = record
58private
59function GetM(const Y_, X_: Integer): TdDouble3D; inline;
60procedure SetM(const Y_, X_: Integer; const M_: TdDouble3D); inline;
61public
62property M[const Y_, X_: Integer]: TdDouble3D read GetM write SetM; default;
63class operator Implicit(const M_: TDouble3DM4): TdDouble3DM4; inline;
64class operator Explicit(const M_: TdDouble3DM4): TDouble3DM4; inline;
65case Integer of
660:
67(_: array [1 .. 4, 1 .. 4] of TdDouble3D;);
681:
69(_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
70_43, _44: TdDouble3D;
71);
72end;
73
74implementation
75
76function TSingle3DM4.GetM(const Y_, X_: Integer): TSingle3D;
77begin
78Result := _[Y_, X_];
79end;
80
81procedure TSingle3DM4.SetM(const Y_, X_: Integer; const M_: TSingle3D);
82begin
83_[Y_, X_] := M_;
84end;
85
86function TDouble3DM4.GetM(const Y_, X_: Integer): TDouble3D;
87begin
88Result := _[Y_, X_];
89end;
90
91procedure TDouble3DM4.SetM(const Y_, X_: Integer; const M_: TDouble3D);
92begin
93_[Y_, X_] := M_;
94end;
95
96function TdSingle3DM4.GetM(const Y_, X_: Integer): TdSingle3D;
97begin
98Result := _[Y_, X_];
99end;
100
101procedure TdSingle3DM4.SetM(const Y_, X_: Integer; const M_: TdSingle3D);
102begin
103_[Y_, X_] := M_;
104end;
105
106class operator TdSingle3DM4.Implicit(const M_: TSingle3DM4): TdSingle3DM4;
107begin
108with Result do
109begin
110_11 := M_._11;
111_12 := M_._12;
112_13 := M_._13;
113_14 := M_._14;
114_21 := M_._21;
115_22 := M_._22;
116_23 := M_._23;
117_24 := M_._24;
118_31 := M_._31;
119_32 := M_._32;
120_33 := M_._33;
121_34 := M_._34;
122_41 := M_._41;
123_42 := M_._42;
124_43 := M_._43;
125_44 := M_._44;
126end;
127end;
128
129class operator TdSingle3DM4.Explicit(const M_: TdSingle3DM4): TSingle3DM4;
130begin
131with Result do
132begin
133_11 := M_._11;
134_12 := M_._12;
135_13 := M_._13;
136_14 := M_._14;
137_21 := M_._21;
138_22 := M_._22;
139_23 := M_._23;
140_24 := M_._24;
141_31 := M_._31;
142_32 := M_._32;
143_33 := M_._33;
144_34 := M_._34;
145_41 := M_._41;
146_42 := M_._42;
147_43 := M_._43;
148_44 := M_._44;
149end;
150end;
151
152function TdDouble3DM4.GetM(const Y_, X_: Integer): TdDouble3D;
153begin
154Result := _[Y_, X_];
155end;
156
157procedure TdDouble3DM4.SetM(const Y_, X_: Integer; const M_: TdDouble3D);
158begin
159_[Y_, X_] := M_;
160end;
161
162class operator TdDouble3DM4.Implicit(const M_: TDouble3DM4): TdDouble3DM4;
163begin
164with Result do
165begin
166_11 := M_._11;
167_12 := M_._12;
168_13 := M_._13;
169_14 := M_._14;
170_21 := M_._21;
171_22 := M_._22;
172_23 := M_._23;
173_24 := M_._24;
174_31 := M_._31;
175_32 := M_._32;
176_33 := M_._33;
177_34 := M_._34;
178_41 := M_._41;
179_42 := M_._42;
180_43 := M_._43;
181_44 := M_._44;
182end;
183end;
184
185class operator TdDouble3DM4.Explicit(const M_: TdDouble3DM4): TDouble3DM4;
186begin
187with Result do
188begin
189_11 := M_._11;
190_12 := M_._12;
191_13 := M_._13;
192_14 := M_._14;
193_21 := M_._21;
194_22 := M_._22;
195_23 := M_._23;
196_24 := M_._24;
197_31 := M_._31;
198_32 := M_._32;
199_33 := M_._33;
200_34 := M_._34;
201_41 := M_._41;
202_42 := M_._42;
203_43 := M_._43;
204_44 := M_._44;
205end;
206end;
207
208initialization
209
210finalization
211
212end.
213