ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π°Π·Ρ‹

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

БСйчас ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ…e ΠΈ Ρƒe просто игнорируя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ ze Π΄Π»Ρ получСния ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ. КаТдая Ρ‚ΠΎΡ‡ΠΊΠ° Π  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° проСцируСтся Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π ' ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ прямой Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ Π  ΠΏΠ΅Ρ€ΠΏΠ΅Π½Π΄ΠΈΠΊΡƒΠ»ΡΡ€Π½ΠΎ плоскости, опрСдСляСмой осями Ρ… ΠΈ Ρƒ. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ пСрспСктивной ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ, которая Π±Ρ‹Π»Π° Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ наблюдСния Π² Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π°Π·Ρ‹ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Срная гСомСтрия ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°»

Π½Π° Ρ‚Π΅ΠΌΡƒ: ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π°Π·Ρ‹

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

2.1 ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ пСрспСктивной ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ

2.2 Алгоритм удалСния Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ…ностСй

2.3 Алгоритм получСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.1 ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Π°Ρ структурная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.2 Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

3.3 Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ основныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

3.4 ВСкстовоС описаниС основных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Π±Π»ΠΎΠΊ-схСмы

3.5 Алгоритм взаимодСйствия ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

4. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

проСкция Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° пСрСмСнная

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся построСниС Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π°Π·Ρ‹. ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ сцСна прСдставляСт собой ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°ΠΌΠΈ. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Π°Ρ модСль прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… окруТностСй Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… радиусов, Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ Π½Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси Π²Π°Π·Ρ‹ ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° Π΄Π½Π° Π²Π°Π·Ρ‹.

Для каркасного изобраТСния Π²Π°Π·Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ сСтку ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½ΠΎΠ². Для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ извСстными Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌΠΈ парамСтричСского описания. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ повСрхности Π²Π°Π·Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) — высоты (h) ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρ‹ (l).

Ρ… = R sin l

Ρƒ = R cos l (1)

z = H h,

Π³Π΄Π΅ R — радиус ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈ, l — Π΄ΠΎΠ»Π³ΠΎΡ‚Π° (ΠΎΡ‚ -180Β° Π΄ΠΎ +180Β° ΠΈΠ»ΠΈ ΠΎΡ‚ 0Β° Π΄ΠΎ 360Β°), h — высота (измСняСтся ΠΎΡ‚ -0,5 Π΄ΠΎ +0,5), Н—высота Π²Π°Π·Ρ‹.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒ — это линия, состоящая ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ с ΠΏΠΎΡΡ‚оянной ΡˆΠΈΡ€ΠΎΡ‚ΠΎΠΉ. ΠœΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½ — это линия, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΏΠΎΡΡ‚оянной Π΄ΠΎΠ»Π³ΠΎΡ‚ΠΎΠΉ. Π’ ΠΊΠ°Ρ€ΠΊΠ°ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π°Π·Ρ‹ ΠΌΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½Ρ‹ — это криволинСйная линия.

Π’Π°Π·Π° Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ состоит ΠΈΠ· 30 ΠΌΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½ΠΎΠ² ΠΈ 10 ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΉ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½ стСнок Π²Π°Π·Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡ… 300. ПослС этого Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² для стСнок Π²Π°Π·Ρ‹. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΄Π½Π° Π²Π°Π·Ρ‹ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π΄Π½Π° Π²Π°Π·Ρ‹.

Π”Π°Π»Π΅Π΅ производится Π²ΠΈΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ плоскостСй, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ выполняСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (x, y, z) Π² ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (X, Y) с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ пСрспСктивной ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ.

Для удалСния Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Z Π±ΡƒΡ„Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹ ΠΏΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΎΡ‚ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ экрана. РассчитываСтся срСдняя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Z Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° ΠΈ Π² ΡΠΎΠΎΡ‚вСтствии с Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹ выводятся Π½Π° ΡΠΊΡ€Π°Π½, начиная с ΡΠ°ΠΌΡ‹Ρ… ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ блиТайшими. Π’Π΅ΠΌ самым ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ся ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π±Π»ΠΈΠΆΠ½ΠΈΠΌΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°ΠΌΠΈ Π΄Π°Π»ΡŒΠ½ΠΈΡ… ΠΈ ΠΎΡ‚сСчСниС Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… частСй ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Для расчёта освСщённости ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° рассчитываСтся ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ ΠΊ Π½Π΅ΠΌΡƒ ΠΈ, исходя ΠΈΠ· Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ, задаётся Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ для ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.

2. ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

2.1 ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ пСрспСктивной ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ

Π’ΠΎΡ‡ΠΊΠΈ Π² Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ ΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствах ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (X, Y) ΠΈ (Ρ…, Ρƒ, z) соотвСтствСнно. ΠŸΡ€ΠΈ нСобходимости получСния пСрспСктивной ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ задаСтся большоС количСство Ρ‚ΠΎΡ‡Π΅ΠΊ P (x, Ρƒ, z), ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдстоит Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ изобраТСния Π '(Π₯, Y) Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅. Для этого Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π  ΠΈΠ· ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (Ρ…, Ρƒ, z) Π² ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (X, Y) Π΅Π΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ Π '. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ экран располоТСн ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π³Π»Π°Π·ΠΎΠΌ Π•. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° прямая линия Π Π• пСрСсСкаСт экран Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Π '.

Π­Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² Π΄Π²Π° этапа. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап — Π²ΠΈΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ — Ρ‚ΠΎΡ‡ΠΊΠ° Π  ΠΎΡΡ‚аСтся Π½Π° ΡΠ²ΠΎΠ΅ΠΌ мСстС, Π½ΠΎ ΡΠΈΡΡ‚Π΅ΠΌΠ° ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап — пСрспСктивноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π  Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π ' объСдинСнноС с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΡΠΈΡΡ‚Π΅ΠΌΡ‹ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… экранных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚:

Для выполнСния Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠ° наблюдСния, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π°Ρ с Π³Π»Π°Π·ΠΎΠΌ, ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π½Π°Ρ‡Π°Π»ΠΎ Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ располагаСтся Π³Π΄Π΅-Ρ‚ΠΎ Π²Π±Π»ΠΈΠ·ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ Π• ΠΊ О. ΠŸΡƒΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠ° наблюдСния Π• Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½Π° Π² ΡΡ„СричСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… f—,—q,——r—ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΌΠΈΡ€ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (Ρ‚ΠΎΡ‡ΠΊΠΈ Π•) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ:

xe= r sin f?? cos q)

ye=?r sin f? sin q?(2)

ze= r cos f?

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ сфСричСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ схСматичСски ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рисунок 1 — БфСричСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ наблюдСния Π•

Π’ΠΈΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записано Π² Ρ„ΠΎΡ€ΠΌΠ΅

[Ρ…e ye ze 1]=[Ρ…w Ρƒw zw 1]V, (3)

Π³Π΄Π΅ V — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π²ΠΈΠ΄ΠΎΠ²ΠΎΠ³ΠΎ прСобразования Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ 4×4.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° V, получСнная Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Π²ΠΈΠ΄ΠΎΠ²ΠΎΠ³ΠΎ прСобразования, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

(4)

