Lomená čiara
Last updated
Last updated
Vytvoríme náhodne sa kresliacu súvislú lomenú čiaru. Lomená čiara pozostáva z krátkych úsečiek, ktoré na seba nadväzujú. V princípe ide o to, ako kresliť náhodné malé čiarky tak, aby ďalšia začínala tam, kde predošlá skončila. A spolu tak vytvoria veľkú lomenú čiaru.
Základ je štandardný skeč so setup
a draw
. Keďže budeme kresliť čiaru, tak si vyrobíme dvojicu súradníc x1
,y1
a x2
,y2
, ktoré budú predstavovať začiatočný bod a koncový bod jedného segmentu:
V každom draw()
chceme vykresliť vykreslíme jednu náhodnú čiaru a v ďalšom draw()
budeme chcieť, aby ďalšia čiara začínala tam, kde skončila predošlá:
Takto vykreslená čiara je naozaj lomená, jednotlivé segmenty na seba nadväzujú, ale problém je, že sú až priveľmi náhodné. Skáču po celej obrazovke a sú tým pádom veľmi dlhé:
Zatiaľ sme vyberali náhodné súradnice najčastejšie z celej obrazovky:
Ak chceme, aby sa koncové súradnice x2
,y2
veľmi nevzdialili od súradníc x1
,y1
, použijeme súradnice x1
,y1
v parametroch príkazu random
takto:
To zabezpečí, súradnica x2
bude vygenerovaná z rozsahu od 30 pixelov menej ako x1
až do 30 pixelov viac ako x2
.
Čiara hneď vyzerá organickejšie:
Pri náhodnom pohybe čiary sa deje to, že čiara môže vyliezť von z obrazovky alebo sa stratí úplne. S tým si poradíme tak, že ak čiara vylezie von vľavo, vráti sa sprava. Ak vylezie von dole, vráti sa zhora a tak podobne.
A urobíme to tak pekne, že keď čiara vylezie von o napríklad 23 pixlov, tak ju na opačnom konci obrazovky vrátime o 23 pixlov dovnútra:
Zatiaľ máme loopovanie na pravom okraji obrazovky. Ak je x2
väčšie ako width
, tak ho zmenšíme o width
. Takže pri šírke obrazovky 400
sa z hodnoty 423
stane 23
. Inými slovami, ak je x2
veľmi veľké, tak ho zmenšíme o width
.
Naopak, na ľavom okraji obrazovky sa nám stáve, že bude x2
príliš malé, menšie ako 0
. Tak tam ho zväčšíme o width
:
Ak má napríklad x2
hodnotu -17
a je tak mimo ľavého okraja obrazovky, tak po pričítaní width
bude jeho hodnota hodnota 17
pixlov vnútri obrazovky, pri jej pravom okraji.
Analogicky si doplňte aj horný okraj (y2 < 0
) a dolný okraj (y2 > height
).
Aby čiara nebola taká fádna, ešte pre dekoráciu doplníme náhodnú zmenu farby vždy, keď čiara vylezie mimo obrazovky. Takže do každého prípadu loopovania doplníme príkaz na nastavenie náhodnej farby čiary:
Tu si môžete stiahnuť finálny skeč:
Vyskúšajte, ako sa bude čiara správať, keď jej y2
súradnicu budeme generovať takto:
Upravte spôsob náhodného generovania x2
,y2
tak, aby vznikali čiary horizontálneho charakteru:
Upravte spôsob náhodného generovania x2
,y2
tak, aby vznikali diagonálne čiary: