Luxophia

Форк
0
/
LUX.D3.M4.pas 
212 строк · 4.7 Кб
1
unit LUX.D3.M4;
2

3
interface
4

5
uses
6
  LUX, LUX.D1, LUX.D2, LUX.D3;
7

8
type
9

10
  TSingle3DM4 = record
11
  private
12
    function GetM(const Y_, X_: Integer): TSingle3D; inline;
13
    procedure SetM(const Y_, X_: Integer; const M_: TSingle3D); inline;
14
  public
15
    property M[const Y_, X_: Integer]: TSingle3D read GetM write SetM; default;
16
    case Integer of
17
      0:
18
        (_: array [1 .. 4, 1 .. 4] of TSingle3D;);
19
      1:
20
        (_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
21
          _43, _44: TSingle3D;
22
        );
23
  end;
24

25
  TDouble3DM4 = record
26
  private
27
    function GetM(const Y_, X_: Integer): TDouble3D; inline;
28
    procedure SetM(const Y_, X_: Integer; const M_: TDouble3D); inline;
29
  public
30
    property M[const Y_, X_: Integer]: TDouble3D read GetM write SetM; default;
31
    case Integer of
32
      0:
33
        (_: array [1 .. 4, 1 .. 4] of TDouble3D;);
34
      1:
35
        (_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
36
          _43, _44: TDouble3D;
37
        );
38
  end;
39

40
  TdSingle3DM4 = record
41
  private
42
    function GetM(const Y_, X_: Integer): TdSingle3D; inline;
43
    procedure SetM(const Y_, X_: Integer; const M_: TdSingle3D); inline;
44
  public
45
    property M[const Y_, X_: Integer]: TdSingle3D read GetM write SetM; default;
46
    class operator Implicit(const M_: TSingle3DM4): TdSingle3DM4; inline;
47
    class operator Explicit(const M_: TdSingle3DM4): TSingle3DM4; inline;
48
    case Integer of
49
      0:
50
        (_: array [1 .. 4, 1 .. 4] of TdSingle3D;);
51
      1:
52
        (_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
53
          _43, _44: TdSingle3D;
54
        );
55
  end;
56

57
  TdDouble3DM4 = record
58
  private
59
    function GetM(const Y_, X_: Integer): TdDouble3D; inline;
60
    procedure SetM(const Y_, X_: Integer; const M_: TdDouble3D); inline;
61
  public
62
    property M[const Y_, X_: Integer]: TdDouble3D read GetM write SetM; default;
63
    class operator Implicit(const M_: TDouble3DM4): TdDouble3DM4; inline;
64
    class operator Explicit(const M_: TdDouble3DM4): TDouble3DM4; inline;
65
    case Integer of
66
      0:
67
        (_: array [1 .. 4, 1 .. 4] of TdDouble3D;);
68
      1:
69
        (_11, _12, _13, _14, _21, _22, _23, _24, _31, _32, _33, _34, _41, _42,
70
          _43, _44: TdDouble3D;
71
        );
72
  end;
73

74
implementation
75

76
function TSingle3DM4.GetM(const Y_, X_: Integer): TSingle3D;
77
begin
78
  Result := _[Y_, X_];
79
end;
80

81
procedure TSingle3DM4.SetM(const Y_, X_: Integer; const M_: TSingle3D);
82
begin
83
  _[Y_, X_] := M_;
84
end;
85

86
function TDouble3DM4.GetM(const Y_, X_: Integer): TDouble3D;
87
begin
88
  Result := _[Y_, X_];
89
end;
90

91
procedure TDouble3DM4.SetM(const Y_, X_: Integer; const M_: TDouble3D);
92
begin
93
  _[Y_, X_] := M_;
94
end;
95

96
function TdSingle3DM4.GetM(const Y_, X_: Integer): TdSingle3D;
97
begin
98
  Result := _[Y_, X_];
99
end;
100

101
procedure TdSingle3DM4.SetM(const Y_, X_: Integer; const M_: TdSingle3D);
102
begin
103
  _[Y_, X_] := M_;
104
end;
105

106
class operator TdSingle3DM4.Implicit(const M_: TSingle3DM4): TdSingle3DM4;
107
begin
108
  with Result do
109
  begin
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;
126
  end;
127
end;
128

129
class operator TdSingle3DM4.Explicit(const M_: TdSingle3DM4): TSingle3DM4;
130
begin
131
  with Result do
132
  begin
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;
149
  end;
150
end;
151

152
function TdDouble3DM4.GetM(const Y_, X_: Integer): TdDouble3D;
153
begin
154
  Result := _[Y_, X_];
155
end;
156

157
procedure TdDouble3DM4.SetM(const Y_, X_: Integer; const M_: TdDouble3D);
158
begin
159
  _[Y_, X_] := M_;
160
end;
161

162
class operator TdDouble3DM4.Implicit(const M_: TDouble3DM4): TdDouble3DM4;
163
begin
164
  with Result do
165
  begin
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;
182
  end;
183
end;
184

185
class operator TdDouble3DM4.Explicit(const M_: TdDouble3DM4): TDouble3DM4;
186
begin
187
  with Result do
188
  begin
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;
205
  end;
206
end;
207

208
initialization
209

210
finalization
211

212
end.
213

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

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

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

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