БСйчас ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ…e ΠΈ Ρƒe просто игнорируя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ ze для получСния ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ. КаТдая Ρ‚ΠΎΡ‡ΠΊΠ° Π  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° проСцируСтся Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π ' ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ прямой Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ Π  ΠΏΠ΅Ρ€ΠΏΠ΅Π½Π΄ΠΈΠΊΡƒΠ»ΡΡ€Π½ΠΎ плоскости, опрСдСляСмой осями Ρ… ΠΈ Ρƒ. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ пСрспСктивной ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ, которая Π±Ρ‹Π»Π° Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ наблюдСния Π² Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для построСния пСрспСктивной ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ рассмотрим нСпосрСдствСнно пСрспСктивноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2 Π²Ρ‹Π±Ρ€Π°Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Q, Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π²Π½Ρ‹ (0, 0, d) для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа d. ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ z = d ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ экран, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π­ΠΊΡ€Π°Π½ — это ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, проходящая Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ Q ΠΈ ΠΏΠ΅Ρ€ΠΏΠ΅Π½Π΄ΠΈΠΊΡƒΠ»ΡΡ€Π½Π°Ρ оси z. Π­ΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ привязкой Π½Π°Ρ‡Π°Π»Π° ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ Q, Π° ΠΎΡΠΈ Π₯ ΠΈ Y ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ направлСния, ΠΊΠ°ΠΊ оси Ρ… ΠΈ Ρƒ ΡΠΎΠΎΡ‚вСтствСнно. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π  Ρ‚ΠΎΡ‡ΠΊΠ° изобраТСния Π ' опрСдСляСтся ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ° пСрСсСчСния прямой Π»ΠΈΠ½ΠΈΠΈ Π Π• ΠΈ ΡΠΊΡ€Π°Π½Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ рисунок, Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° Π  ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ Ρƒ-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ. Но Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ уравнСния для вычислСния Π΅Π΅ Ρƒ-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ ΠΈ Π΄Π»Ρ Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ X. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ EPR ΠΈ EP’Q ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ,

(5)

ΠžΡ‚ΡΡŽΠ΄Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ

  • (6)
  • X = dx/Z

Рисунок 2 — Π­ΠΊΡ€Π°Π½ ΠΈ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

  • Аналогично ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ:
  • Y = dy/Z. (7)
  • Π Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° О Π½Π°Ρ‡Π°Π»Π° систСмы ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ совпадаСт с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ось z Π²ΠΈΠ΄ΠΎΠ²ΠΎΠΉ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ совпадаСт с ΠΏΡ€ΡΠΌΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ Π•Πž, которая пСрСсСкаСт экран Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Q, Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ Q ΡΠΈΡΡ‚Π΅ΠΌΡ‹ экранных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ изобраТСния. Если Π±Ρ‹ ΠΌΡ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ экрана, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана составляли 2с1 ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ 2с2 ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ вычислСния X ΠΈ Y:
  • Π₯ = d x/z + с1
  • Y = d y/z + c2 (8)
  • 2.2 Алгоритм удалСния Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ…ностСй
  • Для изобраТСния повСрхности Π²Π°Π·Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ Π² Π°ΠΊΡΠΎΠ½ΠΎΠΌΠ΅Ρ‚ричСской ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ свойством: Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ с Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Z Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. ΠŸΡ€ΠΈ этом Ρ†Π΅Π½Ρ‚Ρ€ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (X, Y, Z) совпадаСт с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ сфСры, ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ X0Y являСтся ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ проСцирования, Π° ΠΎΡΡŒ Z Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ (Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Ρ).
  • Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π³Ρ€Π°Π½Π΅ΠΉ ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅
  • ΠŸΡ€ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ интСрСсный Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ — Π³Ρ€Π°Π½ΠΈ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, поэтому Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ отобраТаСтся Π² Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ракурсС. Для устранСния этого эффСкта примСняСтся сортировка Π³Ρ€Π°Π½Π΅ΠΉ ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°» .
  • Если для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ срСднСй Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС, Ρ‡Π΅ΠΌ мСньшС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° z ΡΡ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚Π΅ΠΌ большС Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ эта Π³Ρ€Π°Π½ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π° ΡΠΊΡ€Π°Π½Π΅ (прСдполагая, Ρ‡Ρ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ находится Π³Π΄Π΅-Ρ‚ΠΎ Π½Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ полуоси z). Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² сортировки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько — ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ polygons, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π³Ρ€Π°Π½ΠΈ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ массивС.
  • " Алгоритм Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°" отличаСтся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ простотой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ, ΠΊΠ°ΠΊ слСдствиС, нСдостаточно эффСктивСн. Π’ ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Ссли 3D сцСна состоит ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΎΠ³ΠΎ количСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² ΡΡ€Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Π΄Ρ€Π΅. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΈ Π½Π΅ Ρ‚рСбуСтся. НСдостаток «Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°» состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ всС ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹. Для сокращСния числа Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈ, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Π΅ ΠΎΡ‚ Π½Π°Ρ.
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ ΠΊ ΠΏΠΎΠ²Π΅Ρ€Ρ…ности
  • ΠΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ ΠΏΠΎΠ²Π΅Ρ€Ρ…ности прСдставляСт Π΅Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΡ€ΠΈΠ²ΠΈΠ·Π½Ρƒ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ отраТСния. Если извСстно аналитичСскоС описаниС повСрхности, Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ вычисляСтся нСпосрСдствСнно. Но Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ… повСрхностСй Π±Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π° лишь ΠΈΡ… ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ аппроксимация. Зная ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ внСшнСй Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ.
  • Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… удалСния Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ…ностСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π±Ρ€Π° ΠΈΠ»ΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, поэтому, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Ρ ΠΌΠΎΠ΄Π΅Π»ΡŒΡŽ освСщСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ Π½Π° Ρ€Π΅Π±Ρ€Π°Ρ… ΠΈ Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π°Ρ…. ΠŸΡƒΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ уравнСния плоскостСй ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€Π°Π½Π΅ΠΉ, Ρ‚ΠΎΠ³Π΄Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ ΠΈΡ… ΠΎΠ±Ρ‰Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Ρ€Π°Π²Π½Π° срСднСму Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½ΠΎΡ€ΠΌΠ°Π»Π΅ΠΉ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌ, сходящимся Π² ΡΡ‚ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅.
  • Если уравнСния плоскостСй Π½Π΅ Π·Π°Π΄Π°Π½Ρ‹, Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, усрСдняя Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ произвСдСния всСх Ρ€Π΅Π±Π΅Ρ€, ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π΅.
  • Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшниС Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½Π΅ Π½ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ся, Ρ‚ΠΎ Π΅Π³ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° зависит ΠΎΡ‚ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΠΈ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π±Π΅Ρ€. БильнСС проявляСтся влияниС ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² с Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ€Π΅Π±Π΅Ρ€.
  • Когда Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ ΠΏΠΎΠ²Π΅Ρ€Ρ…ности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния интСнсивности ΠΈ Π΄Π»Ρ изобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ сцСны выполняСтся пСрспСктивноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ слСдуСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π΄ΠΎ ΠΏΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ дСлСния. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ искаТСно, Π° ΡΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, задаваСмая модСлью освСщСния, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.
  • Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ. Π”Π°Π»Π΅Π΅ этот Π²Π΅ΠΊΡ‚ΠΎΡ€ приводится ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для опрСдСлСния косинуса ΡƒΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ.
  • Π•Π³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π³Ρ€Π°Π½ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ сцСны Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.
  • ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:
  • nx = A. y (B.z — C. z) + B. y (C.z — A. z) + C. y (A.z — B. z)
  • ny = A. z (B.x — C. x) + B. z (C.x — A. x) + C. z (A.x — B. x) (9)
  • nz = A. x (B.y — C. y) + B. x (C.y — A. y) + C. x (A.y — B. y)
  • ΠžΡ‚ΡΡŽΠ΄Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈ опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
  • По ΡƒΠ³Π»Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ взгляда ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Π° Π³Ρ€Π°Π½ΡŒ ΠΊ Π½Π°ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚ Π½Π°Ρ. Если Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ взгляда совпадаСт с Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ (0, 0, 1), Ρ‚ΠΎ ΠΊΠΎΡΠΈΠ½ΡƒΡ ΡƒΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Ρ€Π°Π²Π΅Π½ nz (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° z Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ), ΠΈ Π΅ΡΠ»ΠΈ nz < 0 — Π³Ρ€Π°Π½ΡŒ Π²ΠΈΠ΄Π½Π°.

2.3 Алгоритм получСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ своСй оси осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ измСнСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ наблюдСния (с, ΠΈ, ш)

Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости создания изобраТСния часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ тСхнология — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ помСщаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ копируСтся Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто экрана. Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы:

Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ Ρ„ΠΎΠ½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ повСрхности Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

отрисовка изобраТСния Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ„ΠΎΠ½Π°

ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ изобраТСния ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ Π½Π° ΡΠΊΡ€Π°Π½

