ΠΠ»ΡΡΠ°-ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅: Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ΅ΠΊΡΠΎΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΈΡ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠΊΠΈ, ΠΏΡΡΠΌΡΠ΅, ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΡΠΈΠ²ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. ΠΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ, ΡΠ²Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΈΡΡΠ½ΠΎΠΊ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΠ΅Π», Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΠΈΡ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ²… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ»ΡΡΠ°-ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅: Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- 1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
- 2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
- 2.1 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
- 2.2 ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ Π³ΡΠ°Π½Π΅ΠΉ
- 2.3 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ΅Π²ΡΡ ΠΈ Π½Π΅ Π»ΠΈΡΠ΅Π²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ
- 2.4 ΠΠ°ΠΊΡΠ°ΡΠΊΠ° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
- 3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 3.1 ΠΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
- 3.2 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
- 3.3 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
- 3.4 ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
- 4. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 4.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
- 4.2 Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 4.3 Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
- ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
- Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° — ΡΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°. ΠΠΎ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: Π΄Π²ΡΠΌΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ. ΠΠ²ΡΠΌΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ, ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΠΈ ΡΡΠ°ΠΊΡΠ°Π»ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ.
ΠΠ΅ΠΊΡΠΎΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΈΡ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠΊΠΈ, ΠΏΡΡΠΌΡΠ΅, ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΡΠΈΠ²ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. ΠΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ, ΡΠ²Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΈΡΡΠ½ΠΎΠΊ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΠ΅Π», Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΠΈΡ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ². ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ, Π΄Π΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ.
Π Π°ΡΡΡΠΎΠ²Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ (ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ) ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — ΡΡΠΊΠΎΡΡΠΈ, ΡΠ²Π΅ΡΠ°, ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ — ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π Π°ΡΡΡΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ². ΠΠ΅Π· ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΡΠ΅ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ³Π΄Π° ΠΈΡΡΠ΅Π·Π½ΡΡ Π½Π°Π²ΡΠ΅Π³Π΄Π°, ΡΡΠΎ ΠΈΠ½Π°ΡΠ΅ Π² Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅ΡΠΊΠ°. Π ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ: Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΡΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
Π ΡΠ΅Π½ΡΡΠ΅ ΡΡΠ°ΠΊΡΠ°Π»ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ Π»Π΅ΠΆΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΡΠ°ΠΊΡΠ°Π»Π°, ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΡΡΠΊΡΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΠΌΠΈ. Π€ΡΠ°ΠΊΡΠ°Π»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π»ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π΄Π»Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ°Π»ΠΎ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠ°ΠΊΡΠ°Π»Ρ ΡΠ»Π°Π±ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π²Π½Π΅ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π’ΡΡΡ ΠΌΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ. Π ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡ. ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ. ΠΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡΠ° ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½. Π’Π°ΠΊ, Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π±ΡΠ΄Π΅Ρ 3 Π²Π΅ΡΡΠΈΠ½Ρ. ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π²Π΅ΠΊΡΠΎΡ (x, y, z). Π£ΠΌΠ½ΠΎΠΆΠΈΠ² Π²Π΅ΠΊΡΠΎΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ (ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°/ΡΠ΄Π²ΠΈΠ³Π°/ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠΉ Π²Π΅ΠΊΡΠΎΡ. Π‘Π΄Π΅Π»Π°Π² ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½, Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π² Π²ΡΠ΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ, ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΡΡΠ΅Π½Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Microsoft Visual Studio, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ C#.
Π°Π»ΡΡΠ° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π³ΡΠ°ΡΠΈΠΊΠ°
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π»ΡΡΠ°-ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ²: ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ, Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅Ρ. Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΡΠ΅Π», Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ° ΡΠΊΠ²ΠΎΠ·Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΈ ΡΠΎΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ° (ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈ) Π·Π° Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ.
Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΡΡΠ΅Π½Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ²: ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π³ΡΠ°Π½Π΅Π½ΠΎΠ³ΠΎ ΡΡΠ°ΠΊΠ°Π½Π° ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΡΠ±Π°. Π‘ΡΠ°ΠΊΠ°Π½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ°, Π° ΠΊΡΠ± — Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ. Π‘ΡΠ°ΠΊΠ°Π½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 20 Π±ΠΎΠΊΠΎΠ²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ ΠΈ Π³ΡΠ°Π½ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΠ°Π½Π°, Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ. ΠΡΠ± — ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΈΠΌΠ΅ΡΡΠ°Ρ 6 Π³ΡΠ°Π½Π΅ΠΉ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ². ΠΠ°Π½Π½Π°Ρ ΡΡΠ΅Π½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΡΡΠ΅ΠΊΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡΠ΅ΠΊΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ°ΠΊΠ°Π½Π° (ΡΠ°Π±Π»ΠΈΡΠ° 1).
Π’Π°Π±Π»ΠΈΡΠ° 1 — ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ°ΠΊΠ°Π½Π°
ΠΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Π₯ | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Y | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Z | |
— 50 | — 50 | |||
— 48 | — 50 | — 15 | ||
— 40 | — 50 | — 30 | ||
— 28 | — 50 | — 42 | ||
— 15 | — 50 | — 48 | ||
— 50 | — 50 | |||
— 50 | — 48 | |||
— 50 | — 42 | |||
— 50 | — 30 | |||
— 50 | — 15 | |||
— 50 | ||||
— 50 | ||||
— 50 | ||||
— 50 | ||||
— 50 | ||||
— 50 | ||||
— 15 | — 50 | |||
— 28 | — 50 | |||
— 40 | — 50 | |||
— 48 | — 50 | |||
— 60 | ||||
— 58 | — 19 | |||
— 48 | — 36 | |||
— 35 | — 50 | |||
— 18 | — 58 | |||
— 60 | ||||
— 58 | ||||
— 50 | ||||
— 36 | ||||
— 19 | ||||
— 18 | ||||
— 35 | ||||
— 48 | ||||
— 58 | ||||
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°ΠΊΠ°Π½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠΈΠ»ΠΈΠ½Π΄ΡΠ°, Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠΌ Π²Π΅ΡΡ ΠΎΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ΅ΡΡΠΈΠ½Ρ ΠΎΡ 0 ΠΏΠΎ 19 ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΠ°Π½Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²Π΅ΡΡΠΈΠ½ ΡΡΡΠΎΠΈΡΡΡ Π³ΡΠ°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΠ°Π½Π°. ΠΠ΅ΡΡΠΈΠ½Ρ ΠΎΡ 20 Π΄ΠΎ 39 ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°, Π½ΠΎ ΡΡΠΈΡΡΠ²Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡ ΡΠΎΡΡΠ΄Π°, Π³ΡΠ°Π½Ρ ΠΈΠ· ΡΡΠΈΡ Π²Π΅ΡΡΠΈΠ½ ΡΡΡΠΎΠΈΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΊΠ°Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ 20 Π±ΠΎΠΊΠΎΠ²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Π°Ρ Π³ΡΠ°Π½Ρ ΡΡΡΠΎΠΈΡΡΡ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ΠΎΠ΄Π½Π° ΠΈΠ· Π±ΠΎΠΊΠΎΠ²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ 0, 20, 21, 1 (ΡΠΈΠΊΠ»: i, i + 20, i + 21, i + 1).
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΊΡΠ±Π° Ρ ΡΠ΅Π±ΡΠΎΠΌ 50 (ΡΠ°Π±Π»ΠΈΡΠ° 2).
Π’Π°Π±Π»ΠΈΡΠ° 2 — ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΊΡΠ±Π°
ΠΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Π₯ | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Y | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Z | |
ΠΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΠ±Π° | ||||
— 60 | — 50 | — 65 | ||
— 60 | — 50 | — 115 | ||
— 10 | — 50 | — 115 | ||
— 10 | — 50 | — 65 | ||
ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½Ρ | ||||
— 60 | — 65 | |||
— 60 | — 115 | |||
— 10 | — 115 | |||
— 10 | — 65 | |||
ΠΠΎΠ΄Π΅Π»Ρ ΠΊΡΠ±Π° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΠ°Π½Π°, ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π³ΡΠ°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΌ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½Ρ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΎΠΊΠΎΠ²ΡΠ΅ Π³ΡΠ°Π½ΠΈ. ΠΠ°ΠΆΠ΄Π°Ρ Π³ΡΠ°Π½Ρ ΠΊΡΠ±Π° Π·Π°Π΄Π°Π΅ΡΡΡ 4 Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ Π΄Π²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡ ΡΡΠ΅Π½Ρ, ΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΡΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠ½ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΡΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°Π½Π΅ΠΉ, Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΡΡΠ΅Π½Ρ.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
2.1 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ (ΠΈ ΡΠΊΡΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΠ»Ρ Π²ΠΈΠ΄ΠΎΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ΄Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΠΌΠ°Π½ Π·ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΉ ΠΈΠ·-Π·Π° ΡΠ°ΠΊΡΡΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π΄Π°Π½Π½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΈΡΡΠ΅Π·Π½Π΅Ρ. ΠΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊ Π²ΠΈΠ΄ΠΎΠ²ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π½Π°ΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
// ΠΠΈΠ΄ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ:
View [i]. x = 20 * (int) Math. Round (Vertex [i]. x * (-Math. Sin (teta)) + Vertex [i]. y * Math. Cos (teta));
View [i]. y = 20 * (int) Math. Round (Vertex [i]. x * (-Math. Cos (phi) * Math. Cos (teta)) — Vertex [i]. y * (Math. Cos (phi) * Math. Sin (teta)) + Vertex [i]. z * Math. Sin (phi));
View [i]. z = - 20 * (int) Math. Round (Vertex [i]. x * (-Math. Sin (phi) * Math. Cos (teta)) — Vertex [i]. y * (Math. Sin (phi) * Math. Sin (teta)) — Vertex [i]. z * (Math. Cos (phi)) + R0);
// ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Perspective [i]. X = pictureBox1. Width / 2 + (int) Math. Round (D0 * (View [i]. x / View [i]. z));
Perspective [i]. Y = pictureBox1. Height / 2 + (int) Math. Round (D0 * (View [i]. y / View [i]. z));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Scrn [i]. X = (int) Perspective [i]. X + pictureBox1. Width / 2;
Scrn [i]. Y = (int) Perspective [i]. Y + pictureBox1. Height / 2;
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π, Π³Π΄Π΅ ΡΠΊΠ°Π·Π°Π½ Π»ΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
2.2 ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ Π³ΡΠ°Π½Π΅ΠΉ
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΡΡΡΠΎΠΈΡΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠΎ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΡΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ, ΡΠΎ Π΅ΡΡΡ Π³ΡΠ°Π½ΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΠ΅Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ, Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ Π³ΡΠ°Π½ΠΈ ΡΠ΄Π°Π»ΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ ΠΡΡΠ»Π°-ΠΡΡΡΠ»Π°-Π‘Π°Π½ΡΠ°, ΠΈΠ½Π°ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΠΈΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°. ΠΠ΄Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ Π³ΡΠ°Π½Π΅ΠΉ ΠΏΠΎ Π³Π»ΡΠ±ΠΈΠ½Π΅, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Ρ Π·Π°ΠΊΡΠ°ΡΠΊΠΎΠΉ Π³ΡΠ°Π½ΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π΄Π°Π»ΡΠ½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π³ΡΠ°Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅, Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΠΎΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΡΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π°Π»ΡΠ½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ. Π§Π°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΡΠ°ΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ΅ΡΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π³ΠΎΠ²:
1. ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌΠΈ z-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ;
2. ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΠΈ z-ΠΎΠ±ΠΎΠ»ΠΎΡΠ΅ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²;
3. ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠ°Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅ΠΉ z-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ.
ΠΠ»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ Z, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»ΠΎΠΆΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ ΡΡΡ ΡΡΠΌΠΌΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠ½. ΠΡΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°. ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΠΏΠ°ΡΠ½ΠΎ Π±ΡΠ΄Π΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΈΡ . ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ, ΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ, Π° Π·Π½Π°ΡΠΈΡ, Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π³ΡΠ°Π½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Z.
ΠΠ°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½. Π ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅ΡΠ»ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΡΡΠ΅Π½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π±ΡΠ΄Π΅Ρ Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°Π΄ΡΠ΅. Π Π·Π½Π°ΡΠΈΡ, ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ «Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°» ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ.
2.3 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ΅Π²ΡΡ ΠΈ Π½Π΅ Π»ΠΈΡΠ΅Π²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ
ΠΠ»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΠ°Π½ΠΈ Π²Π΅ΠΊΡΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ, ΠΈ ΠΏΠΎ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π³ΡΠ°Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π½Ρ. Π‘ΡΠ°Π·Ρ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π½Π°ΡΠ° ΡΡΠ΅Π½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
ΠΠ΄Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ ΡΠ³Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π·Π³Π»ΡΠ΄Π° ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΡ ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΡΠ°Π½Π΅ΠΉ, Π»ΠΈΡΠ΅Π²Π°Ρ ΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π΅Ρ. ΠΠΎΡΠΌΠ°Π»Ρ ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π· Π»ΡΠ±ΡΠ΅ ΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ. ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: N (Nx, Ny, Nz). Π’ΡΠΈ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ: A (Ax, Ay, Az), B (Bx, By, Bz), C (Cx, Cy, Cz). Π£ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅:
Nx * X + Ny * Y + Nz * Z + d = 0.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ:
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 4Π₯4.
ΠΠ°ΠΉΠ΄Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π²Π΅Π½ 0. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
Nx =, Ny =, Nz = .
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ d Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΠΊΡΠΎΡΠ° Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΡΠ°ΠΊ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄:
Nx = Ay (Bz — Cz) + By (Cz — Az) + Cy (Az — Bz);
Ny = Az (Bx — Cx) + Bz (Cx — Ax) + Cz (Ax — Bx);
Nz = Ax (By — Cy) + Bx (Cy — Ay) + Cx (Ay — By).
ΠΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π²Π΅ΠΊΡΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠΈΠ½ΡΡΠ° ΡΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»ΠΈΠ½Ρ Π²Π΅ΠΊΡΠΎΡΠ° ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΠ°Π½ΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π²Π΅ΠΊΡΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ, ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π³ΡΠ°Π½ΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅ ΡΡΠ΅Π½Ρ Π²Π΅ΠΊΡΠΎΡΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ (Π½ΠΎ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ).
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Nz. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅: Nz = Nz/ (ΠΠΎΡΠ΅Π½Ρ (Nx*Nx + Ny*Ny + Nz*Nz)).
ΠΡΠ»ΠΈ Nz > 0, ΡΠΎ Π³ΡΠ°Π½Ρ Π½Π΅ Π²ΠΈΠ΄Π½Π°, Π΅ΡΠ»ΠΈ Nz < 0, ΡΠΎ Π³ΡΠ°Π½Ρ Π²ΠΈΠ΄Π½Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ Π½Π° ΡΡΠ΅Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΎΠ±Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π³ΡΠ°Π½Π΅ΠΉ.
2.4 ΠΠ°ΠΊΡΠ°ΡΠΊΠ° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ΅Π½Π΅ ΠΌΡ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ, ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠΆΠ΅ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠ΅ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ΄Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π±ΡΠ΄Π΅ΠΌ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π³ΡΠ°Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΌΠ½ΠΎΠΆΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° (A, R, G, B) Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ. Π¦Π²Π΅Ρ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°Π·Π½ΡΠ΅, Π½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π΅ΡΠΎΠ² ΠΎΠ΄Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π° Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ ΠΊΡΠ±Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ — 255, Π° Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ ΡΡΠ°ΠΊΠ°Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: 80 Π΄Π»Ρ Π±ΠΎΠΊΠΎΠ²ΡΡ Π³ΡΠ°Π½Π΅ΠΉ, ΠΈ 100 Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΠ°Π½Π°. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nz Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΡΡ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΡΠΌΠ°Π»ΡΡ ΠΈ Π»ΡΡΠΎΠΌ ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²Π΅ΡΠ°.
ΠΠ»Ρ Π·Π°ΠΊΡΠ°ΡΠΊΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π·Π°ΠΊΡΠ°ΡΠΊΠΈ — FillPolygon. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΎΡΠ΅ΠΊ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²Π΅Ρ Π·Π°ΠΊΡΠ°ΡΠΊΠΈ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ.
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
3.1 ΠΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π ΡΠ°Π±Π»ΠΈΡΠ΅ 3 ΡΠΊΠ°Π·Π°Π½Ρ Π²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π’Π°Π±Π»ΠΈΡΠ° 3 — Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ | ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
int | ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ | |
double | ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ | |
bool | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ | |
int [] | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², Π²Π΅ΡΡΠΈΠ½) | |
double [] | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Ρ ΡΠ°Π½ΡΡΠΈΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ², Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z | |
Π‘ΡΡΡΠΊΡΡΡΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΡΡΠΈΠ½ | |
ΠΠ»Π°ΡΡΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ | |
3.2 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 4.
Π’Π°Π±Π»ΠΈΡΠ° 4 — ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ | Π€ΡΠ½ΠΊΡΠΈΡ | |
b | ΠΠ»Π°ΡΡ Bitmap | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ | |
g | ΠΠ»Π°ΡΡ Graphics | ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | |
image | ΠΠ»Π°ΡΡ Image | ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ | |
Vertex | Point3D [] | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΡΡΠΈΠ½ | |
View | Point3D [] | ΠΠΈΠ΄ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ | |
Scrn | Point [] | ΠΠ°ΡΡΠΈΠ² ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ | |
Perspective | Point [] | ΠΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ | |
NZ | double [] | ΠΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ | |
Order | int [] | ΠΠ°ΡΡΠΈΠ², Π·Π°Π΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ, ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² | |
D | double [] | ΠΠ°ΡΡΠΈΠ², Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ Z ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ | |
Teta, Phi | double | ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ³Π»ΠΎΠ² | |
nx, ny, nz | double | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ | |
R0 | int | ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π½Ρ | |
D0 | int | ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ ΡΡΠ΅Π½Ρ | |
mousePress | bool | ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠ°Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΌΡΡΠΈ | |
3.3 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
1. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΠΎΡΡΡΠΎΠΈΡΡΠ‘ΡΠ΅Π½Ρ». ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Z, Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ.
2. Π€ΡΠ½ΠΊΡΠΈΡ «Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ». Π‘ΠΎΡΡΠΈΡΡΠ΅Ρ Π³ΡΠ°Π½ΠΈ ΠΏΠΎ Π³Π»ΡΠ±ΠΈΠ½Π΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π³ΡΠ°Π½Π΅ΠΉ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
3. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΠΎΡΠΌΠ°Π»ΠΈ». ΠΡΡΠΈΡΠ»ΡΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»Ρ ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΠΉ Z ΡΡΠΎΠΉ Π½ΠΎΡΠΌΠ°Π»ΠΈ.
4. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ». ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π½Ρ.
5. Π€ΡΠ½ΠΊΡΠΈΡ «Flag». ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ «Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ». ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π³ΡΠ°Π½ΠΈ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
3.4 ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ» Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Ρ, Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅Π»Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ «ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅Π‘ΡΠ΅Π½Ρ». ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅Π‘ΡΠ΅Π½Ρ» ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ²ΠΎΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ: «Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ» ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ «ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΠΎΡΠΌΠ°Π»ΠΈ». Π€ΡΠ½ΠΊΡΠΈΡ «Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ» Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΠΌΠ΅ΡΠΎΠ΄ «Flag». Π£ΡΠ»ΠΎΠ²Π½Π°Ρ ΡΡ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 2.
Π ΠΈΡΡΠ½ΠΎΠΊ 2 — Π£ΡΠ»ΠΎΠ²Π½Π°Ρ ΡΡ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
4. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
4.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ°Π·Ρ Π²ΠΈΠ΄ΠΈΡ ΡΡΠ΅Π½Ρ: ΡΡΠ°ΠΊΠ°Π½ ΠΈ ΠΊΡΠ± ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ (ΡΠΈΡΡΠ½ΠΎΠΊ 3).
Π ΠΈΡΡΠ½ΠΎΠΊ 3 — ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΎ, ΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ — Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°: ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΡΠ°ΠΊΠ°Π½) ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ (ΠΊΡΠ±). Π ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΏΠΈΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΉ ΡΠΎΡΠΌΠ΅ «Π‘# Alpha Blending» Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠ΅ΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ, Π°Π»ΡΡΠ° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ. ΠΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΠΈ ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ ΠΎ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
4.2 Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ΅Π», ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅Π½Ρ. Π’ΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎ, ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Ρ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ, Π° Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Ρ Π½ΠΈΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅Π½Π΅.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ ΠΏΡΡΠ΅ΠΌ ΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±Π·ΠΎΡ ΡΡΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ, Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ΅Π»ΠΎΠΊ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 5.
Π’Π°Π±Π»ΠΈΡΠ° 5 — Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π½ΠΎΠΉ
ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ | ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | |
ΠΡΡΡ | ||
ΠΠ°ΠΆΠ°ΡΠ°Ρ ΠΠΠ/ΠΠΠ | ΠΠ±Π·ΠΎΡ ΡΡΠ΅Π½Ρ ΡΠΎ Π²ΡΠ΅Ρ ΡΠ°ΠΊΡΡΡΠΎΠ² | |
ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π΅ΡΠΈΠΊΠ° | ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ +/; | |
ΠΠ°ΠΆΠ°ΡΠΈΠ΅ ΠΠΠ | ΠΡΠΈΠ²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΊ ΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ | |
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° | ||
ΠΠ²Π΅ΡΡ | ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ Π²Π²Π΅ΡΡ | |
ΠΠ½ΠΈΠ· | ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ Π²Π½ΠΈΠ· | |
ΠΠ»Π΅Π²ΠΎ | ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ Π² Π»Π΅Π²ΡΡ ΡΡΠΎΡΠΎΠ½Ρ | |
ΠΠΏΡΠ°Π²ΠΎ | ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ Π² ΠΏΡΠ°Π²ΡΡ ΡΡΠΎΡΠΎΠ½Ρ | |
ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· Π°Π²Π°ΡΠΈΠΉΠ½ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΉ, Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
— ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Windows XP, Vista, 7 (ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡWindows 8 Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°);
— ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Ρ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ 1 ΠΠ³Ρ ΠΈΠ»ΠΈ Π²ΡΡΠ΅;
— ΠΠΠ£ 512 ΠΠ± ΠΈΠ»ΠΈ Π²ΡΡΠ΅;
— ΠΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡΡ 128 ΠΠ± ΠΈΠ»ΠΈ Π²ΡΡΠ΅;
— ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°, ΠΌΡΡΡ.
4.3 Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ°Ρ 4−8.
Π ΠΈΡΡΠ½ΠΎΠΊ 4 — Π§Π°ΡΡΡ ΡΡΠ°ΠΊΠ°Π½Π° ΡΠΊΡΡΡΠ° Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ ΠΊΡΠ±ΠΎΠΌ
Π ΠΈΡΡΠ½ΠΎΠΊ 5 — ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΡΠ±Π° ΡΠΊΠ²ΠΎΠ·Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΡΠ°ΠΊΠ°Π½
Π ΠΈΡΡΠ½ΠΎΠΊ 6 — ΠΡΠ± Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ·Π°Π΄ΠΈ ΡΡΠ°ΠΊΠ°Π½Π°
Π ΠΈΡΡΠ½ΠΎΠΊ 7 — ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ
Π ΠΈΡΡΠ½ΠΎΠΊ 8 — ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠ΅Π½Ρ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ² (ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΡΠ°ΠΊΠ°Π½ ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΊΡΠ±) Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΠ½Π΅, Π·Π°ΠΌΠΎΡΠ΅Π½Π½ΡΠΌ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΡΠ΅Π» ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΡΠ΅Π», Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ°, Π° ΡΠΊΠ²ΠΎΠ·Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΡΠ°ΠΊΡΡΡΠ΅ Π²ΠΈΠ΄Π΅Π½ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ ΡΡΠ΄ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²: Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ Π³ΡΠ°Π½Π΅ΠΉ, Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π»ΠΈΡΠ΅Π²ΡΠ΅ ΠΈ Π½Π΅ Π»ΠΈΡΠ΅Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΠΊΡΠ°ΡΠΊΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½ΠΎΡΠΌΠ°Π»ΠΈ.
ΠΡΠΎΠ³ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π»ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «C# Alpha Blending», Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π°Π»ΡΡΠ°-ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π½Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ C#.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²
1 ΠΡΠ·Π½Π΅ΡΠΎΠ²Π° Π. Π., ΠΡΠΊΠΎΡΠΊΠΎΠ² Π. Π., ΠΠ°ΠΉΠΎΡΠΎΠ² Π. Π‘. ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠ°». [Π’Π΅ΠΊΡΡ] - ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ: «ΠΡΡ Π°Π½Π³Π΅Π»ΡΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ», Π³. ΠΡΡ Π°Π½Π³Π΅Π»ΡΡΠΊ, 2006 Π³. — ΡΡΡ.36;
2 ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ — Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΠ½ΡΠΈΠΊΠ»ΠΎΠΏΠ΅Π΄ΠΈΡ. [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ Π Π΅ΡΡΡΡ] - Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: http://ru. wikipedia.org/, ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ;
3 ΠΠ²Π°Π½ΠΎΠ² Π. Π., ΠΠ°ΡΡΠ°ΠΊΠΎΠ² Π. Π‘. Π’ΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. [Π’Π΅ΠΊΡΡ] - ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ: «Π Π°Π΄ΠΈΠΎ ΠΈ ΡΠ²ΡΠ·Ρ», ISBN 5−256−1 204−5, Π³. ΠΠΎΡΠΊΠ²Π°, 1995 Π³. — ΡΡΡ.224;
4 Π ΠΎΠ΄ΠΆΠ΅ΡΡ Π., ΠΠ΄Π°ΠΌΡ ΠΠΆ. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ. [Π’Π΅ΠΊΡΡ] - ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ: «ΠΠΈΡ», ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ, ISBN 5−03−2 143−4, Π³. ΠΠΎΡΠΊΠ²Π°, 2001 Π³. — ΡΡΡ.604.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
ΠΠΈΡΡΠΈΠ½Π³ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΠΈΡΡΠΈΠ½Π³ ΠΌΠΎΠ΄ΡΠ»Ρ Form1. cs
using System;
using System. Collections. Generic;
using System. componentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System. Windows. Forms;
namespace WindowsFormsApplication1
{
// Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
public struct Point3D
{
public double x;
public double y;
public double z;
public Point3D (double x, double y, double z)
{
this. x = x;
this. y = y;
this. z = z;
}
}
public partial class Form1: Form
{
Bitmap b;
Graphics g;
Image image;
Point3D [] Vertex = new Point3D [48]; // ΠΠ°ΡΡΠΈΠ² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΡΡΠΈΠ½ (x, y, z)
Point3D [] View = new Point3D [48]; // ΠΠ°ΡΡΠΈΠ² Π²ΠΈΠ΄ΠΎΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Point [] Scrn = new Point [48]; // ΠΠ°ΡΡΠΈΠ² ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Point [] Perspective = new Point [48]; // ΠΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
double [] NZ = new double [27]; // ΠΠ°ΡΡΠΈΠ² Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
int [] Order = new int [27]; // ΠΠ°ΡΡΠΈΠ² ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΡΡ Π³ΡΠ°Π½Π΅ΠΉ
double [] D = new double [27]; // ΠΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Z-Π³ΡΠ°Π½Π΅ΠΉ
double Teta = Math. PI / 180; // Π£Π³ΠΎΠ» ΡΠ΅ΡΠ° = 45 Π³ΡΠ°Π΄ΡΡΠΎΠ²
double Phi = Math. PI / 180; // Π£Π³ΠΎΠ» ΡΠΈ = 45 Π³ΡΠ°Π΄ΡΡΠΎΠ²
bool mousePress = false;
double sX = 0;
double sY = 0;
double nx, ny, nz;
int D0 = 500;
int R0 = 300;
public Form1 ()
{
InitializeComponent ();
this. MouseWheel += new MouseEventHandler (Form1_MouseWheel);
b = new Bitmap («Background. jpg»); // ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Bitmap
image = Image. FromFile («Background. jpg»); // ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
g = Graphics. FromImage (b); // ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
}
// ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ΅Π½Ρ
void ΠΠΎΡΡΡΠΎΠΈΡΡΠ‘ΡΠ΅Π½Ρ ()
{
g. DrawImage (image, 0, 0);
for (int i = 0; i < 48; i++)
{
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠΈΡΠΎΠ²ΡΡ Π² Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ
View [i]. x = 20 * (int) Math. Round (Vertex [i]. x * (-Math. Sin (Teta)) + Vertex [i]. y * Math. Cos (Teta));
View [i]. y = 20 * (int) Math. Round (Vertex [i]. x * (-Math. Cos (Phi) * Math. Cos (Teta)) — Vertex [i]. y * (Math. Cos (Phi) * Math. Sin (Teta)) + Vertex [i]. z * Math. Sin (Phi));
View [i]. z = - 20 * (int) Math. Round (Vertex [i]. x * (-Math. Sin (Phi) * Math. Cos (Teta)) — Vertex [i]. y * (Math. Sin (Phi) * Math. Sin (Teta)) — Vertex [i]. z * (Math. Cos (Phi)) + R0);
// ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Perspective [i]. X = pictureBox1. Width / 2 + (int) Math. Round (D0 * (View [i]. x / View [i]. z));
Perspective [i]. Y = pictureBox1. Height / 2 + (int) Math. Round (D0 * (View [i]. y / View [i]. z));
if (View [i]. z == 0)
{
Perspective [i]. X = 0;
Perspective [i]. Y = 0;
}
else
{
Perspective [i]. X = (int) (Math. Round (D0 * (View [i]. x / View [i]. z)));
Perspective [i]. Y = (int) (Math. Round (D0 * (View [i]. y / View [i]. z)));
}
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
Scrn [i]. X = (int) Perspective [i]. X + pictureBox1. Width / 2;
Scrn [i]. Y = (int) Perspective [i]. Y + pictureBox1. Height / 2;
}
// ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ Z ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΠ°Π½ΠΈ
for (int i = 0; i < 19; i++)
{
D [i] = (View [i]. z + View [i + 20]. z + View [i + 21]. z + View [i + 1]. z) / 4;
}
// ΠΠΎΠ½Π΅ΡΠ½Π°Ρ Π³ΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
D = (View. z + View. z + View. z + View. z) / 4;
// ΠΡΠ°Π½Ρ — ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΠ°Π½Π°
for (int i = 0; i < 19; i++)
{
D += View [i]. z / 20;
}
// ΠΡΠ°Π½ΠΈ ΡΠ΄ΠΎΠ²ΠΈΡΠΎ-ΠΆΠ΅Π»ΡΠΎΠ³ΠΎ ΠΊΡΠ±Π°
D = (View. z + View. z + View. z + View. z) / 4;
D = (View. z + View. z + View. z + View. z) / 4;
D = (View. z + View. z + View. z + View. z) / 4;
D = (View. z + View. z + View. z + View. z) / 4;
D = (View. z + View. z + View. z + View. z) / 4;
D = (View. z + View. z + View. z + View. z) / 4;
// ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π³ΡΠ°Π½Π΅ΠΉ
List Plane = new List ();
for (int i = 0; i < 19; i++)
{
Plane. Add (new Point [] { Scrn [i], Scrn [20 + i], Scrn [21 + i], Scrn [1 + i] });
}
Plane. Add (new Point [] { Scrn [19], Scrn [39], Scrn [20], Scrn });
Plane. Add (new Point [] {Scrn [0], Scrn [1], Scrn [2], Scrn [3], Scrn [4], Scrn [5], Scrn [6], Scrn [7], Scrn [8], Scrn [9], Scrn [10], Scrn [11], Scrn [12], Scrn [13], Scrn [14], Scrn [15], Scrn [16], Scrn [17], Scrn [18], Scrn });
// ΠΡΠ± ΡΠ΄ΠΎΠ²ΠΈΡΠΎ-ΠΆΠ΅Π»ΡΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
Plane. Add (new Point [] { Scrn [40], Scrn [41], Scrn [42], Scrn });
Plane. Add (new Point [] { Scrn [40], Scrn [44], Scrn [47], Scrn });
Plane. Add (new Point [] { Scrn [43], Scrn [47], Scrn [46], Scrn });
Plane. Add (new Point [] { Scrn [42], Scrn [46], Scrn [45], Scrn });
Plane. Add (new Point [] { Scrn [41], Scrn [45], Scrn [44], Scrn });
Plane. Add (new Point [] { Scrn [44], Scrn [45], Scrn [46], Scrn });
// Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ²Π΅ΡΠΎΠ² Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ ΡΡΠ΅Π½Ρ
List PlaneColor = new List ()
{
Color. FromArgb (80, 208, 208, 208), // 1 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 2 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 3 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 4 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 5 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 6 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 7 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 8 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 9 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 10 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 11 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 12 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 13 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 14 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 15 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 16 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 17 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 18 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 19 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (80, 208, 208, 208), // 20 ΠΡΠ°Π½Ρ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (100, 102, 102, 102), // 21 — ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΠ°Π½Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
Color. FromArgb (255, 204, 255, 0), // ΠΡΠ°Π½Ρ ΠΊΡΠ±Π°
};
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ (27, 0); // Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° 27 Π³ΡΠ°Π½Π΅ΠΉ ΠΏΠΎ Π³Π»ΡΠ±ΠΈΠ½Π΅, Π½Π°ΡΠΈΠ½Π°Ρ Ρ 0-ΠΎΠΉ Π³ΡΠ°Π½ΠΈ ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΠΎΡΠΌΠ°Π»ΠΈ (); // ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΊ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠ΅ΠΌ ΡΠΎΡΠΊΠ°ΠΌ
for (int i = 0; i < 27; i++) // ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ
{
if (NZ [Order [i]] >= 0) // ΠΡΠ»ΠΈ Π³ΡΠ°Π½Ρ Π½Π΅ Π²ΠΈΠ΄Π½Π°
{
int A = (int) ((double) PlaneColor [Order [i]]. A); // ΠΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ
int R = (int) ((double) PlaneColor [Order [i]]. R * NZ [Order [i]]); // ΠΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ * ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ
int G = (int) ((double) PlaneColor [Order [i]]. G * NZ [Order [i]]); // ΠΠ΅Π»Π΅Π½ΡΠΉ ΡΠ²Π΅Ρ * ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ
int B = (int) ((double) PlaneColor [Order [i]]. B * NZ [Order [i]]); // Π‘ΠΈΠ½ΠΈΠΉ ΡΠ²Π΅Ρ * ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ
Color Glass = Color. FromArgb (A, R, G, B); // ΠΠ°Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ
g. FillPolygon (new SolidBrush (Glass), Plane [Order [i]]); // ΠΠ°ΠΊΡΠ°ΡΠΊΠ°
}
if (NZ [Order [i]] <= 0) // ΠΡΠ»ΠΈ Π³ΡΠ°Π½Ρ Π²ΠΈΠ΄Π½Π°
{
int A = (int) Math. Abs (((double) PlaneColor [Order [i]]. A));
int R = (int) Math. Abs (((double) PlaneColor [Order [i]]. R * NZ [Order [i]]));
int G = (int) Math. Abs (((double) PlaneColor [Order [i]]. G * NZ [Order [i]]));
int B = (int) Math. Abs (((double) PlaneColor [Order [i]]. B * NZ [Order [i]]));
Color Glass = Color. FromArgb (A, R, G, B);
g. FillPolygon (new SolidBrush (Glass), Plane [Order [i]]);
}
}
}
// ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡΠΌ
void ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΠΎΡΠΌΠ°Π»ΠΈ ()
{
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ ΠΊ ΠΏΠ΅ΡΠ²ΡΠΌ 19 Π³ΡΠ°Π½ΡΠΌ ΡΡΠ°ΠΊΠ°Π½Π°
for (int i = 0; i < 19; i++)
{
nx = View [i]. y * (View [i + 20]. z — View [i + 21]. z) + View [i + 20]. y * (View [i + 21]. z — View [i]. z) + View [i + 21]. y * (View [i]. z — View [i + 20]. z);
ny = View [i]. z * (View [i + 20]. x — View [i + 21]. x) + View [i + 20]. z * (View [i + 21]. x — View [i]. x) + View [i + 21]. z * (View [i]. x — View [i + 20]. x);
nz = View [i]. x * (View [i + 20]. y — View [i + 21]. y) + View [i + 20]. x * (View [i + 21]. y — View [i]. y) + View [i + 21]. x * (View [i]. y — View [i + 20]. y);
NZ [i] = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
}
// ΠΠΎΡΠΌΠ°Π»Ρ ΠΊ 19-ΠΎΠΉ Π³ΡΠ°Π½ΠΈ (Π½Π΅ ΠΏΠΎΠ΄Π΄Π°Π΅ΡΡΡ ΡΠΈΠΊΠ»Ρ)
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// ΠΠΎΡΠΌΠ°Π»Ρ ΠΊ Π³ΡΠ°Π½ΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΠ°Π½Π°), Π³ΡΠ°Π½Ρ ΠΈΠΌΠ΅Π΅Ρ 10 Π²Π΅ΡΡΠΈΠ½, Π²Π·ΡΡΠΎ 3 (0, 10, 19)
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 40, 41, 42
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 40, 44, 47
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 43, 47, 46
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 42, 46, 45
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 41, 45, 44
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
// 44, 45, 46
nx = View. y * (View. z — View. z) + View. y * (View. z — View. z) + View. y * (View. z — View. z);
ny = View. z * (View. x — View. x) + View. z * (View. x — View. x) + View. z * (View. x — View. x);
nz = View. x * (View. y — View. y) + View. x * (View. y — View. y) + View. x * (View. y — View. y);
NZ = nz / Math. Sqrt (nz * nz + ny * ny + nx * nx);
}
// ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠ±Π°
void ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ()
{
ΠΠΎΡΡΡΠΎΠΈΡΡΠ‘ΡΠ΅Π½Ρ ();
pictureBox1. Image = b;
}
// ΠΠ΅ΡΠΎΠ΄-ΡΠ»Π°Π³
bool Flag (int i, int PlaneNumber, int [] Order)
{
bool flag = true; // Π€Π»Π°Π³ ΠΏΠΎΠ΄Π½ΡΡ
for (int j = 0; j < PlaneNumber; j++) // ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π³ΡΠ°Π½ΠΈ ΠΏΠΎ ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ
if (Order [j] == i) flag = false; // Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ Π³ΡΠ°Π½ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΠ°Π½ΠΈ
return flag; // ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π°
}
// ΠΠ΅ΡΠΎΠ΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π³ΡΠ°Π½Π΅ΠΉ
void Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ (int PlanesCount, int PlaneNumber)
{
double k = 1000; // ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ
for (int i = 0; i < 27; i++) // ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈ
{
if (Flag (i, PlaneNumber, Order)) //
if (D [i] < k) // ΠΡΠ»ΠΈ ΡΡ. Π·Π½Π°Ρ. ΠΏΠΎ Z < ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ
{ // ΡΠΎ.
k = D [i]; // ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ°Π²Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Order [PlaneNumber] = i; // ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ
}
}
PlanesCount — -; // Π£ΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°Π½Π΅ΠΉ Π½Π° 1
PlaneNumber ++; // Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ Π³ΡΠ°Π½ΠΈ Π½Π° 1
if (PlanesCount > 0) // ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°Π½Π΅ΠΉ > 0, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΡ Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΡΠ°Π½Π΅ΠΉ (PlanesCount, PlaneNumber);
}
// Π‘ΠΎΠ±ΡΡΠΈΡ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
private void Form1_Load (object sender, EventArgs e)
{
Teta = 89.549 087;
Phi = 134.99 817;
Vertex = new Point3D (-50, — 50, 0); // A
Vertex = new Point3D (-48, — 50, — 15); // B
Vertex = new Point3D (-40, — 50, — 30); // C
Vertex = new Point3D (-28, — 50, — 42); // D
Vertex = new Point3D (-15, — 50, — 48); // E
Vertex = new Point3D (0, — 50, — 50); // F
Vertex = new Point3D (15, — 50, — 48); // G
Vertex = new Point3D (28, — 50, — 42); // H
Vertex = new Point3D (40, — 50, — 30); // I
Vertex = new Point3D (48, — 50, — 15); // J
Vertex = new Point3D (50, — 50, 0); // K
Vertex = new Point3D (48, — 50, 15); // L
Vertex = new Point3D (40, — 50, 30); // M
Vertex = new Point3D (28, — 50, 42); // N
Vertex = new Point3D (15, — 50, 48); // O
Vertex = new Point3D (0, — 50, 50); // P
Vertex = new Point3D (-15, — 50, 48); // R
Vertex = new Point3D (-28, — 50, 42); // S
Vertex = new Point3D (-40, — 50, 30); // T
Vertex = new Point3D (-48, — 50, 15); // U
// ΠΠ΅ΡΡ Π½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΡΠ°ΠΊΠ°Π½Π°
Vertex = new Point3D (-60, 100, 0); // A-1
Vertex = new Point3D (-58, 100, — 19); // B-1
Vertex = new Point3D (-48, 100, — 36); // C-1
Vertex = new Point3D (-35, 100, — 50); // D-1
Vertex = new Point3D (-18, 100, — 58); // E-1
Vertex = new Point3D (0, 100, — 60); // F-1
Vertex = new Point3D (18, 100, — 58); // G-1
Vertex = new Point3D (35, 100, — 50); // H-1
Vertex = new Point3D (48, 100, — 36); // I-1
Vertex = new Point3D (58, 100, — 19); // J-1
Vertex = new Point3D (60, 100, 0); // K-11
Vertex = new Point3D (58, 100, 19); // L-12
Vertex = new Point3D (48, 100, 36); // M-13
Vertex = new Point3D (35, 100, 50); // N-14
Vertex = new Point3D (18, 100, 58); // O-15
Vertex = new Point3D (0, 100, 60); // P-16
Vertex = new Point3D (-18, 100, 58); // R-17
Vertex = new Point3D (-35, 100, 50); // S-18
Vertex = new Point3D (-48, 100, 36); // T-19
Vertex = new Point3D (-58, 100, 19); // U-20
// Π―Π΄ΠΎΠ²ΠΈΡΠΎ-ΠΆΠ΅Π»ΡΡΠΉ ΠΊΡΠ± (Π° = 50)
// ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½Ρ
Vertex = new Point3D (-60, — 50, — 65); // A
Vertex = new Point3D (-60, — 50, — 115); // B
Vertex = new Point3D (-10, — 50, — 115); // C
Vertex = new Point3D (-10, — 50, — 65); // D
// ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½Ρ
Vertex = new Point3D (-60, 0, — 65); // A-1
Vertex = new Point3D (-60, 0, — 115); // B-1
Vertex = new Point3D (-10, 0, — 115); // C-1
Vertex = new Point3D (-10, 0, — 65); // D-1
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
// Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ-ΡΡΡΠ΅Π»ΠΎΠΊ
private void Form1_KeyDown (object sender, KeyEventArgs e)
{
if (e. KeyCode == Keys. Up)
{
Phi = Phi + Math. PI / 128;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
if (e. KeyCode == Keys. Down)
{
Phi = Phi — Math. PI / 128;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
if (e. KeyCode == Keys. Right)
{
Teta = Teta + Math. PI / 128;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
if (e. KeyCode == Keys. Left)
{
Teta = Teta — Math. PI / 128;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
}
// Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ
private void pictureBox1_MouseMove (object sender, MouseEventArgs e)
{
if (mousePress)
{
if (e. X < sX)
{
Teta = Teta — Math. PI / 128;
sX = e. X;
}
if (e. X > sX)
{
Teta = Teta + Math. PI / 128;
sX = e. X;
}
if (e. Y > sY)
{
Phi = Phi — Math. PI / 128;
sY = e. Y;
}
if (e. Y < sY)
{
Phi = Phi + Math. PI / 128;
sY = e. Y;
}
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
}
// Π‘ΠΎΠ±ΡΡΠΈΠ΅, Π²ΠΎΡ Π½ΠΈΠΊΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ ΠΌΡΡΠΈ
private void pictureBox1_MouseUp (object sender, MouseEventArgs e)
{
mousePress = false;
}
// Π‘ΠΎΠ±ΡΡΠΈΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΌΡΡΠΈ
private void pictureBox1_MouseDown (object sender, MouseEventArgs e)
{
mousePress = true;
if (e. Button == MouseButtons. Right)
{
R0 = 300;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
}
// Π‘ΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΠΊΡΡΡΠΊΠ΅ ΠΊΠΎΠ»Π΅ΡΠ° ΠΌΡΡΠΈ
void Form1_MouseWheel (object sender, MouseEventArgs e)
{
if ((e. Delta == 120) && (R0! = 150))
{
R0 — = 5;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
else if ((e. Delta == - 120) && (R0! = 800))
{
R0 += 5;
ΠΠΎΠΊΠ°Π·Π°ΡΡΠ‘ΡΠ΅Π½Ρ ();
}
}
}
}