perimeter: REAL is
-- Π‘ΡΠΌΠΌΠ° Π΄Π»ΠΈΠ½ ΡΠ΅Π±Π΅Ρ
local
this, previous: POINT
do
from
vertices.start; this := vertices.item
check not vertices.after end -- Π‘Π»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ at_least_three
until
vertices.is_last
loop
previous := this
vertices.forth
this := vertices.item
Result := Result + this.distance (previous)
end
Result := Result + this.distance (vertices.first)
end
Π ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ distance Π±ΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΊΠ»Π°ΡΡΠ΅ POINT. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Result, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0. ΠΠ· ΠΊΠ»Π°ΡΡΠ° LINKED_LIST ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ: first Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ°, start ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΠΊΡΡΡΠΎΡ, Π½Π° ΡΡΠΎΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, forth ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ, item Π²ΡΠ΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ ΠΊΡΡΡΠΎΡΠΎΠΌ, is_last ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, after ΡΠ·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΊΡΡΡΠΎΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ check ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ at_least_three ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°. ΠΠ½ ΡΡΠ°ΡΡΡΠ΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ not after, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ vertices.item ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½. ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ forth ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·, ΡΡΠΎ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠ΅Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° is_last.
ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΈ Ρ Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ: ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ³Π°ΡΡ, ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ Π½ΠΈΡ Π΅ΡΡΡ ΡΡΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ), ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° (ΡΠΈΡΠ»ΠΎ Π²Π΅ΡΡΠΈΠ½ ΡΠ°Π²Π½ΠΎ ΡΠ΅ΡΡΡΠ΅ΠΌ, Π° ΡΠ³Π»Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΠΌΡΠΌΠΈ) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅).
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠΉ ΡΠΌΠ΅ΡΠΈ ΠΎΠ±ΡΠΈΡ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΠΊΠ»Π°ΡΡ RECTANGLE ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° (heir) ΠΊΠ»Π°ΡΡΠ° POLYGON. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° POLYGON, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ (parent) ΠΊΠ»Π°ΡΡΠ° RECTANGLE, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² RECTANGLE ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ (inheritance clause):
class RECTANGLE inherit
POLYGON
feature
... ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ...
end
Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ feature ΠΊΠ»Π°ΡΡΠ°-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ: ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ. Π Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ diagonal, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΡΠΎΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π»ΡΡ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π½ΠΎ Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡ perimeter. ΠΠ»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ: Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΠ΅ΡΡΡΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄Π²ΠΎΠΈΡΡ ΡΡΠΌΠΌΡ Π΄Π»ΠΈΠ½ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½. ΠΠ°ΡΠ»Π΅Π΄Π½ΠΈΠΊ, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΠ² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ redefine:
class RECTANGLE inherit
POLYGON
redefine perimeter end
feature
...
end
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ feature ΠΊΠ»Π°ΡΡΠ° RECTANGLE Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° perimeter, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΡ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° POLYGON. ΠΡΠ»ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ redefine, ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° perimeter ΡΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° RECTANGLE ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ RECTANGLE ΡΠΆΠ΅ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ perimeter, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ POLYGON, Ρ.Π΅. Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠ»Π°ΡΡ RECTANGLE Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
indexing
description: "ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, - ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²"
class RECTANGLE inherit
POLYGON
redefine perimeter end
creation
make
feature -- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
make (center: POINT; s1, s2, angle: REAL) is
-- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π² center, Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½
-- s1 ΠΈ s2 ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ angle.
do ... end
feature -- Access
side1, side2: REAL
-- ΠΠ»ΠΈΠ½Ρ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½
diagonal: REAL
-- ΠΠ»ΠΈΠ½Π° Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ
perimeter: REAL is
-- Π‘ΡΠΌΠΌΠ° Π΄Π»ΠΈΠ½ ΡΡΠΎΡΠΎΠ½
-- (ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ· POLYGON)
do
Result := 2 S (side1 + side2)
end
invariant
four_sides: count = 4
first_side: (vertices.i_th (1)).distance (vertices.i_th (2)) = side1
second_side: (vertices.i_th (2)).distance (vertices.i_th (3)) = side2
third_side: (vertices.i_th (3)).distance (vertices.i_th (4)) = side1
fourth_side: (vertices.i_th (4)).distance (vertices.i_th (1)) = side2
end
Π’Π°ΠΊ ΠΊΠ°ΠΊ RECTANGLE ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° POLYGON, ΡΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ: vertices, rotate, translate, perimeter (Π² ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅) ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅. ΠΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π΅Π½: Π²ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ, Π±ΡΠ΄ΡΡΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ RECTANGLE, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SQUARE, ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° POLYGON.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΡΠΎΠΌΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² "Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ" ΠΈ "ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ" Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ:
Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΡΠΎΠΌΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° C - ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ C ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ C. (Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΡΠΎ Π»ΠΈΠ±ΠΎ C, Π»ΠΈΠ±ΠΎ, ΠΏΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° C).
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° C - ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΠΎΠΊ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΠ°ΠΌΠΎΠ³ΠΎ C.
ΠΡΠ΅Π΄ΠΎΠΊ C - ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ A, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΠΊ C - ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ A, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ.
Π Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Ρ "ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ" ΠΈ "ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡ", Π½ΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π»ΠΈΠ±ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΌ (ΠΏΠ΅ΡΠ΅ΡΠ΅Π΄ΡΠΈΠΌ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°), Π»ΠΈΠ±ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ (Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅).
ΠΡΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡ ΠΠ-ΠΠ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ»Π»ΠΈΠΏΡΠ°ΠΌΠΈ, ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΡ ΡΡΡΠ΅Π»ΠΎΠΊ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠ²ΡΠ·Π΅ΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ "Π±ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ", ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ.
Π ΠΈΡ. 14.1. Π‘Π²ΡΠ·Ρ ΠΏΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ++ (ΡΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΡΠΎ Π² Business Object Notation (B.O.N.)).
Π‘ΡΡΠ΅Π»ΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π²Π΅ΡΡ ΠΎΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ - ΠΎΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ "Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΡ". Π Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΡΡΡΠ΅Π»ΠΎΠΊ. Π₯ΠΎΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΎΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅Π»ΠΎΠΌ Π²ΠΊΡΡΠ°, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π½ΠΎ Π»ΡΡΡΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ΄Π½ΠΎ Π½Π°Π²ΠΎΠ΄ΠΈΡ Π½Π° ΠΌΡΡΠ»Ρ ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ, Π° Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅. Π‘ΡΡΠ΅Π»ΠΊΠ° - ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½Π°Ρ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΎΠ½Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ½ΡΠ°ΠΌΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅:
[x]. ΠΡΡΠΊΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎ.
[x]. Π ΡΠ΅ΠΊΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΠΎ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΠ-ΠΌΠ΅ΡΠΎΠ΄Π°, Π²ΡΡΠ΅ΠΊΠ°ΡΡΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΡΠΊΡΡΡ-ΠΠ°ΠΊΡΡΡ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡ Π½Π΅ "Π·Π½Π°Π΅Ρ" ΡΠΏΠΈΡΠΊΠ° ΡΠ²ΠΎΠΈΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
Π₯ΠΎΡΡ Ρ Π½Π°Ρ Π½Π΅Ρ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ, ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Π²ΡΡΠ΅ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°.
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ°
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ° RECTANGLE, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΠ» Π±Ρ, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΡΠΎΡΠΎΠ½ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠ°Π²Π½ΠΎ ΡΠ΅ΡΡΡΠ΅ΠΌ ΠΈ ΡΡΠΎ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π²Π½Ρ side1, side2, side1 ΠΈ side2.