1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| type
Mat3x3 = array [0..8] of Single;
procedure RotateRight(var AMat3x3: Mat3x3);
const
COriginalIndex: array [0..8] of integer = (
3, 0, 1,
6, 4, 2,
7, 8, 5
);
var
i: integer;
result: Mat3x3;
begin
for i := Low(Mat3x3) to High(Mat3x3) do
result[i] := AMat3x3[COriginalIndex[i]];
AMat3x3 := result;
end;
procedure WriteMat3x3(const AMat3x3: Mat3x3);
begin
WriteLn(
AMat3x3[0], AMat3x3[1], AMat3x3[2], LineEnding,
AMat3x3[3], AMat3x3[4], AMat3x3[5], LineEnding,
AMat3x3[6], AMat3x3[7], AMat3x3[8]
);
end;
var
m: Mat3x3;
i: integer;
begin
for i := Low(Mat3x3) to High(Mat3x3) do
m[i] := i;
WriteMat3x3(m);
RotateRight(m);
WriteMat3x3(m);
end. |
Partager