ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΠ°Π±Π° (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ). ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² n ΡΠ°Π·, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² ΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ n ΡΠ°Π· ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ n ΡΠ°Π·. ΠΡΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² n ΡΠ°Π· ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°Π³ΠΎΠΌ n, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ nxn ΡΡΠΈΡΠ°Π΅ΠΌ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠΈΡ. 2.4.4. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π ΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠΈ
ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ
ΠΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ
Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ: ΠΠΠ’Π€
ΠΡΡΠΏΠΏΠ°: ΠΠΠ’-919
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»: Π ΠΎΠΆΠΊΠΎΠ² Π. Π.
ΠΡΠΎΠ²Π΅ΡΠΈΠ»: Π ΠΎΠΌΠ°Π½ΠΎΠ² Π. Π.
ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ
1. ΠΠ°Π΄Π°Π½ΠΈΠ΅
2. Π‘ΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
2.1 ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ
2.2 Π‘ΡΡΡΠΊΡΡΡΠ° BMP ΡΠ°ΠΉΠ»Π°
2.3 Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
2.4 ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
2.5 ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
2.5.1 Π‘ΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
2.5.2 ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ
3. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
3.1. ΠΠ»Π°ΡΡ BMP
3.1.1 ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° BMP
3.1.2 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° BMP
3.2. ΠΠ»Π°ΡΡ QUEUE (ΠΎΡΠ΅ΡΠ΅Π΄Ρ)
3.2.1 ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° QUEUE
3.2.2 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° QUEUE
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄Ρ
4.1 ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
4.2 Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ
4.3 Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
4.4 ΠΡΠ²ΠΎΠ΄Ρ
5. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
1. ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «Π²ΡΡΡΠ½ΡΡ» ΡΠΈΡΠ°Π΅Ρ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (bmp), Π²ΡΠΏΠΎΠ»Π½ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΎΡΠΌΠ°ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (256-ΡΠ²Π΅ΡΠΎΠ² ΠΈ Ρ. ΠΏ).
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΠ°Π±Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ΅Π΄Π½Π΅Π½ΠΈΡ Π³ΡΡΠΏΠΏ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ (3×3).
ΠΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ («Π»ΠΈΠ½Π·Π°»).
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΡΠΎΡΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ).
ΠΠ°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅, Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°.
ΠΠ°Π»ΠΈΠ²ΠΊΠ°.
2. Π‘ΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ½Π°ΡΠ°Π»Π΅ ΠΊΡΠ°ΡΠΊΠΎ ΠΈΠ·Π»ΠΎΠΆΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΈ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
2.1 ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΅Ρ Π·Π°ΠΏΠΈΡΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅.
Π Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, ΡΠΏΠ»Π°ΠΉΠ½Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ SVG ΡΠΎΡΠΌΠ°Ρ).
Π ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΡΠΊΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΡΠΎΡΠ΅ΠΊ ΡΠ²Π΅ΡΠΎΠ² (ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ). Π Π°ΡΡΡΠΎΠ²ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ: BMP, ECW, GIF, ICO, PNG, JPEG ΠΈ Π΄Ρ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ BMP ΡΠΎΡΠΌΠ°Ρ. Π‘ Π΄Π°Π½Π½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Windows ΠΈ OS/2. Π€Π°ΠΉΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠ° BMP ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ .bmp, .dib ΠΈ .rle. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΡΡΡΠΎΠ² RES ΠΈ Π² PE-ΡΠ°ΠΉΠ»Ρ.
ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΠ²Π΅ΡΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ 1, 4, 8, 16, 24, 32, 48 Π±ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π», ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ 65 535Π§65535 ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ².
Π ΡΠΎΡΠΌΠ°ΡΠ΅ BMP Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΆΠ°ΡΠΈΡ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ RLE, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΡΠΌΠ°ΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½ΡΠΌ ΡΠΆΠ°ΡΠΈΠ΅ΠΌ, ΠΈ ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° BMP ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Π³Π΄Π΅ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ PNG ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠΉ GIF.
2.2 Π‘ΡΡΡΠΊΡΡΡΠ° BMP ΡΠ°ΠΉΠ»Π° ΠΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ BMP ΡΠΎΡΠΌΠ°ΡΠΎΠΌ Ρ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ ΡΠ²Π΅ΡΠ° 24 Π±ΠΈΡΠ° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π±Π΅Π· ΡΠΆΠ°ΡΠΈΡ, Π±Π΅Π· ΠΏΠ°Π»ΠΈΡΡΡ. ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π±Π°ΠΉΡΠ°, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠ²Π΅ΡΠ° B, G, R; (Π½Π΅ R, G, B). ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»Π°:
24-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ BMP-ΡΠ°ΠΉΠ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΡΡ ΡΠ°ΡΡΠ΅ΠΉ:
1) ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π°
2) ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
3) Π‘Π°ΠΌΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π ΡΠ°Π±Π»ΠΈΡΠ΅ 2.2 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΡΡΠΈ.
Π’Π°Π±Π»ΠΈΡΠ° 2.2
Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ | ΠΠ»ΠΈΠ½Π° ΠΏΠΎΠ»Ρ Π² Π±Π°ΠΉΡΠ°Ρ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ | |
ΠΠΠΠΠΠΠΠΠ Π€ΠΠΠΠ | |||
ΠΠΎΠ΄ 424Dh — ΠΡΠΊΠ²Ρ 'BM' | |||
Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ | |||
0 (Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅) | |||
0 (Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅) | |||
Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΡΠ°ΡΡΡ), ΡΠ°Π²Π½ΠΎ 54 | |||
ΠΠΠΠΠΠΠΠΠ ΠΠΠΠΠ ΠΠΠΠΠΠ― | |||
Π Π°Π·ΠΌΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² Π±Π°ΠΉΡΠ°Ρ , ΡΠ°Π²Π½ΠΎ 40 | |||
Π¨ΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ | |||
ΠΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ | |||
Π§ΠΈΡΠ»ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ 1 | |||
ΠΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π»: 24 | |||
Π’ΠΈΠΏ ΡΠΆΠ°ΡΠΈΡ, ΡΠ°Π²Π½ΠΎ 0 | |||
0 ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ . | |||
ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ | |||
ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ | |||
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ²Π΅ΡΠΎΠ² | |||
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ «Π²Π°ΠΆΠ½ΡΡ » ΡΠ²Π΅ΡΠΎΠ², ΡΠ°Π²Π½ΠΎ 0. | |||
Π‘ΠΠΠ ΠΠΠΠΠ ΠΠΠΠΠΠ | |||
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ Π‘ΠΠΠΠ£-ΠΠΠΠ Π₯. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠ½ΠΎΠ΅ 4 ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ. Π Π½Π΅Π·Π½Π°ΡΠ°ΡΠΈΡ Π±Π°ΠΉΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΌΡΡΠΎΡ. Π‘ΡΠ°ΡΡΠ΅ΠΌΡ Π±ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ°Π΄Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΌΡΠΉ Π»Π΅Π²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π». | |||
2.3 Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ (BMP), ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΠΈΠ·: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (MBMP), ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΠ³ΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΊΠΎΠ²Π°: ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° biHeight ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π±Π°ΠΉΡΠΎΠ² (ΡΡΡΠΎΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ biWidth * 3 + n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠ΅ 3 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ ΠΊΡΠ°ΡΠ΅Π½ 4, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ n. ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ 2.3.
2.4 ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
Β· Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ (ΠΈΠΌΡ Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ),
Β· ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π±Π΅Π»ΠΎΠ³ΠΎ, Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ),
Β· ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΡΠ°Π·ΠΌΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΆΠ΅ΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ),
Β· ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΡΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ°),
Β· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² (ΡΠΎΡΠΊΠ°, Π»ΠΈΠ½ΠΈΡ, ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ, ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ. ΠΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ). ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΈΡ. 2.4.1
ΡΠΈΡ 2.4.1
Β· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ (Π½Π° ΡΠΈΡ. 2.4.2Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π° Π½Π° ΡΠΈΡ. 2.4.2Π± Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠΊΠΎΡΡΡΡ).
ΡΠΈΡ. 2.4.2Π° ΡΠΈΡ 2.4.2Π±
Β· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ (Π½Π° ΡΠΈΡ. 2.4.3Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π° Π½Π° ΡΠΈΡ. 2.4.3Π± Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡΡ).
ΡΠΈΡ. 2.4.3Π° ΡΠΈΡ. 2.4.3Π±
Β· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΠ°Π±Π° (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ). ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² n ΡΠ°Π·, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² ΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ n ΡΠ°Π· ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ n ΡΠ°Π·. ΠΡΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² n ΡΠ°Π· ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°Π³ΠΎΠΌ n, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ nxn ΡΡΠΈΡΠ°Π΅ΠΌ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠΈΡ. 2.4.4.
Π ΠΈΡ. 2.4.4
Β· Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅ Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ²Π΅ΡΠ° Π²ΡΠΎΡΠΎΠ³ΠΎ (Π½Π° ΡΠΈΡ. 2.4.5Π° ΠΈ ΡΠΈΡ. 2.4.5Π± ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° Π½Π° ΡΠΈΡ. 2.4.5 Π ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ).
ΡΠΈΡ. 2.4.5Π° ΡΠΈΡ. 2.4.5Π±ΡΠΈΡ.2.4.5Π²
Β· ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΠ΅ΠΉ Π»ΠΈΠ½Π·ΠΎΠΉ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠ΅ΠΊΡ. ΠΠ° ΡΠΈΡ. 2.4.6 ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΡΠΈΡ. 2.4.6
Β· ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ, Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ,
Β· ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΠΎΠ΄ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π΄Π΅ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΡΡΠ΅Π΄Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡ 8 ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΌΠΌΠ° ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²Π΅ΡΠ° Π΅Π³ΠΎ ΠΈ Π²ΡΠ΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ (ΡΠΌ. ΡΠΈΡ. 2.4.7 ΡΠΎΡΠ΅Π΄ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Ρ 1, Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ 2, ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ 3), Π·Π°ΡΠ΅ΠΌ ΡΡΠΈ ΡΡΠΌΠΌΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅Π΄Π΅ΠΉ + 1. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²Π΅ΡΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΡΠ΅ΠΊΡ ΡΠ°Π·ΠΌΡΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΡΠΈΡ. 2.4.7
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΈΡ. 2.4.8(Π° — ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ, Π± — ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ)
ΡΠΈΡ. 2.4.8Π°ΡΠΈΡ.2.4.8Π±
Β· Π·Π°Π»ΠΈΠ²ΠΊΠ°. ΠΠ°Π»ΠΈΠ²ΠΊΠ° — ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ, «ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ» Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ (Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ) Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΎΡΠ΅ΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° Ρ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΠΎΡΠ΅ΠΊ, ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ (Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ).
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΈΡ. 2.4.8(Π° — ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ, Π± — ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ) ΡΠΈΡ. 2.4.8Π° ΡΠΈΡ. 2.4.8Π± ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π΄Π°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΡΡ ΡΠΎΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ «ΡΠΎΡΠ΅Π΄Π΅ΠΉ» (ΡΠΎΡΠΊΠΈ ΡΠ²Π΅ΡΡ Ρ, ΡΠ½ΠΈΠ·Ρ, ΡΠ»Π΅Π²Π°, ΡΠΏΡΠ°Π²Π°), Π΅ΡΠ»ΠΈ «ΡΠΎΡΠ΅Π΄» ΠΈΠΌΠ΅Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ, ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΅Π³ΠΎ «ΡΠΎΡΠ΅Π΄Π΅ΠΉ» ΠΈ Ρ. Π΄.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ «ΡΠΎΡΠ΅Π΄Π΅ΠΉ», ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ.
2.5 ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
2.5.1 Π‘ΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΡΠ΅ΡΠ΅Π΄Ρ — ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Ρ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½ΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ «ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΡΡΠ» — ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΡΠ΅Π»» (FIFO, First In — First Out). ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π²ΡΠ±ΠΎΡΠΊΠ° — ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π½Π°ΡΠ°Π»Π° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° «Π·Π°Π»ΠΈΠ²ΠΊΠ°», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ (ΡΠΌ. ΡΠΈΡ. 2.5.1).
Π ΠΈΡ. 2.5.1
ΠΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡΡ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ beg ΠΈ end ΡΠΈΠΏΠ° node (ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ) Ρ ΡΠ°Π½ΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ sz Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠ»Π°ΡΡΠ° node:
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ x, y — ΡΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° «Π·Π°Π»ΠΈΠ²ΠΊΠ°». node * next, prev — ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
2.5.2 ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ.
Π‘ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
Β· ΠΡΡΠ°Π²ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°:
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ (Push (x, y)):
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ x, y
ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ:
ΠΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΡΡΠ°, ΡΠΎ beg ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π°Π΄ΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΠ½Π°ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄ end Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
end ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΡΡ ΠΎΠ΄
Β· ΠΠ·ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ:
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°:
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΈΠ·ΡΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ (Pop (x, y)):
ΠΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΡΡΠ°, ΡΠΎ Π²ΡΡ ΠΎΠ΄ ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π°) Π£Π΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ:
ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ΄ΠΈΠ½, ΡΠΎ ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΈ ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ beg ΠΈ end
ΠΠ½Π°ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ beg Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΡΡ ΠΎΠ΄
Β· ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
3. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΠΊΠ»Π°ΡΡΠ° BMP. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
3.1 ΠΠ»Π°ΡΡ BMP
3.1.1 ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° BMP
Β· ΠΠΠΠΠ ΠΠΠΠ«Π₯ Π’ΠΠΠΠ ΠΠΠΠΠ«Π₯ ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΡΠ΅ Π²Π²ΠΎΠ΄ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΏΠΎΠ²:
typedef short WORD;
typedef unsigned DWORD;
typedef long LONG;
typedef unsigned char BYTE;
Β· ΠΠΠΠΠ«Π Π Π€ΠΠΠΠ
WORD bfType; // ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°, ΡΠΈΠΌΠ²ΠΎΠ»Ρ «BM»
DWORD bfSize; // ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ
WORD bfReserved1;
WORD bfReserved2; // Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ½Ρ //ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΡΠ»ΠΈ
DWORD bfOffBits; // ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ ΠΎΡ //Π½Π°ΡΠ°Π»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π΄ΠΎ Π±ΠΈΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π²Π΅Π½ 54
Β· ΠΠΠΠΠ«Π Π ΠΠΠΠΠ ΠΠΠΠΠΠ
DWORD biSize; // ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΎ //ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΡΠ°Π²Π΅Π½ 40
LONG biWidth; // ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ
LONG biHeight; // Π²ΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ
WORD biPlanes; // ΡΠΈΡΠ»ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ, ΡΠ°Π²Π½ΠΎ 1
WORD biBitCount; // ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ 24 ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ°Π²Π½ΠΎ 24 Ρ.ΠΊ. ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡ Π±Π°ΠΉΡΠΎΠ² (RGB ΡΠΎΡΠΌΠ°Ρ).
DWORD biCompression; // ΡΠΈΠΏ ΡΠΆΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°Π½ΠΎ BI_RGB //= 0, ΡΠΎ ΠΏΠ°Π»ΠΈΡΡΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
DWORD biSizeImage; // 0 ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΎΠ³ΠΎ //ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΡΠΈ 24 ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΌ ΡΠ°Π²Π½ΠΎ 0.
LONG biXPelsPerMet; // ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, //ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ
LONG biYPelsPerMet; // ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, //ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ
DWORD biClrUsed; // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ²Π΅ΡΠΎΠ²
DWORD biClrImportant;// ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ «Π²Π°ΠΆΠ½ΡΡ » ΡΠ²Π΅ΡΠΎΠ²
Β· ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― Π ΠΠΠΠ‘ΠΠΠ―Π₯
BYTE **MBMP; // ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
3.1.2 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° BMP
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ²Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°Ρ RGB:
void Col_To_RGB (int, int*, int*, int*);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ²Π΅Ρ, Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ):
0 — ΡΠ΅ΡΠ½ΡΠΉ
1 — Π±Π΅Π»ΡΠΉ
2 — ΡΠΈΠ½ΠΈΠΉ
3 — Π·Π΅Π»ΡΠ½ΡΠΉ
4 — ΠΊΡΠ°ΡΠ½ΡΠΉ
5 — ΠΏΡΡΠΏΡΡΠ½ΡΠΉ
6 — ΠΆΠ΅Π»ΡΡΠΉ
7 — ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉ, ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB (ΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°).
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
int Load (char FileNames[]);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠ° ΡΡΠΎ ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΎΡΡ ΠΈ 0 Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΎΡΡ, ΡΡΠ°ΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°:
ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ: ΡΠΈΠΏΠ΅, ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΈ Ρ. Π΄. Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΡΠ»ΠΈ ΡΠΈΠΏ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 24-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BMP, ΡΠΎ Π²ΡΡ ΠΎΠ΄ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π·Π°ΠΏΡΡΠΊ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°) ΠΠ°ΠΏΠΈΡΡ Π½ΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΡΠΎΠΊΠ°Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΡΠ°ΡΠ½ΡΠΌ 4)
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ , ΠΏΡΠΈΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ½ΠΈΠ·Ρ Π²Π²Π΅ΡΡ .
ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»:
void Save (char FileNames[]);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠ° ΡΡΠΎ ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π½.
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΡΠΊΡΡΡΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΡ Π² Π½Π΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°ΠΉΠ»Π΅, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΠ°ΠΌΠΈΡ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π±Π°ΠΉΡΠ°Ρ :
unsigned FileSize ();
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π±Π°ΠΉΡΠ°Ρ .
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
void Dimensions (int *W, int *H);
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎ ΡΠΈΡΠΈΠ½Π° (W) ΠΈ Π²ΡΡΠΎΡΠ° (H) ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ .
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π°:
int PutPixel (int x, int y, int color);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ x, y ΠΈ ΡΠ²Π΅Ρ color Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΡΠΌ. ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ void Col_To_RGB).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 0.
ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΡΠ½Π°ΡΠ°Π»Π° ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°Ρ RGB ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Col_To_RGB, Π·Π°ΡΠ΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΠΎΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΠ½ΠΈΠ·Ρ-Π²Π²Π΅ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ²Π΅ΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ BGR.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π° (RGB):
int PutPixelRGB (int x, int y, int red, int green, int blue);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ x, y ΠΈ ΡΠ²Π΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB (ΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° ΠΎΡ 0 Π΄ΠΎ 255 ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΡΡΠΊΠΎΡΡΡ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ²Π΅ΡΠ° — ΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 0.
ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΡΡΠ½ΠΊΡΠΈΠΈ PutPixel, ΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ²Π΅ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ:
int GetPixel (int x, int y, int *red, int *green, int *blue);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ x, y. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ²Π΅Ρ ΡΠΎΡΠΌΠ°ΡΠ΅ RGB.
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ red, green, blue ΠΏΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡ 0.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ:
int DrawLine (int x1, int y1, int x2, int y2, int color);
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΡΠ°Π»Π° x1, y1 ΠΈ ΠΊΠΎΠ½ΡΠ° x2, y2 Π»ΠΈΠ½ΠΈΠΈ, ΡΠ²Π΅Ρ color Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΡΠΌ. ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ void Col_To_RGB).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π»ΠΈΠ½ΠΈΡ Π½Π°ΡΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡΡ 0.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΡΠ΅Π·Π΅Π½Ρ Π΅ΠΌΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°:
int DrawQuadrangle (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int color);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° x1, y1, x2, y2, x3, y3, x4, y4 ΠΈ ΡΠ²Π΅Ρ color Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΡΠΌ. ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ void Col_To_RGB).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡΡ 0.
ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΡΡΡΡΡ ΡΠ΅ΡΡΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°:
int DrawTriangle (int x1, int y1, int x2, int y2, int x3, int y3, int color);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° x1, y1, x2, y2, x3, y3 ΠΈ ΡΠ²Π΅Ρ color Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΡΠΌ. ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ void Col_To_RGB).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡΡ 0.
ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΡΡΡΡΡ ΡΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ:
int DrawCircle (int x0, int y0, int radius, int color);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅Π½ΡΡΠ° ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ x0, y0, ΡΠ°Π΄ΠΈΡΡ ΠΈ ΡΠ²Π΅Ρ color Π² Π²ΠΈΠ΄Π΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΡΠΌ. ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ void Col_To_RGB).
ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅Π½ΡΡΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, ΠΈΠ½Π°ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡΡ 0.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΡΠ΅Π·Π΅Π½Ρ Π΅ΠΌΠ° Π΄Π»Ρ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
void Bright (int x);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ x ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΠΈ ΠΎΡ -255 Π΄ΠΎ 255. ΠΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ΅ ΡΡΠΊΠΎΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ.
ΠΡΠΎΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ²Π΅ΡΠ° Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΡΡΡ (ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ (ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅) ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ x.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
void Contrast (int e);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ e ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΡ -100 Π΄ΠΎ 100. ΠΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ.
ΠΡΠΎΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠΊΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Y, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ²Π΅ΡΠ° Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ .
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°:
void QuadrangleRGB (int x1, int y1, int x2, int y2, int rr, int gg, int bb);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ x1, y1 ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ x2, y2 ΡΠ³Π»ΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΈ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²Π΅ΡΠ° ΡΠ°Π²Π½Π° -1, ΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠ½Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅:
void Imposition (BMP &T, int x, int y, int r, int g, int b);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ: ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ &T, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°Π»ΠΎΠΆΠΈΡΡ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π° x, y Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ Π² Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²Π΅ΡΠ° ΡΠ°Π²Π½Ρ -1 -1 -1, ΡΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΡΠ²Π΅ΡΠ° Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π°, Π΅ΡΠ»ΠΈ -2 -2 -2, ΡΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
void Resolution ();
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ΅Π΄Π½Π΅Π½ΠΈΡ Π³ΡΡΠΏΠΏ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ 3×3.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π² ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅:
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΡΠΌΠΌΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²Π΅ΡΠ° Π΅Π³ΠΎ ΠΈ 8 Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΌΠΌ Π½Π° 9
ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΡΡ ΠΎΠ΄ Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
void Zoom (int k);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ k ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±Π°, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² k ΡΠ°Π·, ΠΈΠ½Π°ΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π² k ΡΠ°Π·. ΠΡΠ»ΠΈ k=0 Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π² ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°Π»ΠΈΠ²ΠΊΠΈ:
void FloodFill (int x, int y, int rz, int gz, int bz);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠΈ x, y ΠΈ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ rz, gz, bz ΡΠ²Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB, ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΠ±Π»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡΠΊΡ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ x, y ΠΈ ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠ²Π΅Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° «Π·Π°Π»ΠΈΠ²ΠΊΠΈ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ «ΡΠΎΡΠ΅Π΄Π΅ΠΉ»:
ΠΠ°Π»ΠΈΠ²ΠΊΠ° (ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ, ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ):
ΠΡΠΈΡΠ²ΠΎΠΈΡΡ Q ΠΏΡΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΡΠ»ΠΈ ΡΠ²Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° — Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ, Π²ΡΡ ΠΎΠ΄.
ΠΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ½Π΅Ρ Q.
ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Q Π½Π΅ ΠΏΡΡΡΠ°:
ΠΡΠΈΡΠ²ΠΎΠΈΡΡ n ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Q
ΠΡΠ»ΠΈ ΡΠ²Π΅Ρ n — Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ.
ΠΠ·ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Q
ΠΡΠ»ΠΈ ΡΠ²Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊ Π·Π°ΠΏΠ°Π΄Ρ ΠΎΡ n — Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ½Π΅Ρ Q
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ ΠΡΡ ΠΎΠ΄.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΠ΅ΠΉ Π»ΠΈΠ½Π·ΠΎΠΉ:
void Lens (int x, int y, int r, int k);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅Π½ΡΡΠ° Π»ΠΈΠ½Π·Ρ x, y, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅Ρ ΡΠ°Π΄ΠΈΡΡΠ° r ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ k.
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° Ρ ΡΠ΅Π½ΡΡΠΎΠΌ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ x, y ΠΈ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ r, ΡΡΡΠ΅ΠΊΡΠΎΠΌ Π»ΠΈΠ½Π·Ρ. ΠΡΠΎΡΠ΅ΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄Π²ΡΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
for (i = -ro; i <= ro; i++)// ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ ΠΊΡΡΠ³Π°
{
int ogr = sqrt ((float)(ro*ro — i*i));
for (int j = -ogr; j <= ogr; j++)
{
yy = -k*sin (3.14*i/(2*ro));// ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ y
xx = -k*sin (3.14*j/(2*abs (ogr)));// ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ x
// Π΅ΡΠ»ΠΈ ΡΠΎΡΠΊΠ° Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ Π½Π΅ Π²ΡΡΠ»Π° Π·Π° Π³ΡΠ°Π²Π½ΠΈΡΡ ΠΊΡΡΠ³Π°, ΡΠΈΡΡΠ΅ΠΌ Π΅Ρ
if (abs (i + yy) < ro && abs (j + xx) < abs (ogr))
{
// ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΡΠΎΡΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ
TMP.GetPixel (x + j, y + i, r, g, b);
// Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
PutPixelRGB (x + j + xx, y + i + yy, *r, *g, *b);
}}}
3.2 ΠΠ»Π°ΡΡ QUEUE ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ NODE
ΠΠ»Π°ΡΡ QUEUE ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π΄Π²ΡΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ
3.2.1 ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
int x, y — ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° node, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ
node *next — ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° node, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
node *prev — ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° node, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
int sz — ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° QUEUE, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
node *beg, *end — ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° QUEUE, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
3.2.2 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° QUEUE
Π€ΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ:
int Size ();
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ:
void Push (int x1, int y1);
Π ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π°) x1, y1, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΈΠ·ΡΠΌΠ°ΡΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ:
void Pop (int *x1, int *y1)
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π°) x1, y1, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΠ°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π°ΡΡΠ°ΡΠ½ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° ΡΠΎΡΠ½Π΅Π΅: ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠΌ).
Π’Π΅ΠΎΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π²ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ Ρ.ΠΊ. ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅, ΠΎΠΏΡΡΡ ΠΆΠ΅, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΡΠΎΡΠ΅ΠΊ.
4.1 ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π’Π°Π±Π»ΠΈΡΠ° 4.1
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ | |
Π ΠΈΡ. 4.1
4.2 Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π’Π°Π±Π»ΠΈΡΠ° 4.2
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ | |
Π ΠΈΡ. 4.2
Π’Π°Π±Π»ΠΈΡΠ° 4.3
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ | |
Π ΠΈΡ. 4.3
4.3 Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π’Π°Π±Π»ΠΈΡΠ° 4.4
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ | |
Π ΠΈΡ. 4.4
Π’Π°Π±Π»ΠΈΡΠ° 4.5
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ | |
Π ΠΈΡ. 4.5
4.4 ΠΡΠ²ΠΎΠ΄Ρ ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ², Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ³Π»Π°ΡΡΡΡΡΡ Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
Β· ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΡΠ΅ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (Π² Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ) Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ (ΡΠΌ. ΡΠΈΡ. 4.3, 4.5).
Β· Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΡΠ΅ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ°ΡΡΠ΅Ρ «Π³ΡΡΠ·Π½ΠΎΠ΅» Π²ΡΠ΅ΠΌΡ (Π²ΡΠ΅ΠΌΡ Ρ ΡΡΠ΅ΡΠΎΠΌ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π±ΠΎΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅) ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΠΌ. ΡΠΈΡ. 4.1, 4.2, 4.4).
Β· ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ.ΠΊ. ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΡΠΎΡΠ΅ΠΊ.
Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠ°
5. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
Π€Π°ΠΉΠ» main. cpp
#include «BMP.h» ;
#include «conio.h»
#include
#include
void main ()
{
setlocale (LC_ALL, «rus»);
// ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ
BMP *IMG1, *IMG2;
long H, W;
char name[200];
int *r = new int, *g = new int, *b = new int, *w = new int, *h = new int;
int rz, gz, bz;
int x1, y1, x2, y2, x3, y3, x4, y4;
int val;
printf («1 — Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅n»);
printf («2 — ΠΡΠΊΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅n ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:»);
scanf («%d», &val);
if (val == 1)
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ :»);
scanf («%d %d», &H, &W);
IMG1 = new BMP (H, W);
}
if (val == 2)
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ :»);
scanf («%s», name);
IMG1 = new BMP (name);
}
system («cls»); // ΠΎΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π°
if (val == 1 || val == 2)
{
do
{
printf («1 — ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅n»);
printf («2 — Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅n»);
printf («3 — ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡn»);
printf («4 — ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡn»);
printf («————————————————————-n»);
printf («5 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΊΡn»);
printf («6 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡn»);
printf («7 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡn»);
printf («8 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊn»);
printf («9 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊn»);
printf («10 — ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊn»);
printf («11 — ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Ρ ΡΠΎΡΠΊΠΈn»);
printf («————————————————————-n»);
printf («12 — ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈn»);
printf («13 — ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈn»);
printf («14 — ΠΠ°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡn»);
printf («15 — Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈn»);
printf («16 — ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅n»);
printf («17 — ΠΠ°Π»ΠΈΠ²ΠΊΠ°n»);
printf («18 — ΠΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΡΠ΅ΠΊΡ Π»ΠΈΠ½Π·Ρn»);
printf («————————————————————-n»);
printf («0 — ΠΡΡ ΠΎΠ΄n»);
printf («n==========================================n»);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ :»);
scanf («%d», &val);
switch (val)
{
case 1:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ :»);
scanf («%s», name);
if (IMG1->Load (name))printf («ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ»);
else printf («ΠΠ΅Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ!»);
getch ();
};break;
case 2:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ :»);
scanf («%s», name);
IMG1->Save (name);
};break;
case 3:
{
printf («Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ %d Π», IMG1->FileSize ());
getch ();
}break;
case 4:
{
IMG1->Dimensions (w, h);
printf («Π Π°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ %d x %d», *w, *h);
getch ();
};break;
case 5:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ: «);
scanf («%d %d», w, h);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ R G B:»);
scanf («%d %d %d», r, g, b);
IMG1->PutPixelRGB (*w, *h, *r, *g, *b);
};break;
case 6:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΡΠ°Π»Π°: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠΎΠ½ΡΠ°: «);
scanf («%d %d», &x2, &y2);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ: n0 — ΡΠ΅ΡΠ½ΡΠΉn1 — Π±Π΅Π»ΡΠΉn2 — ΡΠΈΠ½ΠΈΠΉn3 — Π·Π΅Π»ΡΠ½ΡΠΉn4 — ΠΊΡΠ°ΡΠ½ΡΠΉn5 — ΠΏΡΡΠΏΡΡΠ½ΡΠΉn6 — ΠΆΠ΅Π»ΡΡΠΉn7 — ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉn»);
scanf («%d», r);
IMG1->DrawLine (x1, y1, x2, y2, *r);
};break;
case 7:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅Π½ΡΡΠ° ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ°Π΄ΠΈΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ: «);
scanf («%d», r);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ: n0 — ΡΠ΅ΡΠ½ΡΠΉn1 — Π±Π΅Π»ΡΠΉn2 — ΡΠΈΠ½ΠΈΠΉn3 — Π·Π΅Π»ΡΠ½ΡΠΉn4 — ΠΊΡΠ°ΡΠ½ΡΠΉn5 — ΠΏΡΡΠΏΡΡΠ½ΡΠΉn6 — ΠΆΠ΅Π»ΡΡΠΉn7 — ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉn»);
scanf («%d», b);
IMG1->DrawCircle (x1, y1, *r, *b);
};break;
case 8:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x2, &y2);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠ΅ΡΠΈΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x3, &y3);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x4, &y4);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ: n0 — ΡΠ΅ΡΠ½ΡΠΉn1 — Π±Π΅Π»ΡΠΉn2 — ΡΠΈΠ½ΠΈΠΉn3 — Π·Π΅Π»ΡΠ½ΡΠΉn4 — ΠΊΡΠ°ΡΠ½ΡΠΉn5 — ΠΏΡΡΠΏΡΡΠ½ΡΠΉn6 — ΠΆΠ΅Π»ΡΡΠΉn7 — ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉn»);
scanf («%d», r);
IMG1->DrawQuadrangle (x1, y1, x2, y2, x3, y3, x4, y4, *r);
};break;
case 9:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x2, &y2);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠ΅ΡΠΈΠΉ Π²Π΅ΡΡΠΈΠ½Ρ: «);
scanf («%d %d», &x3, &y3);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ: n0 — ΡΠ΅ΡΠ½ΡΠΉn1 — Π±Π΅Π»ΡΠΉn2 — ΡΠΈΠ½ΠΈΠΉn3 — Π·Π΅Π»ΡΠ½ΡΠΉn4 — ΠΊΡΠ°ΡΠ½ΡΠΉn5 — ΠΏΡΡΠΏΡΡΠ½ΡΠΉn6 — ΠΆΠ΅Π»ΡΡΠΉn7 — ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉn»);
scanf («%d», r);
IMG1->DrawTriangle (x1, y1, x2, y2, x3, y3, *r);
};break;
case 10:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π°: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π°: «);
scanf («%d %d», &x2, &y2);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ R G B:(Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ -1,»);
printf («ΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²Π΅ΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ)»);
scanf («%d %d %d», r, g, b);
IMG1->QuadrangleRGB (x1, y1, x2, y2, *r, *g, *b);
};break;
case 11:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ: «);
scanf («%d %d», &x1, &y1);
if (IMG1->GetPixel (x1, y1, r, g, b))printf («Π¦Π²Π΅Ρ ΡΠΎΡΠΊΠΈ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ (%d, %d) Π² ΡΠΎΡΠΌΠ°ΡΠ΅ R G B: %d %d %d», x1, y1, *r, *g, *b);
else printf («Π’ΠΎΡΠΊΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½Π΅Ρ!»);
getch ();
};break;
case 12:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ΅ΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΠΈ (-255 < k < 255):»);
scanf («%d», &x1);
IMG1->Bright (x1);
};break;
case 13:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ΅ΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ (-100 < k < 100):»);
scanf («%d», &x1);
IMG1->Contrast (x1);
};break;
case 14:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ :»);
scanf («%s», name);
IMG2 = new BMP (100, 100);
if (IMG2->Load (name))
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π° Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ «);
printf («ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ:»);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ, Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ R G B:»);
printf («ΠΡΠ»ΠΈ Π²Π²Π΅ΡΡΠΈ -1 -1 -1, ΡΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΡΠ²Π΅ΡΠ° Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π°,»);
printf («Π΅ΡΠ»ΠΈ -2 -2 -2, ΡΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ :»);
scanf («%d %d %d», r, g, b);
IMG1->Imposition (*IMG2, x1, y1, *r, *g, *b);
}
else printf («ΠΠ΅Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ!»);
delete IMG2;
getch ();
};break;
case 15:
{
printf («Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΡΡΠ΅ΠΌn»);
printf («ΡΡΡΠ΅Π΄Π½Π΅Π½ΠΈΡ Π³ΡΡΠΏΠΏ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ 3×3 Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°!»);
IMG1->Resolution ();
getch ();
};break;
case 16:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ΅ΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΏΡΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ k < 0,»);
printf («ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΡΠ°Π±Π° k > 0 (k — ΡΠ΅Π»ΠΎΠ΅): «);
scanf («%d», &x1);
IMG1->Zoom (x1);
};break;
case 17:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅ΠΉn»);
printf («ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΊΡΠ°ΡΠΈΡΡ :»);
scanf («%d %d», w, h);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ R G B:»);
scanf («%d %d %d», &rz, &gz, &bz);
IMG1->FloodFill (*w, *h, rz, gz, bz);
};break;
case 18:
{
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅Π½ΡΡΠ° Π»ΠΈΠ½Π·Ρ: «);
scanf («%d %d», &x1, &y1);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ°Π΄ΠΈΡΡ Π»ΠΈΠ½Π·Ρ: «);
scanf («%d», r);
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ:»);
scanf («%d», b);
IMG1->Lens (x1, y1, *r, *b);
};break;
}
system («cls»); // ΠΎΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π°
}
while (val ≠ 0);
}
delete IMG1;}
Π€Π°ΠΉΠ» BMP. h:
#include
using namespace std;
typedef short WORD;
typedef unsigned DWORD;
typedef long LONG;
typedef unsigned char BYTE;
class BMP
{
// ΠΠΠΠΠ«Π Π Π€ΠΠΠΠ
WORD bfType; // ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°, ΡΠΈΠΌΠ²ΠΎΠ»Ρ «BM»
DWORD bfSize; // ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ
WORD bfReserved1;
WORD bfReserved2;
// Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΡΠ»ΠΈ
DWORD bfOffBits; // ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ ΠΎΡ //Π½Π°ΡΠ°Π»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π΄ΠΎ Π±ΠΈΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
// ΠΠΠΠΠ«Π Π ΠΠΠΠΠ ΠΠΠΠΠΠ
DWORD biSize; // ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
LONG biWidth; // ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ
LONG biHeight; // Π²ΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ
WORD biPlanes; // ΡΠΈΡΠ»ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ, ΡΠ°Π²Π½ΠΎ 1
WORD biBitCount;
// ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ.
DWORD biCompression;
// ΡΠΈΠΏ ΡΠΆΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°Π½ΠΎ BI_RGB, ΡΠΎ ΠΏΠ°Π»ΠΈΡΡΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
DWORD biSizeImage;
// 0 ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ
LONG biXPelsPerMet;
// ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ
LONG biYPelsPerMet;
// ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΈΠΊΡΠ΅Π»/ΠΌ
DWORD biClrUsed; // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ²Π΅ΡΠΎΠ²
DWORD biClrImportant;// ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ «Π²Π°ΠΆΠ½ΡΡ » ΡΠ²Π΅ΡΠΎΠ²
// ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― Π ΠΠΠΠ‘ΠΠΠ―Π₯
BYTE **MBMP;
// ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
void Col_To_RGB (int col, int* red, int* green, int* blue); // ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ²Π΅ΡΠ°
public:
BMP (const BMP &M);
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
BMP (char FileNames[]);
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΡΡΠΎΠΊΠΎΠΉ (ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΉΠ»Π°)
BMP (long H, long W); // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
~BMP (); // Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ
BMP* Copy ();
// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅)
int Load (char FileNames[]);
// ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
void Save (char FileNames[]);
// Π·Π°ΠΏΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π°
unsigned FileSize (); // ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
void Dimensions (int *W, int *H);// ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
int PutPixel (int x, int y, int color);
// Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ
int GetPixel (int x, int y, int *red, int *green, int *blue); // Π²Π·ΡΡΡ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ
int PutPixelRGB (int x, int y, int red, int green, int blue); // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π·Π°Π΄Π°Π²Π°Ρ ΡΠ²Π΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB
int DrawLine (int x1, int y1, int x2, int y2, int color); // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ
int DrawQuadrangle (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int color);
// Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
int DrawTriangle (int x1, int y1, int x2, int y2, int x3, int y3, int color); // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
int DrawCircle (int x0, int y0, int radius, int color); // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ
void Bright (int x);
// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ -255 < x < 255
void Contrast (int e);
// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ -100 < e < 100
void QuadrangleRGB (int x1, int y1, int x2, int y2, int rr, int gg, int bb); // ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
void Imposition (BMP &T, int x, int y, int r, int g, int b); // Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ ΡΠ²Π΅ΡΠ° rgb
void Resolution (); // ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ
void Zoom (int k); // ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
void FloodFill (int x, int y, int rz, int gz, int bz); // Π·Π°Π»ΠΈΠ²ΠΊΠ°
void Lens (int x, int y, int r, int k); // ΡΡΡΠ΅ΠΊΡ Π»ΠΈΠ½Π·Ρ
};
Π€Π°ΠΉΠ» BMP. cpp:
#include «BMP.h»
#include «math.h»
#include «queue.h»
BMP:BMP (const BMP &M) // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
{
bfType = M. bfType;
bfSize = M. bfSize;
bfReserved1 = M. bfReserved1;
bfReserved2 = M. bfReserved2;
bfOffBits = M. bfOffBits;
biSize = M. biSize;
biWidth = M. biWidth;
biHeight = M. biHeight;
biPlanes = M. biPlanes;
biBitCount = M. biBitCount;
biCompression = M. biCompression;
biSizeImage = M. biSizeImage;
biXPelsPerMet = M. biXPelsPerMet;
biYPelsPerMet = M. biYPelsPerMet;
biClrUsed = M. biClrUsed;
biClrImportant = M. biClrImportant;
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
MBMP = new BYTE *[biHeight];
for (int i = 0; i < biHeight; i++)
{
MBMP[i] = new BYTE[sz_line];
for (int j = 0; j < sz_line; j++)MBMP[i][j] = M. MBMP[i][j];
}
}
BMP:BMP (char FileNames[])
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΊ ΡΡΡΠΎΠΊΠΎΠΉ (ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°)
{
bfType = 19 778;
bfSize = 0;
bfReserved1 = 0;
bfReserved2 = 0;
bfOffBits = 54;
biSize = 40;
biWidth = 0;
biHeight = 0;
biPlanes = 1;
biBitCount = 24;
biCompression = 0;
biSizeImage = 0;
biXPelsPerMet = 0;
biYPelsPerMet = 0;
biClrUsed = 0;
biClrImportant = 0;
MBMP = NULL;
Load (FileNames);
}
BMP:BMP (long H, long W)
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΡΡΠΎΠ³ΠΎ (Π±Π΅Π»ΠΎΠ³ΠΎ) ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
{
bfType = 19 778;
bfSize = H * W * 3 + 54;
bfReserved1 = 0;
bfReserved2 = 0;
bfOffBits = 54;
biSize = 40;
biWidth = W;
biHeight = H;
biPlanes = 1;
biBitCount = 24;
biCompression = 0;
biSizeImage = H * W * 3;
biXPelsPerMet = 0;
biYPelsPerMet = 0;
biClrUsed = 0;
biClrImportant = 0;
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
MBMP = new BYTE *[biHeight];
for (int i = 0; i < biHeight; i++)
{
MBMP[i] = new BYTE[sz_line];
for (int j = 0; j < sz_line; j++)MBMP[i][j] = 255;
}
}
BMP:~BMP ()
// Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ
{
for (int i = 0; i < biHeight; i++)
delete MBMP[i];
delete MBMP;
MBMP = NULL;
}
BMP* BMP: Copy ()// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅)
{
return new BMP (*this);
}
int BMP: Load (char FileNames[])
// Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
{
// ΠΠ ΠΠΠΠΠΠ«Π ΠΠΠΠΠ«Π Π Π€ΠΠΠΠ
WORD bfTypet;
DWORD bfSizet;
WORD bfReserved1t;
WORD bfReserved2t;
DWORD bfOffBitst;
// ΠΠ ΠΠΠΠΠΠ«Π ΠΠΠΠΠ«Π Π ΠΠΠΠΠ ΠΠΠΠΠΠ
DWORD biSizet;
LONG biWidtht;
LONG biHeightt;
WORD biPlanest;
WORD biBitCountt;
DWORD biCompressiont;
DWORD biSizeImaget;
LONG biXPelsPerMett;
LONG biYPelsPerMett;
DWORD biClrUsedt;
DWORD biClrImportantt;
fstream F;
F.open (FileNames, ios: in | ios: binary);
// ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ
// Π§Π’ΠΠΠΠ ΠΠΠΠΠ«Π₯ Π Π€ΠΠΠΠ
F.read ((char*)&bfTypet, sizeof (WORD));
F.read ((char*)&bfSizet, sizeof (DWORD));
F.read ((char*)&bfReserved1t, sizeof (WORD));
F.read ((char*)&bfReserved2t, sizeof (WORD));
F.read ((char*)&bfOffBitst, sizeof (DWORD));
// Π§Π’ΠΠΠΠ ΠΠΠΠΠΠ«Π₯ Π ΠΠΠΠΠ ΠΠΠΠΠΠ
F.read ((char*)&biSizet, sizeof (DWORD));
F.read ((char*)&biWidtht, sizeof (LONG));
F.read ((char*)&biHeightt, sizeof (LONG));
F.read ((char*)&biPlanest, sizeof (WORD));
F.read ((char*)&biBitCountt, sizeof (WORD));
F.read ((char*)&biCompressiont, sizeof (DWORD));
F.read ((char*)&biSizeImaget, sizeof (DWORD));
F.read ((char*)&biXPelsPerMett, sizeof (LONG));
F.read ((char*)&biYPelsPerMett, sizeof (LONG));
F.read ((char*)&biClrUsedt, sizeof (DWORD));
F.read ((char*)&biClrImportantt, sizeof (DWORD));
if (biBitCountt == 24)
{
this->~BMP (); // ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
// ΠΠΠΠΠ‘Π¬ ΠΠΠΠ«Π₯ ΠΠΠΠ§ΠΠΠΠ
bfType = bfTypet;
bfSize = bfSizet;
bfReserved1 = bfReserved1t;
bfReserved2 = bfReserved2t;
bfOffBits = bfOffBitst;
biSize = biSizet;
biWidth = biWidtht;
biHeight = biHeightt;
biPlanes = biPlanest;
biBitCount = biBitCountt;
biCompression = biCompressiont;
biSizeImage = biSizeImaget;
biXPelsPerMet = biXPelsPerMett;
biYPelsPerMet = biYPelsPerMett;
biClrUsed = biClrUsedt;
biClrImportant = biClrImportantt;
// ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
MBMP = new BYTE *[biHeight];
for (int i = 0; i < biHeight; i++)
{
MBMP[i] = new BYTE[sz_line];
F.read ((char*)MBMP[i], sz_line);
}
F.close ();
return 1;
}
F.close ();
return 0;
}
void BMP: Save (char FileNames[])
// ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»
{
fstream F;
F.open (FileNames, ios: out | ios: binary);
// ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
// ΠΠΠΠΠ‘Π¬ ΠΠΠΠΠ«Π₯ Π Π€ΠΠΠΠ
F.write ((char*)&bfType, sizeof (WORD));
F.write ((char*)&bfSize, sizeof (DWORD));
F.write ((char*)&bfReserved1,sizeof (WORD));
F.write ((char*)&bfReserved2,sizeof (WORD));
F.write ((char*)&bfOffBits, sizeof (DWORD));
// ΠΠΠΠΠ‘Π¬ ΠΠΠΠΠΠ«Π₯ Π ΠΠΠΠΠ ΠΠΠΠΠΠ
F.write ((char*)&biSize, sizeof (DWORD));
F.write ((char*)&biWidth, sizeof (LONG));
F.write ((char*)&biHeight, sizeof (LONG));
F.write ((char*)&biPlanes, sizeof (WORD));
F.write ((char*)&biBitCount, sizeof (WORD));
F.write ((char*)&biCompression, sizeof (DWORD));
F.write ((char*)&biSizeImage, sizeof (DWORD));
F.write ((char*)&biXPelsPerMet, sizeof (LONG));
F.write ((char*)&biYPelsPerMet, sizeof (LONG));
F.write ((char*)&biClrUsed, sizeof (DWORD));
F.write ((char*)&biClrImportant, sizeof (DWORD));
// Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
for (int i = 0; i < biHeight; i++)
{
F.write ((char*)MBMP[i], sz_line);
}
F.close ();
}
unsigned BMP: FileSize ()// ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
{
return bfSize;
}
void BMP: Dimensions (int *W, int *H)// ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
{
*W = biWidth;
*H = biHeight;
}
void BMP: Col_To_RGB (int col, int* red, int* green, int* blue) // ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ²Π΅ΡΠ°
{
switch (col)
{
case 0: {*red = 0; *green = 0; *blue = 0;}break;
// ΡΠ΅ΡΠ½ΡΠΉ
case 1: {*red = 255; *green = 255; *blue = 255;}break;
// Π±Π΅Π»ΡΠΉ
case 2: {*red = 0; *green = 0; *blue = 255;}break; // ΡΠΈΠ½ΠΈΠΉ
case 3: {*red = 0; *green = 255; *blue = 0;}break; // Π·Π΅Π»Π΅Π½ΡΠΉ
case 4: {*red = 255; *green = 0; *blue = 0;}break; // ΠΊΡΠ°ΡΠ½ΡΠΉ
case 5: {*red = 255; *green = 0; *blue = 255;}break; // ΠΏΡΡΠΏΡΡΠ½ΡΠΉ
case 6: {*red = 255; *green = 255; *blue = 0;}break; // ΠΆΠ΅Π»ΡΡΠΉ
case 7: {*red = 0; *green = 255; *blue = 255;}break; // ΡΠΈΠ°Π½ΠΎΠ²ΡΠΉ
default :{*red = 255; *green = 255; *blue = 255;};
}
}
int BMP: PutPixel (int x, int y, int color) // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ
{
if (x < biWidth && y < biHeight)
{
int *r = new int, *g = new int, *b = new int;
Col_To_RGB (color, r, g, b);
MBMP[biHeight — y — 1][x*3] = *b;
MBMP[biHeight — y — 1][x*3 + 1] = *g;
MBMP[biHeight — y — 1][x*3 + 2] = *r;
return 1;
}
return 0;
}
int BMP: GetPixel (int x, int y, int *red, int *green, int *blue) // Π²Π·ΡΡΡ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ
{
if (x <= biWidth && y <= biHeight && x >= 0 && y >= 0)
{
*blue = MBMP[biHeight — y — 1][x*3];
*green = MBMP[biHeight — y — 1][x*3 + 1];
*red = MBMP[biHeight — y — 1][x*3 + 2];
return 1;
}
return 0;
}
int BMP: PutPixelRGB (int x, int y, int red, int green, int blue) // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π·Π°Π΄Π°Π²Π°Ρ ΡΠ²Π΅Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB
{
if (x < biWidth && y < biHeight && x >= 0 && y >= 0)
{
MBMP[biHeight — y — 1][x*3] = blue;
MBMP[biHeight — y — 1][x*3 + 1] = green;
MBMP[biHeight — y — 1][x*3 + 2] = red;
return 1;
}
return 0;
}
int BMP: DrawLine (int x1, int y1, int x2, int y2, int color) // Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ
{
if (x1 <= biWidth && x1 >= 0 && y1 <= biHeight && y1 >= 0 && x2 <= biWidth && x2 >= 0 && y2 <= biHeight && y2 >= 0)
{
int deltaX = abs (x2 — x1);
int deltaY = abs (y2 — y1);
int signX = x1 < x2? 1: -1;
int signY = y1 < y2? 1: -1;
int error = deltaX — deltaY;
while (1)
{
PutPixel (x1, y1, color);
if (x1 == x2 && y1 == y2)
return 1;
int error2 = error * 2;
if (error2 > -deltaY)
{
error -= deltaY;
x1 += signX;
}
if (error2 < deltaX)
{
error += deltaX;
y1 += signY;
}
}
}
return 0;
}
int BMP: DrawQuadrangle (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int color) // ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
{
if (x1<=biWidth && x1>=0 && y1<=biHeight && y1>=0 && x2<=biWidth && x2>=0 && y2<=biHeight && y2>=0 && x3<=biWidth && x3>=0 && y3<=biHeight && y3>=0 && x4<=biWidth && x4>=0 && y4<=biHeight && y4>=0)
{
DrawLine (x1, y1, x2, y2, color);
DrawLine (x2, y2, x3, y3, color);
DrawLine (x3, y3, x4, y4, color);
DrawLine (x4, y4, x1, y1, color);
return 1;
}
return 0;
}
int BMP: DrawTriangle (int x1, int y1, int x2, int y2, int x3, int y3, int color) // ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
{
if (x1<=biWidth && x1>=0 && y1<=biHeight && y1>=0 && x2<=biWidth && x2>=0 && y2<=biHeight && y2>=0 && x3<=biWidth && x3>=0 && y3<=biHeight && y3>=0)
{
DrawLine (x1, y1, x2, y2, color);
DrawLine (x2, y2, x3, y3, color);
DrawLine (x3, y3, x1, y1, color);
return 1;
}
return 0;
}
int BMP: DrawCircle (int x0, int y0, int radius, int color) // ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ
{
if (x0 < biWidth && y0 < biHeight)
{
int x = 0;
int y = radius;
int delta = 2 — 2 * radius;
int error = 0;
while (y >= 0)
{
PutPixel (x0 + x, y0 + y, color);
PutPixel (x0 + x, y0 — y, color);
PutPixel (x0 — x, y0 + y, color);
PutPixel (x0 — x, y0 — y, color);
error = 2 * (delta + y) — 1;
if (delta < 0 && error <= 0)
{
++x;
delta += 2 * x + 1;
continue;
}
error = 2 * (delta — x) — 1;
if (delta > 0 && error > 0)
{
—y;
delta += 1 — 2 * y;
continue;
}
++x;
delta += 2 * (x — y);
—y;
}
return 1;
}
return 0;
}
void BMP: Bright (int x) // ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ
{
for (int i = 0; i < biHeight; i++)
for (int j = 0; j < biWidth*3; j++)
{
if (MBMP[i][j] - x > 255) MBMP[i][j] = 255;
else if (MBMP[i][j] - x < 0) MBMP[i][j] = 0;
else MBMP[i][j] = MBMP[i][j] - x;
}
}
void BMP: Contrast (int e) // ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ
{
float Y0 = 0; // ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠΊΠΎΡΡΡ
float k = 1 + e*0.01; // ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ
// Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠΊΠΎΡΡΡ
for (int i = 0; i < biHeight; i++)
for (int j = 0; j < biWidth*3; j = j + 3)
Y0 += MBMP[i][j] * 0.114 + MBMP[i][j + 1] * 0.587 + MBMP[i][j + 2] * 0.299;
Y0 = Y0/(biWidth*biHeight);
// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
for (int i = 0; i < biHeight; i++)
for (int j = 0; j < biWidth*3; j++)
if (Y0 + k * (MBMP[i][j] - Y0) > 255) MBMP[i][j] = 255;
else if (Y0 + k * (MBMP[i][j] - Y0) < 0) MBMP[i][j] = 0;
else MBMP[i][j] = Y0 + floor (k * (MBMP[i][j] - Y0));
}
void BMP: QuadrangleRGB (int x1, int y1, int x2, int y2, int rr, int gg, int bb) // ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
{
if (x1>biWidth || x1<0 || y1>biHeight || y1<0 || x2>biWidth || x2<0 || y2>biHeight || y2<0)return;
if (rr > 255) rr = 255;
if (gg > 255) gg = 255;
if (bb > 255) bb = 255;
int *r = new int, *g = new int, *b = new int;
for (int i = y1; i < y2; i++)
for (int j = x1; j < x2; j++)
{
GetPixel (j, i, r, g, b);
if (rr > -1)*r = rr;
if (gg > -1)*g = gg;
if (bb > -1)*b = bb;
PutPixelRGB (j, i, *r, *g, *b);
}
}
void BMP: Imposition (BMP &T, int x, int y, int r, int g, int b) // Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ ΡΠ²Π΅ΡΠ° rgb
{
int *rr = new int, *gg = new int, *bb = new int, *w = new int, *h = new int;
T.Dimensions (w, h);
// ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°
if (r == -1 && g == -1 && b == -1)
// ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΡΠ²Π΅ΡΠ° Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π°
{
T.GetPixel (0, 0, rr, gg, bb);
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ²Π΅Ρ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π°
r = *rr; g = *gg; b = *bb;
}
for (int i = y; i < *h + y && i < biHeight; i++)
// ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
for (int j = x; j < *w + x && j < biWidth; j++)
}
void BMP: Resolution ()
// ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ
{
// Π²Π΅ΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ°
int maska[3][3] = {{1,1,1},{1,1,1},{1,1,1}};
int *r = new int, *g = new int, *b = new int;
int sr, sg, sb;
BMP TMP (*this);// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
for (int i = 0; i < TMP. biHeight; i++)
// ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
for (int j = 0; j < TMP. biWidth; j++)
{
sr = 0; sg = 0; sb = 0;
// ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
for (int k1 = -1; k1 <= 1; k1++)
// ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΡΡ
for (int k2 = -1; k2 <= 1; k2++)
if (j+k2 < biWidth && i+k1 < biHeight && i+k1 >= 0 && j+k2 >= 0)
{
TMP.GetPixel (j + k2, i + k1, r, g, b);
*r = *r * maska[1 + k1][1 + k2];
*g = *g * maska[1 + k1][1 + k2];
*b = *b * maska[1 + k1][1 + k2];
sr+= *r; sg+= *g; sb+= *b;
}
// Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²Π΅ΡΠ°
sr = sr/9;
sg = sg/9;
sb = sb/9;
if (sr > 255) sr = 255;
if (sg > 255) sg = 255;
if (sb > 255) sb = 255;
PutPixelRGB (j, i, sr, sg, sb);
// ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
}
}
void BMP: Zoom (int k) // ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
{
int *r = new int, *g = new int, *b = new int, end;
if (k > 1)
{
BMP TMP (*this);// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
this->~BMP ();
// Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
biWidth = biWidth * k;
biHeight = biHeight * k;
bfSize = biHeight * biWidth * 3 + 54;
biSizeImage = biHeight * biWidth * 3;
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
MBMP = new BYTE *[biHeight];
for (int i = 0; i < biHeight; i++)
{
MBMP[i] = new BYTE[sz_line];
for (int j = 0; j < sz_line; j++)MBMP[i][j] = 255;
}
// ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
for (int i = 0; i < TMP. biHeight; i++)
for (int j = 0; j < TMP. biWidth; j++)
{
TMP.GetPixel (j, i, r, g, b);
for (int k1 = 0; k1 < k; k1++)
for (int k2 = 0; k2 < k; k2++)
PutPixelRGB (j*k + k1, i*k + k2, *r, *g, *b);
}
return;
}
if (k < 0)
{
BMP TMP (*this);// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
this->~BMP ();
// Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
biWidth = biWidth / -k;
biHeight = biHeight / -k;
bfSize = biHeight * biWidth * 3 + 54;
biSizeImage = biHeight * biWidth * 3;
int sz_line = biWidth * 3;
while (sz_line % 4 ≠ 0) sz_line++;
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ Π‘ΠΠΠΠ (ΠΊΡΠ°ΡΠ½ΠΎ 4)
MBMP = new BYTE *[biHeight];
for (int i = 0; i < biHeight; i++)
{
MBMP[i] = new BYTE[sz_line];
for (int j = 0; j < sz_line; j++)MBMP[i][j] = 255;
}
// ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
int sr, sg, sb;
for (int i = 0; i < biHeight; i++)
for (int j = 0; j < biWidth; j++)
{
if (-k % 2 == 0) end = -k/2;
else end = -k/2 + 1;
sr = 0; sg = 0; sb = 0;
// ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
for (int k1 = k/2; k1 < end; k1++)
for (int k2 = k/2; k2 < end; k2++)
if (-j*k+k2 < TMP. biWidth && -i*k+k1 < TMP. biHeight && -i*k+k1 >= 0 && -j*k+k2 >= 0)
{
TMP.GetPixel (-j*k + k2, -i*k + k1, r, g, b);
sr+= *r; sg+= *g; sb+= *b;
}
sr = sr/(k*k);
sg = sg/(k*k);
sb = sb/(k*k);
if (sr > 255) sr = 255;
if (sg > 255) sg = 255;
if (sb > 255) sb = 255;
PutPixelRGB (j, i, sr, sg, sb);
// ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ
}
return;
}
}
void BMP: FloodFill (int x, int y, int rz, int gz, int bz) // Π·Π°Π»ΠΈΠ²ΠΊΠ°
{
QUEUE Q;
int *rn = new int, *gn = new int, *bn = new int;
GetPixel (x, y, rn, gn, bn);// Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ²Π΅Ρ
int *xx = new int, *yy = new int, *r = new int, *g = new int, *b = new int;
Q.Push (x, y); // ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ
PutPixelRGB (x, y, rz, gz, bz);
while (Q.Size () ≠ 0)
{
Q.Pop (xx, yy);// ΠΈΠ·ΡΡΡΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
// ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ»Π΅Π²Π°
if (GetPixel (*xx — 1, *yy, r, g, b))// Π΅ΡΠ»ΠΈ ΡΡΠΎΡ //ΡΠ²Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
if (*r == *rn && *g == *gn && *b == *bn)
{
PutPixelRGB (*xx — 1, *yy, rz, gz, bz);
Q.Push (*xx — 1, *yy);
}
// ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠΏΡΠ°Π²Π°
if (GetPixel (*xx + 1, *yy, r, g, b))// Π΅ΡΠ»ΠΈ ΡΡΠΎΡ //ΡΠ²Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
if (*r == *rn && *g == *gn && *b == *bn)
{
PutPixelRGB (*xx + 1, *yy, rz, gz, bz);
Q.Push (*xx + 1, *yy);
}
// ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ²Π΅ΡΡ Ρ
if (GetPixel (*xx, *yy — 1, r, g, b))// Π΅ΡΠ»ΠΈ ΡΡΠΎΡ //ΡΠ²Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
if (*r == *rn && *g == *gn && *b == *bn)
{
PutPixelRGB (*xx, *yy — 1, rz, gz, bz);
Q.Push (*xx, *yy — 1);
}
// ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ½ΠΈΠ·Ρ
if (GetPixel (*xx, *yy + 1, r, g, b))// Π΅ΡΠ»ΠΈ ΡΡΠΎΡ //ΡΠ²Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²Π΅Ρ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
if (*r == *rn && *g == *gn && *b == *bn)
{
PutPixelRGB (*xx, *yy + 1, rz, gz, bz);
Q.Push (*xx, *yy + 1);
}
}
}
void BMP: Lens (int x, int y, int ro, int k) // ΡΡΡΠ΅ΠΊΡ Π»ΠΈΠ½Π·Ρ
{
BMP TMP (*this); // Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
int *r = new int, *g = new int, *b = new int;
int xx, yy, i;
for (i = -ro; i <= ro; i++)// ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ ΠΊΡΡΠ³Π°