Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠ±Π°) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½ Π² ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π½ΠΈΡ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ (ΠΈ ΡΠΊΡΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΎΠΏΠΈΡΠ°Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠΈΠΏΠ° T3DPoint (Π·Π°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ) ΠΈ TPoint (Π·Π°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π΄Π²Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ). Procedure DrawCube; begin Line… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠ±Π°) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½ Π² ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π½ΠΈΡ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ (ΠΈ ΡΠΊΡΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΎΠΏΠΈΡΠ°Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠΈΠΏΠ° T3DPoint (Π·Π°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ) ΠΈ TPoint (Π·Π°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π΄Π²Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ).
var //ΠΌΠΈΡΠΎΠ²ΡΠ΅ (world) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ w: array [1.8] of T3DPoint; //Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ (view) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ v: array [1.8] of TPoint; ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΊΡΠ±Π° Ρ ΡΠ΅Π½ΡΡΠΎΠΌ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ: w[1]. x := -50; w[5]. x := -50; w[1]. y := -50; w[5]. y := -50; w[1]. z := -50; w[5]. z := 50; w[2]. x := 50; w[6]. x := 50; w[2]. y := -50; w[6]. y := -50; w[2]. z := -50; w[6]. z := 50; w[3]. x := 50; w[7]. x := 50; w[3]. y := 50; w[7]. y := 50; w[3]. z := -50; w[7]. z := 50; w[4]. x := -50; w[8]. x := -50; w[4]. y := 50; w[8]. y := 50; w[4]. z := -50; w[8]. z := 50; ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² Π²ΠΈΠ΄ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ V. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: procedure ViewTransformation; begin for i := 1 to 8 Do begin v[i]. x := Round (w[i]. x*(-sin (teta)) + w[i]. y*(cos (teta))) + Form1. ClientWidth div 2; v[i]. y := Round (w[i]. x*(-cos (phi) * cos (teta)) — w[i]. y*(cos (phi) * sin (teta)) + w[i]. z*(sin (phi))) + Form1. ClientHeight div 2; end; end; ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ ΠΊΡΠ±Π° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠ½ ΡΠ΅Π±ΡΠ°ΠΌΠΈ. Π‘ΡΡΠΎΠΈΡΡ ΠΊΡΠ± Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎ Π²ΠΈΠ΄ΠΎΠ²ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ViewTransformation. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:procedure DrawCube; begin Line (v[1], v[2]); Line (v[2], v[3]); Line (v[4], v[1]); Line (v[3], v[4]); Line (v[5], v[6]); Line (v[6], v[7]); Line (v[7], v[8]); Line (v[8], v[5]); Line (v[1], v[5]); Line (v[2], v[6]); Line (v[3], v[7]); Line (v[4], v[8]); end; ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ViewTransformation ΠΈ DrawCube, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° OnCreate, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΠ±. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ³Π»ΠΎΠ² phi ΠΈ teta.