вычислСниС Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

снова п. 1

3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.1 ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Π°Ρ структурная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Рисунок 3 — ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Π°Ρ структурная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° условно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π±Π»ΠΎΠΊΠΈ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ΄ΡƒΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π”Π°Π»Π΅Π΅ Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², постоянных, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° записи, постоянныС, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ установки ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ значСниями, устанавливаСт количСство ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, заполняСт массив Ρ‚ΠΎΡ‡Π΅ΠΊ исходными значСниями.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° прСобразования ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ²Ρ‹Ρ… Π² ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° рисования Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π»ΠΎΠΊ прСобразования ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ составлСния ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ. Π—Π°Ρ‚Π΅ΠΌ выполняСт рисованиС ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΈ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ отобраТСния.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° составлСния ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² выполняСт прСобразования ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅, составлСниС ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π² Z Π±ΡƒΡ„Π΅Ρ€Π΅ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΈΡ… Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ сцСны.

Π‘Π»ΠΎΠΊ вращСния мСняСт значСния ΡƒΠ³Π»ΠΎΠ² ΠΎΠ±Π·ΠΎΡ€Π° Π² ΡΠΎΠΎΡ‚вСтствии с Π½Π°ΠΆΠ°Ρ‚иями Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΠΈ позиционирования ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ отрисовки.

3.2 Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСциализированныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚Π°Π±Π»ΠΈΡ†Π° 1).

Π’Π°Π±Π»ΠΈΡ†Π° 1 — Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

T3DPoint

record

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ 3 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΡΠΊΡ€Π°Π½Π΅, Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ ΡΡ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

TPolygon

record

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ содСрТит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° P3DPoint. Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΊ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρƒ, Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, Ρ†Π²Π΅Ρ‚ ΠΈ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

3.3 Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ основныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Ρ‚Π°Π±Π»ΠΈΡ†Π° 2).

Π’Π°Π±Π»ΠΈΡ†Π° 1 — ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

w, v1

array [1. nPoint] of T3DPoint

ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅, Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½

v

array [1. nPoint] of TPoint

экранныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ

polygons

array [1. nTPolygon] of TPolygon

массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

teta

extended

ΠžΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси Y. Π˜ΠΌΠ΅Π΅Ρ‚ фиксированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ teta:=pi/9.

phi

extended

ΠžΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси X. Π˜ΠΌΠ΅Π΅Ρ‚ фиксированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ phi:=pi*4/3.

buf

TBitmap

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΉ создаСтся Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ сфСры

blink_buf

TBitmap

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ для быстрого Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ Ρ„ΠΎΠ½ΠΎΠΌ (Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΡΠ΅Π±Π΅ Ρ„ΠΎΠ½ изобраТСния)

A, B, C, D

ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° word Ρ‚ΠΈΠΏΠ° TPolygon (record)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π΅. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ — 0. nTPolygon

ro

real

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ расстояниС ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° наблюдСния Π΄ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Π˜ΠΌΠ΅Π΅Ρ‚ фиксированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

3.4 ВСкстовоС описаниС основных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Π±Π»ΠΎΠΊ-схСмы

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° FormCreate

Π—Π°Π΄Π°ΡŽΡ‚ΡΡ ΡƒΠ³Π»Ρ‹ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°, радиусы ΠΏΠ°Ρ€Π°Π»Π΅Π»Π»Π΅ΠΉ, ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈ Π²Ρ‹ΡΠΎΡ‚Π° Π²Π°Π·Ρ‹. Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½ Π²Π°Π·Ρ‹ (пСрСсСчСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½ΠΎΠ²). РассчитываСтся количСство ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ². Боздаётся Ρ„ΠΎΠ½ Ρ‚ΠΈΠΏΠ° TBitmap, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π° (рисунок 4).

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° FormKeyDown

Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΆΠ°Ρ‚Ρ‹Π΅ клавиши с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ KeyDown задаСтся ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш Up, Down, Left, Right ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ поворачиваСтся Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ (рисунок 5).

