Autorské riešenie
Cieľom tejto úlohy je nakresliť omaľovánku kvetu z kosoštvorcových lupienkov, ktorý má vonkajšiu a vnútornú vrstvu lupienkov. Na nasledujúcom obrázku sú jednotlivé vrstvy lupienkov farebne rozlíšené. Žltou sú vymaľované lupienky z vnútornej a oranžovou lupienky z vonkajšej vrstvy.
Keďže tento útvar je na kreslenie pomerne zložitý, je vhodné rozdeliť ho na menšie časti alebo nájsť nejakú časť, ktorá sa pravidelne opakuje. V tomto prípade sa opakujú kosoštvorcové lupienky.
Vieme, že kosoštvorec má všetky štyri strany rovnako dlhé. Ako môžeme z obrázku vyčítať, kosoštvorec z vonkajšej vrstvy má až dve strany spoločné s kosoštvorcom z vnútornej vrstvy, preto majú oba kosoštvorce rovnaké dĺžky strán. Vnútorné a vonkajšie kosoštvorce sa ale v uhloch líšia. Vieme, že v kosoštvorci je súčet vnútorných uhlov 360° a uhly oproti sebe sú rovnako veľké. Na nasledujúcom obrázku sú rovnakou farbou vyznačené rovnako veľké uhly.
Pozrime sa najprv na veľkosti uhla v kosoštvorci vo vnútornej vrstve. Veľkosť zeleného uhla vieme ľahko dopočítať, pretože poznáme počet lupienkov vo vnútornej vrstve a ony dokopy dávajú 360°. Teda zelený uhol má veľkosť 360/počet lupienkov. Ako môžeme vidieť na predlženej časti kosoštvorca (znázornej sivou čiarou), zelený a oranžový uhol dávaju dokopy 180°. To sa však dá vypočítať aj z vlastnosti veľkostí uhlov v kosoštvorci. Aké sú však veľkosti uhlov v kosoštvorci vo vonkajšej vrstve? Vidíme, že pomocná sivá čiara rozdeľuje jeden z uhlov na polovicu. Teda tento uhol má dvojnásobnú veľkosť zeleného uhla. Veľkosť druhého uhla potom ľahko dopočítame. Keďže používame na kreslenie kosoštvorec, je vhodné vyrobiť si pomocnú procedúru, ktorá nám kosoštvorec nakreslí. Aby sme mohli kresliť hocijaký kosoštvorec, za parametre zvolíme veľkosť úhla a dĺžku strany. ;Imagine logo
viem kosostvorec :uhol :dlzka opakuj 2[ do :dlzka vp :uhol do :dlzka vp 180 - :uhol ] koniec S použitím pomocnej procedúry kosoštvorec už len stačí správne dorátať niektoré súsedné uhly potrebné na otáčanie korytnačky a posúvať ju na miesto, z ktorého môže začať kresliť kosoštvorec z vonkajšej vrstvy. Môžeme si tiež všimnúť, že pri kreslení kosoštvorcov vo vonkajšej vrstve, korytnačka prejde po všetkých čiarách použitých na kosoštvorce vo vnútornej vrstve, teda tento príkaz môžeme vynechať bez zmeny výsledného kvetu. ;Imagine logo
viem kresli_kvet :pocetLupienkov :dlzka urobTu "uhol 360/:pocetLupienkov opakuj :pocetLupienkov [ ; nasledujúci príkaz sa môže vynechať kosostvorec :uhol :dlzka do :dlzka vl :uhol kosostvorec 2*:uhol :dlzka vp :uhol vz :dlzka vp :uhol ] koniec Ďalším zaujímavýcm spôsobom riešenia je rozloženie kvetu na šesťuholníky, ako na nasledujúcom obrázku.
Je potrebné si uvedomiť, že súčet všetkých vnútorných uhlov v šesťuholníku je 720°. Potom stačí už len správne vypočítať všetky vnútorné uhly.
Modrý uhol môžeme označiť napríklad alfa a žltý uhol beta. ;Imagine logo
viem sestuholnik :pocetLupenov :rozmer urobTu "alfa (360 / :pocetLupenov) * 2 urobTu "beta (720 - 2*:alfa)/4 opakuj 2[ do :rozmer vp 180 - :beta do :rozmer vp 180 - :beta do :rozmer vp 180 - :alfa ] koniec
;Imagine logo
viem kresli_kvet :pocetLupenov :rozmer opakuj :pocetLupenov[ sestuholnik :pocetLupenov :rozmer vp 360/:pocetLupenov ] koniec Vaše zaujímavé riešenia a najčastejšie chyby Túto úlohu riešili tri tímy. Dvom sa podarilo úlohu vyriešiť správne. Jeden z nich vykreslil najprv všetky kosoštvorce vo vnútornej vrstve a následne kosoštvorce vo vonkajšej vrstve. Druhý tím kreslil kosoštvorce vonkajšej vrstvy priebežne s kosoštvorcami vnútornej vrstvy. Tretiemu sa podarilo nakresliť len vnútornú vrstvu a pri snahe o vonkajšiu vrstvu sa zamotali v uhloch. Pri týchto typoch úlohe je lepšie použiť najprv pero a papier, uhly prepočítať a až potom písať program. Celkovo hodnotíme úlohu za veľmi dobre zvládnutú. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |