ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ OpenGL
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΡΡΠΈ. ΠΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΠΈ Π±ΡΡΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π²Π΅ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΌΡΡΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ OpenGL (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΠΠΠ‘Π’ΠΠ Π‘Π’ΠΠ ΠΠΠ ΠΠΠΠΠΠΠΠ― Π ΠΠΠ£ΠΠ Π ΠΠ‘Π‘ΠΠΠ‘ΠΠΠ Π€ΠΠΠΠ ΠΠ¦ΠΠ ΡΠ΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
«ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡΠΈΠ»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΈΠΌΠ΅Π½ΠΈ Π.Π. ΠΠΎΡΡΠ³ΠΈΠ½Π°»
ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΡΡΠ΅Ρ ΠΏΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠ΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π‘ΠΠΠ »
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»: ΠΠΎΡΠΎΠΆΠ±ΠΈΡΠΎΠ² Π. Π. Π³Ρ. 45Ρ-10
ΠΡΠΈΠ½ΡΠ»: ΠΠ΅ΡΠΏΠ°Π»ΠΎΠ² Π.Π.
ΠΠΎΡΠΊΠ²Π° 2012
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
1.1 ΠΠ±ΡΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°Ρ
1.2 ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ²
1.3 ΠΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ
1.4 Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°
1.5 ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
2.1 ΠΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ
2.2 ΠΠ°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ TaoFramework
2.3 Π‘ΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ SharpDevelop
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
4.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
4.2 ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΡΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
4.3 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ Glut
4.4 ΠΠ±ΡΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
4.5 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
4.6 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ OpenGL
4.7 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΡΠ²ΠΎΠ΄Ρ Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
1.1 ΠΠ±ΡΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°Ρ ΠΠΈΡΠΎΡΠΊΠΎΠΏ — ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ΅ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ³Π»ΠΎΠ² ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ΅Π»Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½Π΅ΡΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° — ΡΠ»Π° (Π²ΠΎΠ»ΡΠΎΠΊ).
Π’Π΅ΡΠΌΠΈΠ½ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π²Π²Π΅Π΄Π΅Π½ ΠΠ°Π½ΠΎΠΌ (ΠΠ΅ΡΠ½Π°ΡΠΎΠΌ ΠΠ΅ΠΎΠ½ΠΎΠΌ) Π€ΡΠΊΠΎ Π² Π΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Π² 1852 Π³ΠΎΠ΄Ρ Π€ΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠΉ ΠΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ ΠΠ°ΡΠΊ. ΠΠΎΠΊΠ»Π°Π΄ Π±ΡΠ» ΠΏΠΎΡΠ²ΡΡΡΠ½ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΠ΅ΠΌΠ»ΠΈ Π² ΠΈΠ½Π΅ΡΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΡΠΈΠΌ ΠΈ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «Π³ΠΈΡΠΎΡΠΊΠΎΠΏ» (ΠΎΡ Π΄Ρ.-Π³ΡΠ΅Ρ. Π³? ΡΠΏΡ «ΠΊΡΡΠ³» ΠΈ ΡΠΊΠΏΡΠΡ «ΡΠΌΠΎΡΡΡ»).
ΠΠΎ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΠ·Π΄ΡΠ΅Π²Π»Π΅ Π»ΡΠ΄ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ°ΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎ Π‘ΠΎΠ»Π½ΡΡ. Π£ΠΆΠ΅ Π² Π΄ΡΠ΅Π²Π½ΠΎΡΡΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠΈΠ±ΠΎΡΡ: ΠΎΡΠ²Π΅Ρ ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΈ. Π ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π²Π΅ΠΊΠ° Π² ΠΠΈΡΠ°Π΅ Π±ΡΠ» ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΡΠ½ ΠΊΠΎΠΌΠΏΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΌΠ°Π³Π½Π΅ΡΠΈΠ·ΠΌ ΠΠ΅ΠΌΠ»ΠΈ. Π ΠΠ²ΡΠΎΠΏΠ΅ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π°ΡΡΡΠΎΠ»ΡΠ±ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ±ΠΎΡΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π·Π²ΡΠ·Π΄.
ΠΠΈΡΠΎΡΠΊΠΎΠΏ ΠΈΠ·ΠΎΠ±ΡΡΠ» ΠΠΎΠ³Π°Π½Π½ ΠΠΎΠ½Π΅Π½Π±Π΅ΡΠ³Π΅Ρ ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² 1817 Π³ΠΎΠ΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊ ΠΡΠ°ΡΡΠΎΠ½ Π΅ΡΡ Π² 1813 Π³ΠΎΠ΄Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΠΎΠ½Π΅Π½Π±Π΅ΡΠ³Π΅ΡΠ° ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΠ΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ»Π°Π²Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΠΎΠ½Π΅Π½Π±Π΅ΡΠ³Π΅ΡΠ° Π±ΡΠ» Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉΡΡ ΠΌΠ°ΡΡΠΈΠ²Π½ΡΠΉ ΡΠ°Ρ Π² ΠΊΠ°ΡΠ΄Π°Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ΄Π²Π΅ΡΠ΅. Π 1832 Π³ΠΎΠ΄Ρ Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½Π΅Ρ Π£ΠΎΠ»ΡΠ΅Ρ Π . ΠΠΆΠΎΠ½ΡΠΎΠ½ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» Π³ΠΈΡΠΎΡΠΊΠΎΠΏ Ρ Π²ΡΠ°ΡΠ°ΡΡΠΈΠΌΡΡ Π΄ΠΈΡΠΊΠΎΠΌ. Π€ΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ ΡΡΡΠ½ΡΠΉ ΠΠ°ΠΏΠ»Π°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π² ΡΡΠ΅Π±Π½ΡΡ ΡΠ΅Π»ΡΡ . Π 1852 Π³ΠΎΠ΄Ρ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ ΡΡΡΠ½ΡΠΉ Π€ΡΠΊΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π» Π³ΠΈΡΠΎΡΠΊΠΎΠΏ ΠΈ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ±ΠΎΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — ΠΠ΅ΠΌΠ»ΠΈ), ΡΠ΅ΡΠ΅Π· Π³ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠ½ΠΈΠΊΠ° Π€ΡΠΊΠΎ, ΡΠΎΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ Π²ΡΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠΌΠ΅Π½Π½ΠΎ Π€ΡΠΊΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «Π³ΠΈΡΠΎΡΠΊΠΎΠΏ». Π€ΡΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΠΎΠ½Π΅Π½Π±Π΅ΡΠ³Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΊΠ°ΡΠ΄Π°Π½ΠΎΠ² ΠΏΠΎΠ΄Π²Π΅Ρ. ΠΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ 1853 Π³ΠΎΠ΄Π° Π€Π΅ΡΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΡΠ» Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠΊΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΏΠ΅ΡΠ΅Π΄ Π±ΠΎΠ»Π΅Π΅ Π΄ΡΠ΅Π²Π½ΠΈΠΌΠΈ ΠΏΡΠΈΠ±ΠΎΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ»ΠΎΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ (ΠΏΠ»ΠΎΡ Π°Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ, ΡΡΡΡΠΊΠ°, ΡΠ»Π΅ΠΊΡΡΠΎΠΌΠ°Π³Π½ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠΌΠ΅Ρ ΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π±ΡΡΡΡΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ»ΠΎΡΡ ΠΈΠ·-Π·Π° ΡΡΠ΅Π½ΠΈΡ.
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ XIX Π²Π΅ΠΊΠ° Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠ°Π·Π³ΠΎΠ½Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°. ΠΠΏΠ΅ΡΠ²ΡΠ΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ Π² 1880-Ρ Π³ΠΎΠ΄Π°Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠΌ ΠΠ±ΡΠΈ Π΄Π»Ρ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΡΠ° ΡΠΎΡΠΏΠ΅Π΄Ρ. Π XX Π²Π΅ΠΊΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ ΡΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΎΠ»ΡΡΠ°Ρ , ΡΠ°ΠΊΠ΅ΡΠ°Ρ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ Π»ΠΎΠ΄ΠΊΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ° ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π½ΠΈΠΌ.
1.2 ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ² ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ² ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΠ΅ΠΏΠ΅Π½Π΅ΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ:
Β· Π΄Π²ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠ΅
Β· ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠ΅.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π΄Π²Π° ΡΠΈΠΏΠ° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ² ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
Β· ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ,
Β· ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ.
1.3 ΠΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ Π‘ΡΠ΅Π΄ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΎΡΠ½ΡΠΉ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ — Π±ΡΡΡΡΠΎ Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ΡΡ ΡΠ²ΡΡΠ΄ΠΎΠ΅ ΡΠ΅Π»ΠΎ (ΡΠΎΡΠΎΡ), ΠΎΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΎΡΠΈ Π΅Π³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° — ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΈΠ» ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠ». ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΉ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°.
ΠΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π€ΡΠΊΠΎ Π² 1852 Π³. Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΠ΅ΠΌΠ»ΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ²ΠΎΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΡ ΡΠ»ΠΎΠ² «Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅», «Π½Π°Π±Π»ΡΠ΄Π°Ρ».
1.4 Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΡΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΠ»Ρ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ, ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΎΡΠ°, Π³ΠΈΡΠΎΡΠΊΠΎΠΏ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ ΠΏΡΠ΅ΡΠ΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½Π° ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΈΠ».
ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΡΠΈΠΎΠ»ΠΈΡΠΎΠ²ΠΎΠΉ ΡΠΈΠ»Ρ. Π’Π°ΠΊ, ΠΏΡΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΠ»Ρ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° (Π½ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π±ΡΠΎΡΠΎΠΊ). ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΡΡΠΈΡΠ° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ½ΠΎΠΉ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠΎ ΡΠΎΡΠΎΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΈ ΡΠ°ΠΌ Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΡΡΠΈΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΡΠΈΠΎΠ»ΠΈΡΠΎΠ²Π° ΡΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π² ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ΅ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠ΅ΡΠ΅ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΊΠΎΡΠΈΠΎΠ»ΠΈΡΠΎΠ²Ρ ΡΠΈΠ»Ρ, ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΠ΅Ρ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΠ»Ρ (Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ).
ΠΠΈΡΠΎΡΠΊΠΎΠΏΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΡΠ΅ΠΊΡ Π²ΡΠ°ΡΠ°ΡΡΠΈΡ ΡΡ ΡΠ΅Π» Π΅ΡΡΡ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠ°ΡΠ΅ΡΠΈΠΈ — Π΅Ρ ΠΈΠ½Π΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΠΈ.
1.5 ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π‘Π²ΠΎΠΉΡΡΠ²Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΈΠ±ΠΎΡΠ°Ρ — Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°Ρ , ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠΎ Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉΡΡ ΡΠΎΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΠΏΠ΅Π½Π΅ΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ (ΠΎΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ).
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ, ΠΏΠΎΠΌΠ΅ΡΡΠ½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ΄Π°Π½ΠΎΠ² ΠΏΠΎΠ΄Π²Π΅Ρ. Π’Π°ΠΊΠΈΠ΅ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΡ ΠΈΠΌΠ΅ΡΡ 3 ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ 3 Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠ΅ΠΉ ΠΠ', BB' ΠΈ CC', ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ ΡΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠ° Π, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ A Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΠΌ.
ΠΠΈΡΠΎΡΠΊΠΎΠΏΡ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π½ΡΡ ΠΌΠ°ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅Π½ΡΡΠΎΠΌ ΠΏΠΎΠ΄Π²Π΅ΡΠ° O, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π°ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°ΠΌΠΈ.
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΎΡΠ° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π³ΠΈΡΠΎΠΌΠΎΡΠΎΡΡ.
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠΌ ΠΈ ΡΠ½ΡΡΠΈΡ Ρ Π½Π΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π°ΡΡΠΈΠΊΠΈ ΡΠ³Π»Π° ΠΈ Π΄Π°ΡΡΠΈΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠΈΡΠΎΡΠΊΠΎΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ°ΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ (Π°Π²ΠΈΠ°Π³ΠΎΡΠΈΠ·ΠΎΠ½Ρ, Π³ΠΈΡΠΎΠΊΠΎΠΌΠΏΠ°Ρ, ΠΠΠ‘ ΠΈ Ρ. ΠΏ.), ΡΠ°ΠΊ ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠΎΠ².
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π³ΠΈΡΠΎΠ²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π°ΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡΠΎΠΌ (ΠΌΠ°ΡΡΠ½ΠΈΠΊΠΎΠΌ), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·-Π·Π° ΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π΅ΠΌΠ»ΠΈ ΠΈ ΡΡ ΠΎΠ΄Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ ΠΈΡΡΠΈΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠ΅Π½ΡΡΠ° ΠΌΠ°ΡΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ°ΡΡΠ½ΠΈΠΊΠ° Π½Π° Π³ΠΈΡΠΎΡΠΊΠΎΠΏ.
ΠΠ°Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
2.1 ΠΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Ρ SharpDevelop 3.0 ΠΈ TaoFramework 2.1.0.
ΠΠ°Π½Π½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ ΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΠΠ.
2.2 ΠΠ°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ TaoFramework
Tao Framework — ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ.NET ΠΈ Mono Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²ΡΠΎΠ΄Π΅ OpenGL ΠΈ SDL. Π Π΅Π΅ ΡΠΎΡΡΠ°Π² Π²Ρ ΠΎΠ΄ΡΡ:
Β· OpenGL 2.1.0.12
Β· Lua 5.1.3.0
Β· OpenAL 1.1.0.1
Β· PhysFS 1.0.1.2
Β· FreeGLUT 2.4.0.2
Β· SDL 1.2.13.0
Β· GLFW 2.6.0.0
Β· ODE 0.9.0.0
Β· Cg 2.0.0.0
Β· DevIL 1.6.8.3
Β· FreeType 2.3.5.0
Β· FFmpeg 0.4.9.0
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Windows ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ: OpenGL, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΡΠ°Π½ΡΠΈΠΉ, ΠΈ Direct3D — ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΡΠΌΠΎΠΉ Microsoft. ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ OpenGL
Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠΈΡΠΎΠΊΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΡΡΡ — ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π² ΠΌΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΡΠ°Π½ΡΠΈΠΉ ΡΠΈΠΏΠ° Sun, Silicon Graphics ΠΈ Π΄Ρ. Π ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π±ΡΠ»Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° IRIS GL, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΠΈΡΠΌΠΎΠΉ Silicon Graphics Inc.
OpenGL ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ (Ρ ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ ΡΠΈΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ OpenGL). ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 120 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌΠΈ (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΡΡ ΠΌΠ΅ΡΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
OpenGL Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ, Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . ΠΠΎΡΡΠΎΠΌΡ OpenGL Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
OpenGL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
1. Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² (ΡΠΎΡΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, Π³ΡΠ°Π½ΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ).
2. Π Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
3. ΠΡΡΠΈΡΠ»ΡΡΡ ΡΠ²Π΅Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π¦Π²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°Π½, ΡΠ°ΠΊ ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Ρ ΡΡΡΡΠΎΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π΅ΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ, ΡΠ΅ΠΊΡΡΡΡ.
4. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ Π½ΠΈΠΌΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ²Π΅ΡΠ΅ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΡΠΈ ΡΡΠΎΠΌ OpenGL ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΌΠ°Π½Π΄Ρ OpenGL ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° — ΠΎΠ½ΠΎ Π²ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π° ΡΠ΅ΡΠ²Π΅Ρ OpenGL ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΡ . Π‘Π°ΠΌ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠ°ΠΊ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΡΠ°ΠΊ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΏΠΎΠΌΠΈΠΌΠΎ OpenGL, Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ FreeGLUT.
OpenGL Utility Toolkit (GLUT) — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ OpenGL, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½ΠΎΠΌ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π·Π° Π²Π²ΠΎΠ΄ΠΎΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΌΡΡΠΈ. ΠΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΄Π° Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ²: ΠΊΡΠ±, ΡΡΠ΅ΡΠ°, ΡΠ°ΠΉΠ½ΠΈΠΊ. GLUT Π΄Π°ΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΡ ΠΌΠ΅Π½Ρ.
GLUT Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΠ°ΡΠΊΠΎΠΌ ΠΠΈΠ»Π³Π°ΡΠ΄ΠΎΠΌ (Mark Kilgard), Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Π² Silicon Graphics Inc.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ GLUT ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π²Π΅ ΡΠ΅Π»ΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎ-Π²ΡΠΎΡΡΡ , GLUT ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ OpenGL. Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ OpenGL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ GLUT, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ Π½Π° API ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠΎ Π·Π½Π°Π½ΠΈΠ΅ΠΌ API ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
2.3 Π‘ΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ SharpDevelop
SharpDevelop (ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ #Develop) ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Π³ΡΡΠΏΠΏΡ Microsoft NET (C#, F#, Visual Basic.NET, Boo). ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΠΎΠΉ.NET ΡΠ΅ΡΠ΅Π· COM Interop.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
Β· ΠΠ°ΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° C#
Β· ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄Π»Ρ C#, IronPython, HTML, ASP, ASP.NET, VBScript, VB.NET, XML, XAML
Β· ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΄Π»Ρ ΡΠΎΡΠΌ WinForms (COM-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ)
Β· ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° NUnit, MbUnit ΠΈ NCover
Β· ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ±ΠΎΡΠΎΠΊ FxCop
Β· ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ
Β· ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° SVN
Β· ΠΠΎΠ½Π²Π΅ΡΡΠΎΡ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ C#, VB.NET, IronPython ΠΈ Boo
Β· ΠΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²
Β· Π Π°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
Β· Π Π°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Add-Ins
Β· ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Microsoft.NET Framework 3.5 + Service Pack 1
Β· ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Π² F# ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ.
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π³ΠΈΡΠΎΡΠΊΠΎΠΏ ΡΡΠΊΠΎ opengl
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ «ΠΠΈΡΠΎΡΠΊΠΎΠΏ Π€ΡΠΊΠΎ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
Β· ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° gyroscope. exe
Β· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΎΡΠΌΠ°ΡΠ° dll Tao. OpenGL, Tao. FreeGlut, Tao.Platform.Windows
Β· ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ icon. ico
ΠΡΠΎΠ΅ΠΊΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ
(Smart Install Maker) Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΠ»ΡΠΊ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ Program Files.
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
4.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ SharpDevelop ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ TaoFramework Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ C: Programm FilesTaoFrameworklib Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ C: WindowsSystem32.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ (Solution) Π² SharpDevelop, ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ File -> New -> Solution. ΠΠΎΡΠ»Π΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΡΠ±ΠΎΡΠ° ΡΠΈΠΏΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΌΠ΅Π½Ρ Project -> Add Reference. ΠΠΎΡΠ»Π΅ Π²ΡΠ±ΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 3, ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ using. ΠΠ°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΠΈΡΡΠΈΠ½Π³Π΅ № 1. (Π’Π°ΠΊ ΠΆΠ΅ Π΄Π°Π»Π΅Π΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»Π½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π).
using Tao. FreeGlut;
using Tao. OpenGl;
using Tao.Platform.Windows;
ΠΠΈΡΡΠΈΠ½Π³ 1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°
4.2 ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΡΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL ΡΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡΠΌΡ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Tao.Platform.Windows ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ simpleOpenGLControl. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Dock Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Fill, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π½ΡΠ» Π²ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠΎΡΠΌΡ. ΠΡΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ.
Π ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ AnT.
4.3 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ Glut
ΠΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ simpleOpenGLControl ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° <οΏ½ΠΈΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°>.InitializeContexts (). ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡΠΌΡ, ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
public MainForm ()
{
InitializeComponent ();
AnT.InitializeContexts ();
}
ΠΠΈΡΡΠΈΠ½Π³ 2. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΡΠΌΡ ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ²ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌ Glut. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ glutInit (). Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠ²Π΅Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΎΠΊΠ½Π°.
Glut.glutInit ();
Glut.glutInitDisplayMode (Glut.GLUT_RGB | Glut. GLUT_DOUBLE | Glut. GLUT_DEPTH);
Gl.glClearColor (0, 0, 0, 1);
ΠΠΈΡΡΠΈΠ½Π³ 3. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Glut ΠΈ Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²ΡΠ²ΠΎΠ΄Π°
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ GLUT_RGB ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠ²Π΅ΡΠΎΠ² RGB (ΠΎΡ Red, Green, Blue — ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ; ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΡΡΡ ΡΠ²Π΅ΡΠ°), GLUT_DOUBLE ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ GLUT_DEPTH ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ° Π³Π»ΡΠ±ΠΈΠ½Ρ (Z-Π±ΡΡΠ΅Ρ).
ΠΠΎΠΌΠ°Π½Π΄Π° glClearColor ΠΈΠΌΠ΅Π΅Ρ 4 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠΎΠ»Π½ΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ²Π΅ΡΠ½ΠΎΡΡΠΈ: ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ, Π³Π΄Π΅ 1 Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ, Π° 0 ΠΏΠΎΠ»Π½Π°Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² Glut, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Π°, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠΈ.
Gl.glEnable (Gl.GL_DEPTH_TEST);
Gl.glEnable (Gl.GL_LIGHTING);
Gl.glEnable (Gl.GL_LIGHT1);
float[] bluish = { 1f, 1f, 1f, 0.1f };
Gl.glLightfv (Gl.GL_LIGHT1, Gl. GL_DIFFUSE, bluish);
Gl.glLightfv (Gl.GL_LIGHT1, Gl. GL_SPECULAR, bluish);
Gl.glLightModeli (Gl.GL_LIGHT_MODEL_COLOR_CONTROL, Gl. GL_SEPARATE_SPECULAR_COLOR);
ΠΠΈΡΡΠΈΠ½Π³ 4. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΠΎΠΌΠ°Π½Π΄ΠΎΠΉ glEnable Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ GL_DEPTH_TEST — ΡΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ, GL_LIGHTING — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π΅ΡΠ°, GL_LIGHT1 — ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ «1». ΠΠΎΠΌΠ°Π½Π΄Π° glLightfv ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠ²Π΅ΡΠ°, Π³Π΄Π΅ GL_LIGHT1 — ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ°, GL_DIFFUSE — ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΡΠ²Π΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ°;GL_SPECULAR — Π·Π° ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ, ΡΡΠ΅ΡΡΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈΠ΄Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ bluish. Π¦Π²Π΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ²Π΅ΡΠ° ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ — Π±Π΅Π»ΡΠΉ. ΠΠΎΡΠ»Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π° glLightModel ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΡΠ±ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ, Π³Π΄Π΅ GL_LIGHT_MODEL_COLOR_CONTROL — ΡΠ΅ΠΆΠΈΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ Π΄ΠΈΡΡΡΠ·Π½ΠΎΠ³ΠΎ, GL_SEPARATE_SPECULAR_COLOR — ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, ΡΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΈΠ· ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΡΡ Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π²ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π΅ΡΠ°. Π’Π°ΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΡΡΡ.
4.4 ΠΠ±ΡΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΊΠ°Π΄ΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ΅Π½Ρ, ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΡΠ΅Π΄Ρ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Timer.
ΠΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
Β· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
Β· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
Β· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Β· ΠΊΠΎΠΌΠ°Π½Π΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π΄Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
Gl.glViewport (0, 0, AnT. Width, AnT. Height);
Gl.glMatrixMode (Gl.GL_PROJECTION);
Gl.glLoadIdentity ();
Glu.gluPerspective (45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
Gl.glMatrixMode (Gl.GL_MODELVIEW);
Gl.glLoadIdentity ();
Gl.glClear (Gl.GL_COLOR_BUFFER_BIT | Gl. GL_DEPTH_BUFFER_BIT);
ΠΠΈΡΡΠΈΠ½Π³ 5. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
ΠΠΎΠΌΠ°Π½Π΄Π° glViewport Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 5 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° Π²Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ. Π€ΡΠ½ΠΊΡΠΈΡ glMatrixMode ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ: Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΌΠ°ΡΡΠΈΡΠ°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ GL_PROJECTION — ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΉ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ glLoadIdentity (ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΡ). ΠΠ°Π»Π΅Π΅ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gluPerspective. Π€ΡΠ½ΠΊΡΠΈΡ gluPerspective ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ GLU — OpenGL Utility Library (GLU). ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenGL, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ ΡΡΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ-ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΠΎΠΉ ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenGL. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠΎΠΈΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΠΎΡ Π²Π°ΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠ³Π»Π΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡ Π²Π°ΡΠ°, ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΡΠΎΠ½ ΠΏΠΎΡΡΠ° ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±Π»ΠΈΠΆΠ½Π΅ΠΉ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
Π ΠΈΡΡΠ½ΠΎΠΊ 1. Π‘Ρ Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ OpenGL
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-Π²ΠΈΠ΄ΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° GL_MODELVIEW ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ glLoadIdentity. ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΡΠΈΡΡΠΊΠ° ΠΎΠΊΠ½Π° (Ρ.ΠΊ. Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΆΠ΅ ΠΌΠΎΠ³ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° — ΠΎΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π° ΠΏΠ΅ΡΠ΅Π΄ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ°Π΄ΡΠ° — ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ glClear. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ Π±ΡΡΠ΅ΡΠΎΠ² Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΈΡΡΠΈΡΡ — Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 5 ΡΡΠΎ Π±ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ° ΠΈ Π±ΡΡΠ΅Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ.
4.5 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΠΎΠ΄Π΅Π»Ρ ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
Β· Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΎΡΠΎΡΠ° Π½Π° ΠΎΡΠΈ
Β· Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠΉ ΡΠ°ΠΌΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΎΡΠ°
Β· Π΄Π²ΡΡ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΡ ΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΎΡΠ° Π² ΡΠ°Π·Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ ΠΠ»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ:
Β· Π΄Π²Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ° Π½Π° ΡΠΎΡΠΎΡ
Β· ΡΡΡΠΆΠ΅Π»ΠΈΡΠ΅Π»Ρ Π½Π° Π²Π½Π΅ΡΠ½ΡΡ ΡΠ°ΠΌΡ ΠΠ°Π»Π°Π½ΡΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΎΡΠ°, ΡΡΡΠΆΠ΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°, ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ.
4.6 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ OpenGL
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ . Π’Π°ΠΊΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΠΏΠΈΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π’Π°ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΠΌΠ° ΠΈ ΡΠΎΡΠΎΡ.
Glut.glutSolidTorus (1,12,64,64);
ΠΠΈΡΡΠΈΠ½Π³ 6. ΠΠ½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΠΌΠ° Π€ΡΠ½ΠΊΡΠΈΡ glutSolidTorus ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ GLUT ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠ° (ΠΊΠΎΠ»ΡΡΠΎ Ρ ΠΊΡΡΠ³ΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ). ΠΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ — ΡΠ°Π΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ°, Π²ΡΠΎΡΠΎΠΉ — ΡΠ°Π΄ΠΈΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΎΡΠ°, ΡΡΠ΅ΡΠΈΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅ΠΊΡΠΎΡΡ ΠΈ ΡΠΎΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΡ — ΡΠΎΡΠ½ΠΎΡΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅Π³Π»Π°Π΄ΠΊΠΈΡ ΠΊΡΠΈΠ²ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π³Π»Π°Π΄ΠΊΡΡ ΠΊΡΠΈΠ²ΡΡ.
Π§ΡΠΎΠ±Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΡΡΠ°ΠΆΠ°Π»Π° ΡΠ²Π΅Ρ, Π° Π½Π΅ ΠΏΠΎΠ³Π»ΠΎΡΠ°Π»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π»Π° ΡΠ΅Π±Ρ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½Π΅Π΅ ΡΠΎ ΡΠ²Π΅ΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ΄Π°ΡΡ Π΅ΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠ΅ΠΈΠ²Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠ°.
float[] color = new float[4]{ 0.8f, 0.7f, 0f, 1};
float[] shininess = new float[1]{ 30 };
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_DIFFUSE, color);
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SPECULAR, color);
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SHININESS, shininess);
ΠΠΈΡΡΠΈΠ½Π³ 7. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΠ΄Π΅ΡΡ ΡΠ΅ΠΆΠΈΠΌ GL_FRONT ΡΡΠ½ΠΊΡΠΈΠΈ glMaterial ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈ. Π Π΅ΠΆΠΈΠΌ GL_DIFFUSE ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠ΅ΡΠ½Π½ΡΠΉ ΡΠ²Π΅Ρ, ΡΠ΅ΠΆΠΈΠΌ GL_SPECULAR ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ, Π° GL_SHININESS Π΅Π³ΠΎ ΡΡΠ΅ΠΏΠ΅Π½Ρ. Π’ΡΠ΅ΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π·ΠΎΠ»ΠΎΡΠΎΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Gl.glRotatef (90,1,0,0);
Gl.glRotatef (rt,.0f,.0f, 1.0f);
Gl.glTranslated (0,0,-12);
Glut.glutSolidCylinder (0.8d, 24d, 64, 64);
Gl.glTranslated (0,0,11.5);
Glut.glutSolidCylinder (10d, 1d, 64, 64);
Gl.glTranslated (9,0d,-1);
Glut.glutSolidCylinder (1d, 1d, 64, 64);
Gl.glTranslated (-18,0,0); //ΠΏΠ΅ΡΠ΅Π½ΠΎΡ
Glut.glutSolidCylinder (1d, 1d, 64, 64);
Gl.glTranslated (9,0,1.5);
Gl.glRotatef (-rt,.0f,.0f, 1.0f);
ΠΠΈΡΡΠΈΠ½Π³ 8. Π ΠΎΡΠΎΡ ΠΈ Π΅Π³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΡΡΡ ΡΠΎΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ»ΠΈΠ½Π΄Ρ. Π€ΡΠ½ΠΊΡΠΈΡ glutSolidCylinder ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΡΠ°Π΄ΠΈΡΡ, Π΄Π»ΠΈΠ½Π°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ Π²Π΄ΠΎΠ»Ρ ΠΈ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ ΡΠΈΠ»ΠΈΠ½Π΄ΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·-Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Glut ΡΠΈΠ»ΠΈΠ½Π΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π½Π΅ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ, Π° Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΈ ΠΎΡΡΡ Π½Π° ΠΎΡΠΈ Z, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ. ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ glRotate ΠΈ glTranslate. Π€ΡΠ½ΠΊΡΠΈΡ glTranslate ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 3 Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² ΡΠΎΡΠΊΡ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ x, y, z ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ. Π€ΡΠ½ΠΊΡΠΈΡ glRotate ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 4 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΠ³ΠΎΠ», ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ°ΠΊΠΈΡ ΠΎΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΏΠΎΠ²ΠΎΡΠΎΡ. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 8 Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΏΠΎ ΠΎΡΠΈ x Π½Π° 90 Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΠΏΠΎ ΠΎΡΠΈ z Π½Π° 12.
ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΉ Π² ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΠΎΡΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ°ΡΠ°ΡΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π²Π΅Π΄ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π½ΡΡΠ° ΡΠΎΡΠΎΡΠ° (ΡΠ΅Π½ΡΡΠ° Π΅Π³ΠΎ ΠΎΡΠΈ ΠΈ ΡΠ΅Π½ΡΡΠ° Π΄ΠΈΡΠΊΠ°). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ.
ΠΠ»Ρ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π·Π°Π΄Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π΅Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π£Π΄ΠΎΠ±Π½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅Π½Ρ.
ΠΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½Π΅ Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Ρ ΡΡΠΌΠΌΠ° Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° 0, ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΎΡΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ°ΠΌΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ ΡΡΡΠΆΠ΅Π»ΠΈΡΠ΅Π»Ρ.
Gl.glRotatef (-180,0,1,0);
Gl.glTranslated (0,0,-17);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,17);
Gl.glRotatef (180,0,1,0);
Gl.glTranslated (0,0,-17);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,17);
Gl.glRotatef (90,0,1,0);
Glut.glutSolidTorus (1,18,64,64);
Gl.glTranslated (0,-19,0);
Gl.glRotatef (-90,1,0,0);
Glut.glutSolidCylinder (6d, 3d, 64,64);
Gl.glRotatef (90,0,0,0);
Gl.glTranslated (0,19,0);
Gl.glRotatef (-90,0,1,0);
ΠΠΈΡΡΠΈΠ½Π³ 9. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ°ΠΌΡ
ΠΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΡ ΠΈ ΠΎΡΠ΅ΠΉ Π΅Π΅ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ², ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠΎΡΠΎΡΠΎΠΌ, ΠΎΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² Π΄Π²Π° ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π Π°ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, ΠΎΡΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½Ρ ΠΎΡΡΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°ΠΌΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ ΡΠ°ΠΌΡ Π±ΡΠ΄ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΈ Π² Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π²ΡΠ°ΡΠ°Ρ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΠΌΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°ΠΌ ΡΡΠ°Π·Ρ — ΡΡΠ΅Π΄Π½Π΅ΠΉ ΠΈ Π²Π½Π΅ΡΠ½Π΅ΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠ°Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π²Π½Π΅ΡΠ½ΡΡ, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΠ°ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠΈ, Π²Π½Π΅ΡΠ½ΡΡ ΡΠ°ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎ Π΄Π²ΡΠΌ.
Π’Π°ΠΊΠΆΠ΅, Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Ρ Ρ ΡΠ°Π·Π½ΡΡ ΡΠ°ΠΊΡΡΡΠΎΠ² ΠΈ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π»Ρ ΡΡΠ΅Π½Ρ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ (ΡΠΎ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²) ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ (Π»ΠΈΡΡΠΈΠ½Π³ 10).
Gl.glTranslated (0,0,camdis);
Gl.glRotatef (ryt, 1.0f,.0f,.0f);
Gl.glRotatef (rxt, 0.0f, 1.0f,.0f)
ΠΠΈΡΡΠΈΠ½Π³ 10. Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ ΠΡΠΏΠΎΠ»Π½ΠΈΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ glFlush Π²ΡΠ·Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Invalidate ().
4.7 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΡΡΠΈ. ΠΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΠΈ Π±ΡΡΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π²Π΅ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΌΡΡΠΈ ΡΠ°ΠΊΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π·Π°Π΄Π°Π½ΠΈΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΊΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ. ΠΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π²Π° ΠΏΠΎΠ»ΡΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΈ ΠΎΡΠΈ), ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΠ΅, Π° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ, ΡΡΠΎ:
Β· ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ
Β· ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠ°ΠΌΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΌΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ, Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ, ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΡΡΠΈ. Π’Π°ΠΊ ΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΠΌ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΡΡΠΈ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ, Π΄Π°ΡΡΠΈΠΉ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊ: Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ, Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΡΡΡΠΎΡ ΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅), ΠΏΡΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΌΡΡΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΡΡ, ΠΊΡΡΡΠΎΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ; ΠΏΡΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΡΠΈΠΊΠ» ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΊΡΡΡΠΎΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΠΎΠ²Ρ.
ΠΠ°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΡΠ΅Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Π½Π°ΠΆΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΉΠΌΠ΅Ρ. ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ³Π»ΠΎΠ² ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ ΡΠ°ΡΡΠ΅ΡΠ°.
class coord{private int xpos, ypos, xpos_n, ypos_n; float mdx, mdy;
public void set_coord (int xx, int yy){xpos=xx;ypos=yy;}
public void set_coordn (int xn, int yn){xpos_n=xn;ypos_n=yn;}
public float mx (){mdx=0.01f*(xpos_n-xpos);return mdx;}
public float my (){mdy=0.01f*(ypos_n-ypos);return mdy;}
public coord (){mdx=0;mdy=0;}
}
ΠΠΈΡΡΠΈΠ½Π³ 11. ΠΠ»Π°ΡΡ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ³Π»ΠΎΠ² ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ·Π΅Π» ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π΅ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ, Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ Ρ Π²Π°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΌΡΡΠΈ. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ³Π»ΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΠ·Π΅Π».
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 12.
void AnTMouseDown (object sender, MouseEventArgs e)
{x=Cursor.Position.X;
y=Cursor.Position.Y;
if (e.Button == MouseButtons. Left) { Cursor. Hide ();}
if (e.Button == MouseButtons. Left){
if (raxis==false){cord.set_coord (Cursor.Position.X, Cursor.Position.Y);click=true;}
if (raxis==true) {cord_n.set_coord (Cursor.Position.X, Cursor.Position.Y);click=true; }}
if (e.Button==MouseButtons.Right) {ConMenu.Show (Cursor.Position.X, Cursor.Position.Y);}
ΠΠΈΡΡΠΈΠ½Π³ 12. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°ΠΆΠ°ΡΠΈΡ ΠΌΡΡΠΈ ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΌΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ Π»Π΅Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΡΠΎ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΊΡΡΡΠΎΡ, Π·Π°Π΄Π°ΡΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «ΠΈΡΡΠΈΠ½Π°», ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π²Π΅Π΄Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΡΠ·ΠΎΠ²Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΡΠΈΡΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°ΠΆΠ°Π² Π»Π΅Π²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ Π·Π°Π΄Π°Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅.
void AnTMouseMove (object sender, MouseEventArgs e)
{
if (click==true) {if (raxis == false){cord.set_coordn (Cursor.Position.X, Cursor.Position.Y);
ryt+=cord.my ()*sens;
rxt+=cord.mx ()*sens;
ryn+=cord_n.my ()*sens;
rxn+=cord_n.mx ()*sens; }
if (raxis == true) {cord_n.set_coordn (Cursor.Position.X, Cursor.Position.Y);
ryt+=cord.my ()*sens;
rxt+=cord.mx ()*sens;
ryn+=cord_n.my ()*sens;
rxn+=cord_n.mx ()*sens;
} }
ΠΠΈΡΡΠΈΠ½Π³ 13. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΡΡΠΈ Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π½Π°ΠΆΠ°ΡΠ° Π»ΠΈ Π»Π΅Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΌΡΡΠΈ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠ΅ Π² ΠΊΠ»Π°ΡΡ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ³Π»ΠΎΠ². ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΌ Π·Π° ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠ·Π»ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ³Π»ΠΎΠ² ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π²Π»ΠΈΡΡΡΠΈΠΉ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΡΡΠΈ.
ΠΡΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΌΠ΅Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° «Π»ΠΎΠΆΡ», ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅ΠΉ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΡΡΡΠΎΡΠ° ΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π»ΠΈΡΡΠΈΠ½Π³ 14).
void AnTMouseUp (object sender, MouseEventArgs e)
{click=false;
if (e.Button == MouseButtons. Left) {Cursor.Show ();}}
ΠΠΈΡΡΠΈΠ½Π³ 14. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°Π²ΠΈΡΠ° ΠΌΡΡΠΈ Π½Π°ΠΆΠ°ΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ. ΠΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° (Π»ΠΈΡΡΠΈΠ½Π³ 15).
void Timer1Tick (object sender, EventArgs e)
{
Draw ();
if (click==true) {Cursor.Position = new Point (x, y);}
}
ΠΠΈΡΡΠΈΠ½Π³ 15. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΡΡΠ½ΠΊΡΠΈΡ Draw () Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 15). Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΡΡΠΈ, ΡΠ³Π»ΠΎΠ² ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°, Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
bool click=false;
float ryt=0,rxt=0,rxn=0,ryn=-90;
float sens=3f;
float camdis=-80;
bool raxis=false;
float rt=0;
ΠΠΈΡΡΠΈΠ½Π³ 16. ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ. ΠΠ»Ρ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΡΠΎΡΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ ContextMenuStrip, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ½ΠΊΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ, ΠΊΠ»ΠΈΠΊΠ½ΡΠ² ΠΏΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 2. Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠ½ΠΊΡΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΠΎΡΠΌΠ΅ΡΠ΅Π½ ΠΈΠ»ΠΈ Π½Π΅Ρ).
ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅ ΠΌΠ΅Π½Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ.
void AxisToolStripMenuItemClick (object sender, EventArgs e)
{
raxis = true;
cameraToolStripMenuItem.Checked = false;
axisToolStripMenuItem.Checked = true;
}
ΠΠΈΡΡΠΈΠ½Π³ 17. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 17 ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠ½ΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ, ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠ½ΠΊΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ.
Π ΠΏΡΠ½ΠΊΡΠ΅ ΠΌΠ΅Π½Ρ Π²ΡΡ ΠΎΠ΄ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ²ΠΎΠ΄Ρ Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ΄Π΅Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ.
ΠΠΎΠ΄Π΅Π»Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΠ΄Π΅Π½Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π» ΡΠ²ΠΎΠΈ Π½Π°Π²ΡΠΊΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ²ΠΎΠΈΠ» ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ OpenGL, ΡΠ°Π·Π²ΠΈΠ» Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠ΅Π΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C#.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΠ°Π΄Π°ΡΠ° ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° Π€ΡΠΊΠΎ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎΠΉ.
ΠΠΎΠ»ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠ³ΡΠ°Π»ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΠΌΠΎΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ. Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C#, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ DotNet, ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Windows.
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠΎΠ² Π² ΠΊΡΡΡΠ°Ρ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΈΠ·ΠΈΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²
1. OpenGL. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΡ ΠΠ΅ΠΉΡΠΎΠ½, ΠΠ΅ΠΉΠ΄Π΅Ρ ΠΠΆΠ΅ΠΊΠΈ, ΠΠ΅Π²ΠΈΡ Π’ΠΎΠΌ, Π¨ΡΠ°ΠΉΠ½Π΅Ρ ΠΠ΅ΠΉΠ².
2. ΠΠΈΡΠΎΡΠΊΠΎΠΏ — ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://ru.wikipedia.org/wiki/%D0%93%D0%B8%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BF (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
3. SharpDevelop 3.2 SoftTorrent.ru — ΡΠΊΠ°ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΡΠ΅Π½Ρ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://softtorrent.ru/windows-soft-torrent/637-sharpdevelop-32.html (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
4. GLUT — ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://ru.wikipedia.org/wiki/GLUT (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
5. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenGL [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://compgraph.tpu.ru/lib_opengl.htm (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
6. Tao Framework — ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://ru.wikipedia.org/wiki/Tao_Framework (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
7. ΠΠ΅ΡΠ²ΠΎΠ΅ 3D ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://www.programmingcpp.narod.ru/3d.htm (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
8. Delphi ΠΈ OpenGL [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://cube.h1.ru/d_gl.html (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
9. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ OpenGL [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. — Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://www.esate.ru/page/initsializatsiya-opengl-v-c-sharp-step-2 (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ: 06.12.12).
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A. ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
using System;
using System.Collections.Generic;
using System. Drawing;
using System.Windows.Forms;
using Tao. FreeGlut;
using Tao. OpenGl;
using Tao.Platform.Windows;
namespace a2
{
public partial class MainForm: Form
{
public MainForm ()
{
InitializeComponent ();
AnT.InitializeContexts ();
}
bool click=false;
float ryt=0,rxt=0,rxn=0,ryn=-90;
float sens=3f;
float camdis=-80;
bool raxis=false;
float rt=0;
void MainFormLoad (object sender, EventArgs e)
{
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Glut
Glut.glutInit ();
Glut.glutInitDisplayMode (Glut.GLUT_RGB | Glut. GLUT_DOUBLE | Glut. GLUT_DEPTH);
// ΠΎΡΠΈΡΠΊΠ° ΠΎΠΊΠ½Π°
Gl.glClearColor (0, 0, 0, 1);
// Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² OpenGL Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Gl.glEnable (Gl.GL_DEPTH_TEST);
Gl.glEnable (Gl.GL_LIGHTING);
Gl.glEnable (Gl.GL_LIGHT1);
float[] bluish = { 1f, 1f, 1f, 0.1f };
Gl.glLightfv (Gl.GL_LIGHT1, Gl. GL_DIFFUSE, bluish);
Gl.glLightfv (Gl.GL_LIGHT1, Gl. GL_SPECULAR, bluish);
Gl.glLightModeli (Gl.GL_LIGHT_MODEL_COLOR_CONTROL, Gl. GL_SEPARATE_SPECULAR_COLOR);
MessageBox.Show («ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π·ΠΎΡΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ. ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ.» ," ΠΠΈΡΠΎΡΠΊΠΎΠΏ Π€ΡΠΊΠΎ — ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ…");
}
class coord{private int xpos, ypos, xpos_n, ypos_n; float mdx, mdy;
public void set_coord (int xx, int yy){xpos=xx;ypos=yy;}
public void set_coordn (int xn, int yn){xpos_n=xn;ypos_n=yn;}
public float mx (){mdx=0.01f*(xpos_n-xpos);return mdx;}
public float my (){mdy=0.01f*(ypos_n-ypos);return mdy;}
public coord (){mdx=0;mdy=0;}
}
coord cord=new coord ();
coord cord_n=new coord ();
void Timer1Tick (object sender, EventArgs e)
{
Draw ();
if (click==true) {Cursor.Position = new Point (x, y);}
}
int x, y;
void Draw ()
{
rt+=15.5f;
Gl.glViewport (0, 0, AnT. Width, AnT. Height);
Gl.glMatrixMode (Gl.GL_PROJECTION);
Gl.glLoadIdentity ();
Glu.gluPerspective (45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
Gl.glMatrixMode (Gl.GL_MODELVIEW);
Gl.glLoadIdentity ();
Gl.glClear (Gl.GL_COLOR_BUFFER_BIT | Gl. GL_DEPTH_BUFFER_BIT);
Gl.glTranslated (0,0,camdis); //ΠΎΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Gl.glRotatef (ryt, 1.0f,.0f,.0f); //Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ y
Gl.glRotatef (rxt, 0.0f, 1.0f,.0f); //Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ y
Glut.glutSolidTorus (1,12,64,64); //Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π°Ρ Π²Π½ΡΡΡΡΠ½Π½ΡΡ ΡΠ°ΠΌΠ°
Gl.glRotatef (90,1,0,0);// ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠΎΡΠΎΡΠ° Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ
Gl.glRotatef (rt,.0f,.0f, 1.0f); //Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΎΡΠ°
float[] color = new float[4]{ 0.8f, 0.7f, 0f, 1}; //ΠΠΎΠ»ΠΎΡΠΎΠΉ ΡΠ²Π΅Ρ
float[] shininess = new float[1]{ 30 };
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_DIFFUSE, color); //Π¦Π²Π΅Ρ ΡΠΎΡΠΎΡΠ°
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SPECULAR, color); //ΠΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SHININESS, shininess); //Π‘ΡΠ΅ΠΏΠ΅Π½Ρ ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
Gl.glTranslated (0,0,-12);//ΠΏΠ΅ΡΠ΅Π½ΠΎΡ
Glut.glutSolidCylinder (0.8d, 24d, 64, 64);//ΠΎΡΡ ΡΠΎΡΠΎΡΠ°
Gl.glTranslated (0,0,11.5); //ΠΏΠ΅ΡΠ΅Π½ΠΎΡ
Glut.glutSolidCylinder (10d, 1d, 64, 64); //Π΄ΠΈΡΠΊ ΡΠΎΡΠΎΡΠ°
float[] color2 = new float[4]{.2f,.2f,.2f, 1}; //ΡΠ²Π΅Ρ
float[] shininess2 = new float[1]{ 30 };
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_DIFFUSE, color2); //Π¦Π²Π΅Ρ
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SPECULAR, color2); //ΠΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ
Gl.glMaterialfv (Gl.GL_FRONT, Gl. GL_SHININESS, shininess2); //Π‘ΡΠ΅ΠΏΠ΅Π½Ρ ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
Gl.glTranslated (9,0d,-1);//ΠΏΠ΅ΡΠ΅Π½ΠΎΡ
Glut.glutSolidCylinder (1d, 1d, 64, 64); //Π±Π°Π»Π°Π½ΡΠΈΡ1
Gl.glTranslated (-18,0,0); //ΠΏΠ΅ΡΠ΅Π½ΠΎΡ
Glut.glutSolidCylinder (1d, 1d, 64, 64);//Π±Π°Π»Π°Π½ΡΠΈΡ 2
Gl.glTranslated (9,0,1.5);
Gl.glRotatef (-rt,.0f,.0f, 1.0f);
Gl.glRotatef (ryn, 1,0,0);//Π²ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½ ΡΠ°ΠΌΡ
Gl.glRotatef (-90,0,1,0);// ΠΎΡΠΈ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΠ°ΠΌΡ
Gl.glTranslated (0,0,-14);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,14);
Gl.glRotatef (180,0,1,0);
Gl.glTranslated (0,0,-14);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,14);
Gl.glRotatef (-90,0,1,0);
Gl.glRotatef (90,1,0,0);// ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΠΌΠ°
Glut.glutSolidTorus (1,15,64,64);
Gl.glRotatef (-90,1,0,0);
Gl.glRotatef (rxn, 0,0,1);
Gl.glRotatef (-180,0,1,0);// ΠΎΡΠΈ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ°ΠΌΡ
Gl.glTranslated (0,0,-17);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,17);
Gl.glRotatef (180,0,1,0);
Gl.glTranslated (0,0,-17);
Glut.glutSolidCylinder (0.5d, 2d, 64, 64);
Gl.glTranslated (0,0,17);
Gl.glRotatef (90,0,1,0);// Π²Π½Π΅ΡΠ½ΡΡ ΡΠ°ΠΌΠ°
Glut.glutSolidTorus (1,18,64,64);
Gl.glTranslated (0,-19,0);
Gl.glRotatef (-90,1,0,0);
Glut.glutSolidCylinder (6d, 3d, 64,64);
Gl.glRotatef (90,0,0,0);
Gl.glTranslated (0,19,0);
Gl.glRotatef (-90,0,1,0);
Gl.glFlush ();
AnT.Invalidate ();
}
void AnTMouseDown (object sender, MouseEventArgs e)
{ x=Cursor.Position.X;
y=Cursor.Position.Y;
if (e.Button == MouseButtons. Left) { Cursor. Hide ();}
if (e.Button == MouseButtons. Left) {
if (raxis == false) {cord.set_coord (Cursor.Position.X, Cursor.Position.Y); click=true;}
if (raxis==true) {cord_n.set_coord (Cursor.Position.X, Cursor.Position.Y);click=true; }}
if (e.Button==MouseButtons.Right) {ConMenu.Show (Cursor.Position.X, Cursor.Position.Y);}
}
void AnTMouseMove (object sender, MouseEventArgs e)
{
if (click==true) {if (raxis == false){cord.set_coordn (Cursor.Position.X, Cursor.Position.Y);
ryt+=cord.my ()*sens;
rxt+=cord.mx ()*sens;
ryn+=cord_n.my ()*sens;
rxn+=cord_n.mx ()*sens; }
if (raxis == true){cord_n.set_coordn (Cursor.Position.X, Cursor.Position.Y);
ryt+=cord.my ()*sens;
rxt+=cord.mx ()*sens;
ryn+=cord_n.my ()*sens;
rxn+=cord_n.mx ()*sens;
} }
}
void AnTMouseUp (object sender, MouseEventArgs e)
{
click=false;
if (e.Button == MouseButtons. Left) {Cursor.Show ();}
}
void ExitToolStripMenuItemClick (object sender, EventArgs e)
{
Application.Exit ();
}
void HighToolStripMenuItemClick (object sender, EventArgs e)
{
sens=5;
highToolStripMenuItem.Checked=true;
lowToolStripMenuItem.Checked=false;
mediumToolStripMenuItem.Checked=false;
}
void MediumToolStripMenuItemClick (object sender, EventArgs e)
{
sens=3f;
mediumToolStripMenuItem.Checked=true;
highToolStripMenuItem.Checked=false;
lowToolStripMenuItem.Checked=false;
}
void LowToolStripMenuItemClick (object sender, EventArgs e)
{
sens=1;
lowToolStripMenuItem.Checked=true;
mediumToolStripMenuItem.Checked=false;
highToolStripMenuItem.Checked=false;
}
void CloseToolStripMenuItemClick (object sender, EventArgs e)
{
camdis=-80;
closeToolStripMenuItem.Checked = true;
farToolStripMenuItem.Checked = false;
closeToolStripMenuItem1.Checked = false;
}
void FarToolStripMenuItemClick (object sender, EventArgs e)
{
camdis=-120;
closeToolStripMenuItem.Checked = false;
farToolStripMenuItem.Checked = true;
closeToolStripMenuItem1.Checked = false;
}
void CloseToolStripMenuItem1Click (object sender, EventArgs e)
{
camdis=-50;
closeToolStripMenuItem.Checked = false;
farToolStripMenuItem.Checked = false;
closeToolStripMenuItem1.Checked = true;
}
void CameraToolStripMenuItemClick (object sender, EventArgs e)
{
raxis = false;
cameraToolStripMenuItem.Checked =true;
axisToolStripMenuItem.Checked =false;
}
void AxisToolStripMenuItemClick (object sender, EventArgs e)
{
raxis = true;
cameraToolStripMenuItem.Checked = false;
axisToolStripMenuItem.Checked = true;
}
}
}
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π. Π‘Π½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π‘Π½ΠΈΠΌΠΎΠΊ 1. ΠΠ°ΠΏΡΡΠΊ Π‘Π½ΠΈΠΌΠΎΠΊ 2. ΠΠ±ΡΠΈΠΉ Π²ΠΈΠ΄ Π‘Π½ΠΈΠΌΠΎΠΊ 3. ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ Π‘Π½ΠΈΠΌΠΎΠΊ 4. ΠΡΠ±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ Π‘Π½ΠΈΠΌΠΎΠΊ 5. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ ΠΎΠΊΠ½Π° Ρ Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ ΠΊΠ°ΠΌΠ΅ΡΡ