= COS (Teta); [2,3]: =-SIN (Teta); [3,2]: = SIN (Teta); [3,3]: = COS (Teta);. X: = O [1,1] * PX + O [1,2] * PY + O [1,3] * PZ + O [1,4];. Y: = O [2,1] * PX + O [2,2] * PY + O [2 , 3] * PZ + O [2,4];. Z: = O [3,1] * PX + O [3,2] * PY + O [3,3] * PZ + O [3,4] ;; UY3d (P: Coord; Teta: Real; Var R: Coord); {розрахунок обертання навколо осі y} Matrix = Array [1 .. 4,1 .. 4] Of Real; I, J: Byte;: Matrix ; I: = 1 To 4 Do For J: = 1 To 4 Do If I = J Then O [I, J]: = 1O [I, J]: = 0; [1,1]: = COS (Teta) ; [1,3]: =-SIN (Teta); [3,1]: = SIN (Teta); [3,3]: = COS (Teta);. X: = O [1,1] * PX + O [1,2] * PY + O [1,3] * PZ + O [1,4];. Y: = O [2,1] * PX + O [2,2] * PY + O [ 2,3] * PZ + O [2,4];. Z: = O [3,1] * PX + O [3,2] * PY + O [3,3] * PZ + O [3,4 ];; UZ3d (P: Coord; Teta: Real; Var R: Coord); {розрахунок обертання навколо осі z} Matrix = Array [1 .. 4,1 .. 4] Of Real; I, J: Byte;: Matrix; I: = 1 To 4 Do For J: = 1 To 4 Do If I = J Then O [I, J]: = 1O [I, J]: = 0; [1,1]: = COS (Teta ); [1,2]: =-SIN (Teta); [2,1]: = SIN (Teta); [2,2]: = COS (Teta);. X: = O [1,1] * PX + O [1,2] * PY + O [1,3] * PZ + O [1,4];. Y: = O [2,1] * PX + O [2,2] * PY + O [2,3] * PZ + O [2,4];. Z: = O [3,1] * PX + O [3,2] * PY + O [3,3] * PZ + O [3, 4];;
Procedure Fig; {розрахунок початкових координат для октаедра}
Begin [1]. X: = 10; A [1]. Y: = 10; A [1]. Z: = 10; {координати 6 вершин} [2]. X: = 10; A [2 ]. Y: = 10; A [2]. Z: = -10; [3]. X: = -10; A [3]. Y: = 10; A [3]. Z: = -10; [ 4]. X: = -10; A [4]. Y: = 10; A [4]. Z: = 10; [5]. X: = 0; A [5]. Y: = -10; A [5]. Z: = 0; [6]. X: = 0; A [6]. Y: = 30; A [6]. Z: = 0; [1]. B: = 1; B [1 ]. E: = 2; B [1]. C: = 4; {координати з'єднуються вершин, колір ребер} [2]. B: = 2; B [2]. E: = 3; B [2]. C : = 4; [3]. B: = 3; B [3]. E: = 4; B [3]. C: = 4; [4]. B: = 5; B [4]. E: = 1; B [4]. C: = 14; [5]. B: = 5; B [5]. E: = 2; B [5]. C: = 14; [6]. B: = 5; B [6]. E: = 3; B [6]. C: = 14; [7]. B: = 5; B [7]. E: = 4; B [7]. C: = 14; [ 8]. B: = 6; B [8]. E: = 1; B [8]. C: = 12; [9]. B: = 6; B [9]. E: = 2; b [9 ]. C: = 12; [10]. B: = 6; B [10]. E: = 3; b [10]. C: = 12; [11]. B: = 6; B [11]. E: = 4; b [11]. C: = 12; [12]. B: = 4; B [12]. E: = 1; b [12]. C: = 4;
End;
Procedure Draw3D; {введення значень для виведення на екран фігури}
Var I: Byte;, YB, XE, YE: Real; I: = 1 To M Do Begin (B [I]. C);: = A [B [I]. B]. X;: = A [B [I]. B]. Y;: = A [B [I]. E]. X;: = A [B [I]. E]. Y; (Trunc (XB), Trunc (YB) , Trunc (XE), Trunc (YE));;; Hide3D; {стирання фігури} I: Byte;, YB, XE, YE: Real; (Black); I: = 1 To M Do Begin: = A [B [I]. B]. X;: = A [B [I]. B]. Y;: = A [B [I]. E]. X;: = A [B [I]. E]. Y ; (Trunc (XB), Trunc (YB), Trunc (XE), Trunc (YE));;;; {очищення екрана, модуль crt} ('1 -2, обертання по осі OZ '); {висновок на екран меню - пояснення до керуючим кнопках}
WriteLn ('3 -4, обертання по осі OY ');
WriteLn ('5 -6, обертання по осі OX ');
Wr...