Рисунок 5 — Π‘Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ FormKeyDown

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sort

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° высчитываСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ся ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅; сортировка массива ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ значСниям срСдних ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (рисунок6).

Рисунок 6 — Π‘Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sort

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ViewTransformation

Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ ΠΈ ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ пСрСводятся Π² Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ (рисунок7).

Рисунок 7 — Π‘Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ViewTransformation

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Draw

ΠŸΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Π°Ρ прорисовка ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Ρ€Π°Π½ΡŒ дальшС ΠΎΡ‚ Π½Π°Ρ прорисовываСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ Ρ‚. Π΄. (рисунок 8).

Рисунок 8 — Π‘Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Draw

Ѐункция tone

Ѐункция, Π·Π°Π΄Π°ΡŽΡ‰Π°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°.

Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΡƒΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ взгляда ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΡŽ Ρ†Π²Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ nz Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ для Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π³Ρ€Π°Π½ΠΈ измСняСтся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [-1, 0), Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈ Π·Π°Π΄Π°Π½ Π² Π²ΠΈΠ΄Π΅ RGB ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². И, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для получСния Ρ†Π²Π΅Ρ‚Π° Π³Ρ€Π°Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Π½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nz. Для получСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ†Π²Π΅Ρ‚Π° воспользовались функциями GetRValue, GetGValue, GetBValue.

3.5 Алгоритм взаимодСйствия ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Рисунок 9 — Алгоритм взаимодСйствия ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

4. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставляСт собой Ρ„ΠΎΡ€ΠΌΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдставлСна Π²Π°Π·Π°. Π€ΠΎΡ€ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΠ½, для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ восприятия.

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ся Π½ΠΈΡ‡Π΅Π³ΠΎ. Для наблюдСния эффСктов прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹: Π’ΠΠ˜Π—: ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ оси x Π²Π½ΠΈΠ·; Π’Π›Π•Π’Πž: ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ оси y Π²Π»Π΅Π²ΠΎ; Π’Π’Π•Π Π₯: ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ оси x Π²Π²Π΅Ρ€Ρ…; Π’ΠŸΠ ΠΠ’Πž: ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ оси y Π²ΠΏΡ€Π°Π²ΠΎ.

Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 10.

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΠΈ «Π²Π»Π΅Π²ΠΎ», «Π²ΠΏΡ€Π°Π²ΠΎ», «Π²Π²Π΅Ρ€Ρ…», «Π²Π½ΠΈΠ·» происходит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

Рисунок 10 — Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π’ Ρ…ΠΎΠ΄Π΅ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»Π° появлСния сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….

1. ΠŸΠΎΡ€Π΅Π² Π’. Н. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° — БПб.: Π‘Π₯Π’ — ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2002. — 432 с.: ΠΈΠ».

2. Π¨ΠΈΠΊΠΈΠ½ А. Π’., БорСсков А. Π’. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. ΠŸΠΎΠ»ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ. — Πœ.: Π”Π˜ΠΠ›ΠžΠ“ — МИЀИ, 2001. — 464с.

3. Π›. АммСрал ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: «Π‘ΠΎΠ» БистСм», 1992. — 224 с.: ΠΈΠ».

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit prog;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math;

type

TForm1 = class (TForm)

procedure KeyDown (Sender:TObject;var Key: Word;Shift:TShiftState);

procedure FormCreate (Sender:TObject);

