ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²/ΠΠ°Π΄Π°ΡΠ° ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ
Π Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π·Π°Π΄Π°ΡΠ° ΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ. ΠΠ° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ ΡΠΎΡΠΊΠ°. Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΡΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ.
ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠΏΡΠΊΠ»ΡΠΌ, ΡΠ°ΠΊ ΠΈ Π½Π΅Π²ΡΠΏΡΠΊΠ»ΡΠΌ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΏΡΠΎΡΡΠΎΠΉ, Ρ.Π΅. Π±Π΅Π· ΡΠ°ΠΌΠΎΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ Π΄Π»Ρ Π½Π΅-ΠΏΡΠΎΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ. Π Π°Π·Π»ΠΈΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, Π² Ρ ΠΎΠ΄Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΡΡΡΠ΅Π΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠ΅ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Π³ΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠΈ, Π΅ΠΌΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ (ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ), Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈΡ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π² ΡΠ΅Π»ΠΎΠΌ.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΠ²Π»ΡΡΡΡΡ
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ, ΠΈΠ½Π°ΡΠ΅ β 0.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄.
ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π»Π΅ΠΆΠΈΡ ΠΈΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π»ΡΡΠ°, ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΈ, ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΡΡΠ½ΠΎΠ΅, ΡΠΎΡΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ. Π Π΄Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ Π»ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π²Π»Π΅Π²ΠΎ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΡΡΡΠ΅Π΅ Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ.
Perl [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Delphi (Object Pascal) [ ΠΏΡΠ°Π²ΠΈΡΡ ]
JavaScript [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Python 3 [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ° Python ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΠΈ ΠΈΠ·-Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ΅ Π½ΡΠΆΠ½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π²ΠΎΠ³Π½ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΡΡΡΡΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π»ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠ½ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π€ΡΠ½ΠΊΡΠΈΡ Cross ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ Π»ΠΈ Π»ΡΡ j-ΠΎΠ΅ ΡΠ΅Π±ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°:
Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ count ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΠΎΡΠΊΠ° Π»Π΅ΠΆΠΈΡ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅Ρ ΡΠΎΡΠΊΠ° Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ Π·Π°Π΄Π°Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π»ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π²Π½ΠΈΠ·.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π° Ρ Π°Π±ΡΠ΅ Π±ΡΠ»Π° ΡΡΠ°ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΎΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΡΠΊΠ° ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ: Π²Π½ΡΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ½Π°ΡΡΠΆΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ. Π ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΡΠ°ΡΡΠ΅, Π±ΡΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½, Π° Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π±ΡΠ» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Ρ Π°ΠΎΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΌΡΡΠ»Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ ΡΡΠ°ΡΡΡ. ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π»ΠΈ Π·Π°Π΄Π°Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ, Ρ ΠΎΡΡ ΡΡΠ°Π·Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π₯ΠΎΡΡ ΡΠ°ΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΡΠ°: Ρ Π½Π°Ρ Π·Π°Π΄Π°Π½ Π½Π°Π±ΠΎΡ ΡΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π΄Π°Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΈ ΡΠΎΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ. Π Π·Π°Π΄Π°Π½Π° ΡΠΎΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π·Π°ΠΌΠΊΠ½ΡΡΡΠΉ, ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π±ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ½ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ ΡΠ°ΠΌΠΎΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠ½ Π½Π΅Ρ, ΡΠΎ Π΅ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ Π²Π΅ΡΡΠΈΠ½. ΠΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π·Π°Π΄Π°ΡΡ Π½Π°ΠΌ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΡΠΎ, Π½ΠΎ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ. Π Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½ΡΠ°Π½Ρ: ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΠΎΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΡΠ½ΠΎ, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΈΠ·Π±Π°Π²Π»Π΅Π½Π° ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡ Π²ΡΠΎΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ.
ΠΠ΅ΡΠΎΠ΄ 1. Π’ΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΡΡΠ΅ΠΉ
ΠΠ°ΡΠ½Ρ Ρ Ρ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π² ΠΌΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΈΠ³Ρ: ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΡΡΠ΅ΠΉ. ΠΠΊΡΠ°ΡΡΠ΅, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ Π»ΡΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ. ΠΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΠΌ Π»ΡΡΠΎΠΌ Π²Π΅ΡΡΠΈΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΠ΅Π±ΡΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π»ΡΡΠΎΠΌ. ΠΠ»Π»ΡΡΡΡΠΈΡΡΡ ΡΡΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΈ Π΅ΡΡΡ ΡΠΎΡΠΊΠ°. Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΌΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈΡΡ, ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ Ρ . ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ· ΡΠΎΡΠΊΠΈ Π»ΡΡ Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡΠΈ x ΠΈ Π»ΡΡ Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π² Π²Π΅ΡΡΠΈΠ½Π΅. Π’ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ? ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ. ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π² ΠΌΠΈΡ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ, Π° ΡΠΈΡΠ»Π°ΠΌΠΈ.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π² Π΄ΡΡΠ³ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π»ΡΡ Π² ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π’Π°ΠΌ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ β Π»ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π’ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΌΠ΅ΡΡΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·ΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅? ΠΠΈΠΊΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Ρ ΠΎΠΏΡΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅ΡΠ΅ Π²Π΅ΡΡΠΈΠ½Ρ. Π ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΠΌΠ½ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°Π²Π΅ΡΡ Ρ ΡΠΎΡΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅Π΅ Ρ Π»ΡΡΠΎΠΌ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌ ΠΎΡΠΈ y ΠΈ ΠΈΠ΄ΡΡΠΈΠΉ ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ· ΡΠΎΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π² Π²Π΅ΡΡΠΈΠ½Π΅.
ΠΡΠΈΡΠ΅ΠΌ Π΅ΡΠ»ΠΈ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ β ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ, ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΠΌ Π»ΡΡ Ρ ΠΎΡΡΠ΅Π·ΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΡΠΈΠΌ Π»ΡΡΠΎΠΌ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ. ΠΠ°ΠΊ Π±ΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅? Π Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ, Π° ΠΏΠΎΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ? Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅, ΡΡΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΡΠΎΠΆΠ΄Π΅Π½Π½ΡΡ ΡΠ΅Π±Π΅Ρ, ΠΊΠ°ΠΊ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ?
Π‘Π°ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π²ΠΎΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ: Β«ΠΌΠ½Π΅ Π½Π°Π΄ΠΎ ΡΡΠΎ-ΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ Π΄Π»Ρ ΠΌΠΎΠΈΡ ΠΏΡΠΎΡΡΡΡ ΡΠ΅Π»Π΅ΠΉ, ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅ ΠΊΠΎΡΠ½Π΅ΡΡΡΒ». ΠΠΎ Π·Π°ΠΊΠΎΠ½Ρ ΠΠ΅ΡΡΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΠΊΠΎΠ³Π΄Π° Π΅Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΆΠ΄Π΅ΡΡ. Π ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠΆΡ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ΅ΡΠΎΠ΄ 2. ΠΠ»ΠΈΠΆΠ½ΡΡ ΡΠΎΡΠΊΠ° ΠΈ Π΅Π΅ Π½ΠΎΡΠΌΠ°Π»Ρ
ΠΠΎΠΎΠ±ΡΠ΅ Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅ΡΡΡ ΡΡΡΠ°ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ angle weighted pseudo normals ΠΈ ΡΠ²ΡΠ·Π°Π½ ΠΎΠ½ Π² ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΉ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ (signed distance fields). ΠΠΎ ΠΏΡΠ³Π°ΡΡ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· Ρ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ Ρ ΠΎΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ Π±Π»ΠΈΠΆΠ½ΡΡ ΡΠΎΡΠΊΠ° ΠΈ Π΅Π΅ Π½ΠΎΡΠΌΠ°Π»Ρ (ΡΠΎ Π΅ΡΡΡ ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ).
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΎΠΉ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ. Π’ΠΎΡΠΊΠ° A1, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ Π½Π΅Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ΅Π±ΡΠ΅. ΠΡΠ»ΠΈ Π²ΡΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎΡΠΌΠ°Π»Ρ ΠΊ ΡΠ΅Π±ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π° Π²Π΅ΠΊΡΠΎΡΡ ΠΎΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΡΠΎΡΠΊΠΈ A1, ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ = 0. ΠΠ»ΠΈ ΠΏΠΎΡΡΠΈ Π½ΡΠ»Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΅Π½ΡΡΠ΅ 90 Π³ΡΠ°Π΄ΡΡΠΎΠ², ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΎΡΠΊΠ° A1 β Π²Π½ΡΡΡΠΈ. ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠΎΡΠΊΡ A2. Π£ Π½Π΅Π΅ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ°Ρ ΡΠΎΡΠΊΠ° β Π²Π΅ΡΡΠΈΠ½Π°, Π½ΠΎΡΠΌΠ°Π»Ρ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ β ΡΡΡΠ΅Π΄Π½Π΅Π½Π½Π°Ρ Π½ΠΎΡΠΌΠ°Π»Ρ ΡΠ΅Π±Π΅Ρ ΠΏΡΠΈΠ»Π΅Π³Π°ΡΡΠΈΡ ΠΊ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Π΅. Π‘ΡΠΈΡΠ°Π΅ΠΌ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΡ β ΡΠ½Π°ΡΡΠΆΠΈ.
Π’Π°ΠΊ, Π²ΡΠΎΠ΄Π΅ Π±Ρ Ρ ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ. Π§ΡΠΎ ΡΠ°ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ?
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΎΡΠ΅ΠΊ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ β O(log n), Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠ΅Π²ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅Π±ΡΠ°Ρ . Π‘ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, Ρ ΠΎΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠΎΠΉ ΠΈ ΡΠ΅Π±ΡΠΎΠΌ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π»ΠΈΠ½ΠΈΠΉ. ΠΠ΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ ΡΠ΅Π±Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΡΠΈΡΠ΅ΠΌ ΡΠ΅ΠΌ ΠΌΡ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ΅Π±ΡΡ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π½Π°ΠΊΠ°. Π ΡΡΠ°ΡΡΡΡ, ΡΠ΅ΠΌ ΠΌΡ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ΅Π±ΡΡ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅. Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π²ΡΠΎΠ΄Π΅ DBL_EPSILON ΠΈΠ»ΠΈ FLT_EPSILON), ΡΠΎ ΡΠΎΡΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠ΅Π±ΡΡ. Π Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠ΅Π±ΡΡ, ΡΠΎ ΠΌΡ ΡΠΆΠ΅ ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ°Π΅ΠΌ, ΡΠ°ΡΡΡ Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π΅Π³ΠΎ ΡΠ΅Π±ΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ β ΡΠ°ΡΡΡ).
ΠΠΏΠΈΡΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ . ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°Π·Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΊ ΡΠ΅Π±ΡΠ°ΠΌ Π±ΡΠ»ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. Π’ΠΎ Π΅ΡΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΠ½Π°ΡΡΠΆΠΈ ΠΌΡ ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠΈ, Π½Π°Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠΈΡ Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ²Π°Π»ΠΊΠ° ΠΈΠ· Π²Π΅ΡΡΠΈΠ½ ΠΈ ΡΠ΅Π±Π΅Ρ, ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΡΡ. ΠΡΠ»ΠΈ Π½Π°Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ, ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½ΠΎΡΠΌΠ°Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅. Π’Π°ΠΊΠΆΠ΅, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ΅Π½Ρ Π½Π΅ Π»ΡΠ±ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Ρ ΠΎΠ΄ ΠΏΠΎΠ΄Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΡΠ°ΠΌΠΎΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ. Π Π½Π°ΡΠ°Π»Π΅ Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΡΡ, ΡΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠ³ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ΠΏΠ»ΠΎΡ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²Π΅ΡΡΠΈΠ½ ΠΈ ΡΠ΅Π±Π΅Ρ, Π° ΡΠΎΡΠ΅ΠΊ Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ Π½Π°Π΄ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠΎΡΠ΅ΠΊ ΠΌΠ°Π»ΠΎ, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΡΡΠ΅ΠΉ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°, Π° Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ, ΡΠΎ Π΅ΡΡΡ ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±.
ΠΠ΅ΡΠΎΠ΄ 3. ΠΠ½Π΄Π΅ΠΊΡ ΡΠΎΡΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π΄Π²Π°. ΠΠΎΡ Π΅Π³ΠΎ ΡΡΡΡ Β«Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ Β». ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Ρ ΡΠ΅Π½ΡΡΠΎΠΌ Π² ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΊΠ΅. ΠΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π»ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Π²Π΅ΡΡΠΈΠ½Ρ ΠΈ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠΎΡΠΊΡ. ΠΠ°ΠΊ-ΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ ΡΠΎΡΠΊΠΈ P1, P2 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ β Π²Π΅ΡΡΠΈΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, Π° ΡΠΎΡΠΊΠΈ P1β, P2β ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ β ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ Π½Π° ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΡΠ΅Π±ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡΠΎΠΌ, Π° Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠ΅ β ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ. Π£Π³ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅Π±ΡΡ β ΡΡΠΎ ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ Π²Π΅ΡΡΠΈΠ½ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π±ΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΠΎΡΠΎΡ Ρ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΡΠΎ ΠΈ ΡΠ³ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΡΡΡ ΡΠΎΡΠΊΠ° Π, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ. ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ AP1 ΠΈ AP2. ΠΠ΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΆΠ΅ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΡΠΌΠΎΡΡΠΈΡ Π½Π° Π½Π°Ρ, Π·Π½Π°ΡΠΈΡ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ ΡΡΠΌΠΌΠ΅. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ AP2 ΠΈ AP3. ΠΠ΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΌΠΎΡΡΠΈΡ Π½Π° Π½Π°Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ³ΠΎΠ» Π²ΡΡΠΈΡΠ°Π΅ΠΌ. Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ° Ρ Π²ΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°Π» ΠΈ Π²ΠΎΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ:
(AP1, AP2)=74.13, (AP2, AP3)=51.58, (AP3, AP4)=89.99, (AP4, AP5)=126.47, (AP5, AP1)=120.99.
sum=74.13-51.58+89.99+126.47+120.99=360. 360/360=1 Π’ΠΎΡΠΊΠ° β Π²Π½ΡΡΡΠΈ.
(BP1, BP2)=44.78, (BP2, BP3)=89.11, (BP3, BP4)=130.93, (BP4, BP5)=52.97, (BP5, BP1)=33.63.
sum=-44.78+89.11-130.93+52.97+33.63=0. Π’ΠΎΡΠΊΠ° β ΡΠ½Π°ΡΡΠΆΠΈ.
Π ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΌΠΈΠ½ΡΡΠΎΠ². ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΊ-ΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n) ΠΈ, ΠΊΠ°ΠΊ Π½ΠΈ ΠΊΡΡΡΠΈ, Π° Π²ΡΠ΅ ΡΠ΅Π±ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ³Π»Π° ΠΏΡΠΈΠ΄ΡΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π°ΡΠΊΠΊΠΎΡΠΈΠ½ΡΡΠ° ΠΈ Π΄Π²ΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π²Π·ΡΡΠΈΡ ΠΊΠΎΡΠ½Ρ (ΡΠΎΡΠΌΡΠ»Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΡΠ²ΡΠ·Ρ Π΅Π³ΠΎ Ρ ΡΠ³Π»ΠΎΠΌ ΡΠ΅ΠΌ Π² ΠΏΠΎΠΌΠΎΡΡ, ΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ). ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅Π΄Π΅ΡΠ΅Π²Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΠΈ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ. Π Π² ΡΡΠ΅ΡΡΠΈΡ , Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΊΡ, Π»Π΅ΠΆΠ°ΡΡΡ Π½Π° ΡΠ΅Π±ΡΠ΅. ΠΠΈΠ±ΠΎ β ΡΠ½Π°ΡΡΠΆΠΈ, Π»ΠΈΠ±ΠΎ β Π²Π½ΡΡΡΠΈ. Π’ΡΠ΅ΡΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π°Π½ΠΎ. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ: Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ³Π»ΠΎΠ² ΡΠ°Π²Π΅Π½ (ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈ ΡΠ°Π²Π΅Π½) 180 Π³ΡΠ°Π΄ΡΡΠ°ΠΌ, ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΅Π±ΡΠΎ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΡΡΡΡ Π΅Π³ΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π° Π²Ρ ΠΎΠ΄ ΠΏΠΎΠ΄Π°Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π²Π΅ ΡΡΠΎ ΡΠΎΡΠ΅ΠΊ Π½Π° ΡΠ΅Π±ΡΠ°Ρ , Π½ΠΎ ΠΎ Π½ΠΈΡ ΡΠΌΠΎΡΡΠΈ Π²ΡΡΠ΅. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π±ΠΎΡΠΎΡΡΡΡ Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠ°ΠΌΠΎΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ? ΠΠ΅ Π±Π΅Π΄Π°, ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π΅ Π·Π°ΠΌΠΊΠ½ΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π° ΠΌΠ°Π»ΠΎΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ²? ΠΠ΅ΡΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΡΠΎΡΠΊΠΈ Π²Π΅ΡΠ½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π². Π ΠΎΠ±ΡΠ΅ΠΌ, Π²ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΎΡΠΎΡ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π°ΡΠΊΠΊΠΎΡΠΈΠ½ΡΡΠΎΠ².
Π§Π΅ΠΌ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΡΡΠΎΡ ΠΎΠ±Π·ΠΎΡ? Π ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄Π²Π°. ΠΠ½ΠΈ ΡΠ»ΡΠΆΠ°Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ, Π΄ΡΡΠ³ΠΈΠ΅ β ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ. ΠΡ ΠΈ Π½Π΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π° ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡΠΌ. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ β ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΡΡΠ΅ΠΉ Π² ΠΏΠΎΠΌΠΎΡΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π±Π»ΠΈΠΆΠ½Π΅ΠΉ ΡΠΎΡΠΊΠΈ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ β ΡΠΎΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡΡ.
ΠΡΠ»ΠΈ Π±ΡΠ΄ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΠΎΠΏΡΠΎΡΡ, Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅. ΠΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠΉΡΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠ΅ΠΉ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ, Π±ΡΠ΄Ρ ΡΠ°Π΄ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅ΠΌ ΡΠΌΠΎΠ³Ρ.
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ?
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΡΠ»Π΅ ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ ΡΠΈΠ³ΡΡΡ?
ΠΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΠΌΡΠ»Π°, ΠΊΠΎΠ΄.
Rsa97, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ° Π²ΡΠΏΡΠΊΠ»ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° (ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅).
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π²ΡΡΠ΅, Π½ΠΈΠΆΠ΅, ΠΏΡΠ°Π²Π΅Π΅ ΠΈΠ»ΠΈ Π»Π΅Π²Π΅Π΅ ΠΈΡΠΊΠΎΠΌΠΎΠΉ ΡΠΎΡΠΊΠΈ. ΠΠ½Π°ΡΠΈΡ ΠΈΡΠΊΠΎΠΌΠ°Ρ ΡΠΎΡΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π²Π½Π΅ ΡΠΈΠ³ΡΡΡ. ΠΠΏΡΡΡ ΠΆΠ΅ ΡΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²ΡΠΏΡΠΊΠ»ΡΡ
ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π΅ Π²ΡΠΏΡΠΊΠ»ΡΠΉ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠΏΡΠΊΠ»ΡΠΌ (Π½Π΅ ΠΏΠΎΠΌΠ½Ρ ΠΊΠ°ΠΊ) Π²ΡΠ΄Π΅Π»ΠΈΠ² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ°Π΅ΠΌΡΡ . Π’ΠΎΠ³Π΄Π° Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² Π΄Π²Π° ΡΡΠ°ΠΏΠ°: 1. ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΡΠ»ΠΈ Π΄Π° ΡΠΎ 2. ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π»ΠΈΠΆΠΈΡ Π»ΠΈ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ Π²ΡΡΠΈΡΠ°Π΅ΠΌΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΠΏΡΡΡ ΠΆΠ΅, ΡΠΏΠΈΡΠ°Π΅ΠΌΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ 359.9999991231 Π³ΡΠ°Π΄ΡΡ, ΡΠΎ ΡΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ?
ΠΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π» ΠΏΠΎ ΠΊΠΎΠ½ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΊΠΈ, Π½ΠΎ ΡΠ°ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΊΡΠ°Π΅Π²ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΈΠ·-Π·Π° ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ Π΄Π°Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ½Π°ΡΡΠΆΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°?
ΠΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΠΈ ΡΠΎΡΠΊΠ΅ ‘p’ Π½Π°ΠΉΠ΄ΠΈΡΠ΅, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ‘p’ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ. Π’ΠΎΡΠΊΠΈ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ.
ΠΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΡΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ Π»ΠΈ Π΄Π²Π° Π·Π°Π΄Π°Π½Π½ΡΡ
ΠΎΡΡΠ΅Π·ΠΊΠ°?
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ½Π°ΡΡΠΆΠΈ.
ΠΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΡΠΊΡ Β«gΒ» Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π²ΡΡΠ΅?
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π΅ΡΠ½ΡΡΡ true, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° Π»Π΅ΠΆΠΈΡ Π½Π° ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π§ΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΈΠΌ, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Π»ΠΈ Π»ΠΈΠ½ΠΈΡ ΠΎΡ ‘p’ Π΄ΠΎ ΠΊΡΠ°ΠΉΠ½Π΅Π³ΠΎ, ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ‘p’ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌ Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ coliear, ΡΠΎ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΡΠΎΡΠΊΠ° ‘p’ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π»Π΅ΠΆΠΈΡ, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ true, ΠΈΠ½Π°ΡΠ΅ false.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅ΠΈ.
// ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° C ++ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ Π·Π°Π΄Π°Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Π½ΡΡΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
// Π‘ΠΌ. Https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/amp/
// Π΄Π»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ onSegment (), direction () ΠΈ doIntersect ()
#include
using namespace std;
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ INT_MAX Π²ΡΠ·Π²Π°Π»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ)
#define INF 10000
// Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΠΈ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΡ
ΡΠΎΡΠΊΠΈ p, q, r, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ,
// ΡΠΎΡΠΊΠ° q Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ ΠΏΡΡΠΌΠΎΠΉ ‘pr’
bool onSegment(Point p, Point q, Point r)
int orientation(Point p, Point q, Point r)
if (val == 0) return 0; // ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°Ρ
return (val > 0)? 1: 2; // ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ
// Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΡΡΠ΅Π·ΠΎΠΊ Π»ΠΈΠ½ΠΈΠΈ ‘p1q1’
// ΠΈ ‘p2q2’ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ.
bool doIntersect(Point p1, Point q1, Point p2, Point q2)
// ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΈ
int o1 = orientation(p1, q1, p2);
int o2 = orientation(p1, q1, q2);
int o3 = orientation(p2, q2, p1);
int o4 = orientation(p2, q2, q1);
// p1, q1 ΠΈ p2 ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½Ρ, Π° p2 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p1q1
// p1, q1 ΠΈ p2 ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½Ρ, Π° q2 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p1q1
// p2, q2 ΠΈ p1 ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½Ρ, Π° p1 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p2q2
// p2, q2 ΠΈ q1 ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½Ρ, Π° q1 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p2q2
return false ; // ΠΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ»ΡΡΠ°Π΅Π²
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° p Π»Π΅ΠΆΠΈΡ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° [] Ρ n Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ
bool isInside(Point polygon[], int n, Point p)
// Π ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 3 Π²Π΅ΡΡΠΈΠ½Ρ []
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ ΠΎΡΡΠ΅Π·ΠΊΠ° ΠΎΡ p Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ
// ΠΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
// ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Π»ΠΈ ΠΎΡΡΠ΅Π·ΠΎΠΊ ΠΎΡ ‘p’ Π΄ΠΎ ‘extreme’
// Ρ ΠΎΡΡΠ΅Π·ΠΊΠΎΠΌ ΠΎΡ ‘polygon [i]’ Π΄ΠΎ ‘polygon [next]’
if (doIntersect(polygon[i], polygon[next], p, extreme))
// ΠΡΠ»ΠΈ ΡΠΎΡΠΊΠ° ‘p’ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΠΉ Ρ ΠΎΡΡΠ΅Π·ΠΊΠΎΠΌ Π»ΠΈΠ½ΠΈΠΈ ‘i-next’,
// Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΠΎΠ½ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎ Π»ΠΎΠΆΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΡΡΠΈΠ½Ρ,
if (orientation(polygon[i], p, polygon[next]) == 0)
return onSegment(polygon[i], p, polygon[next]);
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ true, Π΅ΡΠ»ΠΈ count Π½Π΅ΡΠ΅ΡΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ false
return count&1; // Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ (count% 2 == 1)
// ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
int n = sizeof (polygon1)/ sizeof (polygon1[0]);
isInside(polygon1, n, p)? cout «Yes \n» : cout «No \n» ;
isInside(polygon1, n, p)? cout «Yes \n» : cout «No \n» ;
n = sizeof (polygon2)/ sizeof (polygon2[0]);
isInside(polygon2, n, p)? cout «Yes \n» : cout «No \n» ;
isInside(polygon2, n, p)? cout «Yes \n» : cout «No \n» ;
isInside(polygon2, n, p)? cout «Yes \n» : cout «No \n» ;
n = sizeof (polygon3)/ sizeof (polygon3[0]);
isInside(polygon3, n, p)? cout «Yes \n» : cout «No \n» ;
// Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½Π°Ρ ΡΠΎΡΠΊΠ°
// Π»Π΅ΠΆΠΈΡ Π²Π½ΡΡΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
// Π‘ΠΌ. Https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/amp/
// Π΄Π»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ onSegment (),
// ΠΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ () ΠΈ doIntersect ()
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ INT_MAX
// Π²ΡΠ·Π²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ)
static int INF = 10000 ;
static class Point
public Point( int x, int y)
// ΠΠ°Π½Ρ ΡΡΠΈ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΡ ΡΠΎΡΠΊΠΈ p, q, r,
// ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΡΠΎΡΠΊΠ° q
// Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ‘pr’
static boolean onSegment(Point p, Point q, Point r)
// ΠΠ°ΠΉΡΠΈ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠΏΠ»Π΅ΡΠ° (p, q, r).
// Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
static int orientation(Point p, Point q, Point r)
return 0 ; // ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°Ρ
// Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ
// ΠΎΡΡΠ΅Π·ΠΎΠΊ Β«p1q1Β» ΠΈ Β«p2q2Β» ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ.
static boolean doIntersect(Point p1, Point q1,
// ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ
// ΠΎΠ±ΡΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ
int o1 = orientation(p1, q1, p2);
int o2 = orientation(p1, q1, q2);
int o3 = orientation(p2, q2, p1);
int o4 = orientation(p2, q2, q1);
// p1, q1 ΠΈ p2 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// p2 Π»Π΅ΠΆΠΈΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ p1q1
if (o1 == 0 && onSegment(p1, p2, q1))
// p1, q1 ΠΈ p2 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// q2 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p1q1
if (o2 == 0 && onSegment(p1, q2, q1))
// p2, q2 ΠΈ p1 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// p1 Π»Π΅ΠΆΠΈΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ p2q2
if (o3 == 0 && onSegment(p2, p1, q2))
// p2, q2 ΠΈ q1 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// q1 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p2q2
if (o4 == 0 && onSegment(p2, q1, q2))
// ΠΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ»ΡΡΠ°Π΅Π²
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° p Π»Π΅ΠΆΠΈΡ
// Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° [] Ρ n Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ
static boolean isInside(Point polygon[], int n, Point p)
// Π ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 3 Π²Π΅ΡΡΠΈΠ½Ρ []
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ ΠΎΡΡΠ΅Π·ΠΊΠ° ΠΎΡ p Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ
Point extreme = new Point(INF, p.y);
// Π‘ΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ
// ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
int next = (i + 1 ) % n;
// ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΡΡΠ΅Π·ΠΎΠΊ ΠΎΡ ‘p’ Π΄ΠΎ
// Β«ΠΊΡΠ°ΠΉΠ½ΠΈΠΉΒ» ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Ρ Π»ΠΈΠ½ΠΈΠ΅ΠΉ
// ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ ΠΎΡ ‘polygon [i]’ Π΄ΠΎ ‘polygon [next]’
if (doIntersect(polygon[i], polygon[next], p, extreme))
// ΠΡΠ»ΠΈ ΡΠΎΡΠΊΠ° ‘p’ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΠΉ Ρ Π»ΠΈΠ½ΠΈΠ΅ΠΉ
// ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Β«i-nextΒ», Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΠΎΠ½
// Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎ Π»ΠΎΠΆΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ true, ΠΈΠ½Π°ΡΠ΅ false
if (orientation(polygon[i], p, polygon[next]) == 0 )
return onSegment(polygon[i], p,
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ true, Π΅ΡΠ»ΠΈ count Π½Π΅ΡΠ΅ΡΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ false
return (count % 2 == 1 ); // Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ (count% 2 == 1)
public static void main(String[] args)
int n = polygon1.length;
if (isInside(polygon1, n, p))
if (isInside(polygon1, n, p))
if (isInside(polygon2, n, p))
if (isInside(polygon2, n, p))
if (isInside(polygon2, n, p))
if (isInside(polygon3, n, p))
// ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ 29AjayKumar
// AC # ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
// Π»Π΅ΠΆΠΈΡ Π²Π½ΡΡΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
// Π‘ΠΌ. Https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/amp/
// Π΄Π»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ onSegment (),
// ΠΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ () ΠΈ doIntersect ()
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ INT_MAX
// Π²ΡΠ·Π²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ)
static int INF = 10000;
public Point( int x, int y)
// ΠΠ°Π½Ρ ΡΡΠΈ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΡ ΡΠΎΡΠΊΠΈ p, q, r,
// ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΡΠΎΡΠΊΠ° q
// Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ‘pr’
static bool onSegment(Point p, Point q, Point r)
// ΠΠ°ΠΉΡΠΈ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠΏΠ»Π΅ΡΠ° (p, q, r).
// Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
static int orientation(Point p, Point q, Point r)
return 0; // ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°Ρ
// Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ
// ΠΎΡΡΠ΅Π·ΠΎΠΊ Β«p1q1Β» ΠΈ Β«p2q2Β» ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ.
static bool doIntersect(Point p1, Point q1,
// ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ
// ΠΎΠ±ΡΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ
int o1 = orientation(p1, q1, p2);
int o2 = orientation(p1, q1, q2);
int o3 = orientation(p2, q2, p1);
int o4 = orientation(p2, q2, q1);
// p1, q1 ΠΈ p2 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// p2 Π»Π΅ΠΆΠΈΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ p1q1
if (o1 == 0 && onSegment(p1, p2, q1))
// p1, q1 ΠΈ p2 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// q2 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p1q1
if (o2 == 0 && onSegment(p1, q2, q1))
// p2, q2 ΠΈ p1 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// p1 Π»Π΅ΠΆΠΈΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ p2q2
if (o3 == 0 && onSegment(p2, p1, q2))
// p2, q2 ΠΈ q1 ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΡΠΌΠΈ ΠΈ
// q1 Π»Π΅ΠΆΠΈΡ Π½Π° ΠΎΡΡΠ΅Π·ΠΊΠ΅ p2q2
if (o4 == 0 && onSegment(p2, q1, q2))
// ΠΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ»ΡΡΠ°Π΅Π²
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° p Π»Π΅ΠΆΠΈΡ
// Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° [] Ρ n Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ
static bool isInside(Point []polygon, int n, Point p)
// Π ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 3 Π²Π΅ΡΡΠΈΠ½Ρ []
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ ΠΎΡΡΠ΅Π·ΠΊΠ° ΠΎΡ p Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ
Point extreme = new Point(INF, p.y);
// Π‘ΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ
// ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
// ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΡΡΠ΅Π·ΠΎΠΊ ΠΎΡ ‘p’ Π΄ΠΎ
// Β«ΠΊΡΠ°ΠΉΠ½ΠΈΠΉΒ» ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Ρ Π»ΠΈΠ½ΠΈΠ΅ΠΉ
// ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ ΠΎΡ ‘polygon [i]’ Π΄ΠΎ ‘polygon [next]’
polygon[next], p, extreme))
// ΠΡΠ»ΠΈ ΡΠΎΡΠΊΠ° ‘p’ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΠΉ Ρ Π»ΠΈΠ½ΠΈΠ΅ΠΉ
// ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Β«i-nextΒ», Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΠΎΠ½
// Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎ Π»ΠΎΠΆΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ true, ΠΈΠ½Π°ΡΠ΅ false
if (orientation(polygon[i], p, polygon[next]) == 0)
return onSegment(polygon[i], p,
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ true, Π΅ΡΠ»ΠΈ count Π½Π΅ΡΠ΅ΡΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ false
return (count % 2 == 1); // Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ (count% 2 == 1)