procedure FormPaint (Sender:TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

T3DPoint=record

x, y, z:extended

end;

TPolygon=record

A, B, C, D: word;

clr:TColor;

end;

const

step=30;//количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈ

nPOINT=step*10+1;

nPOLYGON=step*10+step;

col1=255+255*$ 100+204*$ 10 000; //Ρ†Π²Π΅Ρ‚ стСнок (ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ²) Π²Π°Π·Ρ‹

col2=209+154*$ 100+65*$ 10 000; //Ρ†Π²Π΅Ρ‚ Π΄Π½Π° Π²Π°Π·Ρ‹

var

Form1:TForm1;

Buf, Blinc_Buf:TBitMap;

polygons:array[1.nPolygon] of Tpolygon;

w, v1: array[1.nPOINT] of T3DPoint;//ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ (world), Π²ΠΈΠ΄ΠΎΠ²Ρ‹Π΅ (view) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½

v:array[1.nPOINT] of TPoint;//экранныС (screen) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½

S:array[1.nPOLYGON] of extended;

n:array[1.nPOLYGON] of T3DPoint; //массив Π½ΠΎΡ€ΠΌΠ°Π»Π΅ΠΉ

teta, phi, d, ro, r: real;

implementation

{$R *.dfm}

function tone (clr:TColor;nz:extended):TColor; //ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°

begin

tone:=rgb (round (nz*GetRValue (clr)),

round (nz*GetGValue (clr)),

round (nz*GetBValue (clr)))

end;

procedure ViewTransformation;

var i: integer;

begin

for i:=1 to nPOINT Do

begin

v1[i]. x:=Round (w[i].x*(-sin (teta))+w[i].y*(cos (teta)));

v1[i].y:=Round (w[i].x*(-cos (phi)*cos (teta))-w[i].y*(cos (phi)*sin (teta))+

w[i].z*(sin (phi)));

v1[i]. z:=Round (w[i].x*(-sin (phi)*cos (teta))-w[i].y*(sin (phi)*sin (teta));

w[i]. z*(cos (phi)))+ro;

v[i].x:=Round (Form1.ClientWidth div 2+v1[i]. x);

v[i]. y:=Round (Form1.ClientHeight div 2+v1[i]. y);

end;

end;

procedure Sort;

var

i:integer;

begin

for i:=1 to nPOLYGON do

begin

s[i]: =(v1[polygons[i].a].z+v1[polygons[i].b].z+v1[polygons[i].c].z)/3;

//ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ

n[i]. x:=v1[polygons[i].a].y*(v1[polygons[i].b].z-v1[polygons[i].c].z)+

v1[polygons[i].b].y*(v1[polygons[i].c].z-v1[polygons[i].a].z)+

v1[polygons[i].c].y*(v1[polygons[i].a].z-v1[polygons[i].b].z);

n[i].y:=v1[polygons[i].a].z*(v1[polygons[i].b].x-v1[polygons[i].c].x)+

v1[polygons[i].b].z*(v1[polygons[i].c].x-v1[polygons[i].a].x)+

v1[polygons[i].c].z*(v1[polygons[i].a].x-v1[polygons[i].b].x);

n[i].z:=v1[polygons[i].a].x*(v1[polygons[i].b].y-v1[polygons[i].c].y)+

v1[polygons[i].b].x*(v1[polygons[i].c].y-v1[polygons[i].a].y)+

v1[polygons[i].c].x*(v1[polygons[i].a].y-v1[polygons[i].b].y);

if (sqrt (sqr (n[i]. x)+sqr (n[i].y)+sqr (n[i].z)))<>0 then

n[i]. z:=n[i].z/(sqrt (sqr (n[i].x)+sqr (n[i].y)+sqr (n[i].z)))

else n[i]. z:=0;

end;

end;

procedure Draw;

var

j, i1, i:integer;

f: real;

begin

Sort;

f:=0;

buf.Canvas.Draw (0,0,blinc_buf); //рисуСм Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ Ρ„ΠΎΠ½

for i1:=1 to nPOLYGON do

begin

//ΠžΠΏΡ€Π΅Π΄.нСвидимости Π³Ρ€Π°Π½ΠΈ (слСгка затСняСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ)

if (n[i1]. z>0) then n[i1]. z:=n[i1].z*0.60;

end;

for i1:=1 to nPOLYGON do

begin

for i := 1 to nPOLYGON do

if s[i]>f then begin j:=i;f:=s[i]; end;

with polygons[j] do

begin

Buf.Canvas.Brush.Color:=tone (clr, ABS (n[j]. z)); //Ρ†Π²Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°

Buf.Canvas.Pen.Color:=tone (clr, ABS (n[j]. z*0.96));//Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ† ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ²

Buf.Canvas.Polygon ([v[A], v[B], v[C], v[D]]); //прорисовка ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°

end;

s[j]: =0;

f:=0;

end;

Form1.Canvas.Draw (0,0,buf); //прорисовываСм Π±ΡƒΡ„Π΅Ρ€ Π½Π° ΡΠΊΡ€Π°Π½Π΅ (Ρ„ΠΎΡ€ΠΌΠ΅)

end;

procedure TForm1. KeyDown (Sender:TObject;var Key: Word;Shift:TShiftState);

begin

CASE KEY of

VK_UP: phi:=phi+pi*0.05;

VK_DOWN: phi:=phi-pi*0.05;

VK_LEFT: teta:=teta+pi*0.03;

VK_RIGHT: teta:=teta-pi*0.03;

end;

ViewTransformation;

Draw;

end;

procedure TForm1. FormCreate (Sender: TObject);

var

B, L, H, nn: integer;

dL:Real;

const

Rz:array[0.9] of integer = (50,75,90,94,88,74,54,42,40,46);//радиусы ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΉ

begin

H:=250; // высота Π²Π°Π·Ρ‹

d:=200; //ΠΌΠ°ΡΡˆΡ‚Π°Π±

ro:=500; //пСрспСктива

teta:=pi/9; //ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°

phi:=pi*4/3; //ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°

// Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²Π°Π·Ρ‹

for B:=0 to 9 do

begin

for L:=0 to step-1 do

begin

dL:=L*Pi*(360/step)/180;

w[B*step+L+1]. x:=Rz[B]*sin (dL); //ВычислСниС ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚

w[B*step+L+1]. y:=Rz[B]*cos (dL);

w[B*step+L+1].z:=H/10*B-H/2;

end;

end;

// ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹ Π²Π°Π·Ρ‹

nn:=1;

for B:=1 to 9 do

begin

for L:=0 to step-2 do

begin

polygons[nn]. A:=(B-1)*step+L+1;

polygons[nn].B:=(B-1)*step+L+2;

polygons[nn].C:=B*step+L+2;

polygons[nn].D:=B*step+L+1;

polygons[nn].clr:=col1;

nn:=nn+1;

end;

polygons[nn].A:=B*step;

polygons[nn].B:=(B-1)*step+1;

polygons[nn].C:=B*step+1;

polygons[nn].D:=(B+1)*step;

polygons[nn].clr:=col1;

nn:=nn+1;

end;

// Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π΄Π½Π° Π²Π°Π·Ρ‹

w[nPOINT]. x:=0;w[nPOINT].y:=0;w[nPOINT].z:=-H/2;

// ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹ Π΄Π½Π° Π²Π°Π·Ρ‹

for L:=0 to step-2 do

begin

polygons[L+nPOINT]. A:=L+2;

polygons[L+nPOINT].B:=L+1;

polygons[L+nPOINT].C:=nPOINT;

polygons[L+nPOINT].D:=nPOINT;

polygons[L+nPOINT].clr:=col2;

end;

polygons[nPOLYGON].A:=1;

polygons[nPOLYGON].B:=step;

polygons[nPOLYGON].C:=nPOINT;

polygons[nPOLYGON].D:=nPOINT;

polygons[nPOLYGON].clr:=col2;

// Π±ΡƒΡ„Π΅Ρ€

buf:=TBitmap.Create;

buf.Width:=Form1.ClientWidth;

buf.Height:=Form1.ClientHeight;

// Ρ„ΠΎΠ½

blinc_buf:=TBitmap.Create;

blinc_buf.Width:=Form1.ClientWidth;

blinc_buf.Height:= Form1. ClientHeight;

blinc_buf.Canvas.Rectangle (0,0,Form1.ClientWidth, Form1. ClientHeight);

blinc_buf.LoadFromFile ('./background.bmp');

end;

procedure TForm1. FormPaint (Sender: TObject);

begin

// ViewTransformation;

// Draw;

end;

end.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