Kaleidoskop (2. časť)
... dokončenie z minulej lekcie
Teraz k obsahu funkcie vykreslenie prvkov pre jeden pohľad. Na začiatku funkcie sa najskôr vymaže kresliace plocha, čo bude oblasť o rovnakých rozmeroch ako je maska. Kresliace plocha začína na 0 súradnicového systému, teda v ľavom dolnom rohu. Po nastavení indexu prvku na 0 sa volajú príkazy pre kreslenie jednotlivých grafických prvkov s rôznymi vstupnými parametrami, určujúcimi farbu a rozmery prvkov. Pred volaním funkcie pre kreslenie pohľadu musí byť nastavený požadovaný uhol pohľadu (je používaný funkciou prípravných výpočtov).
Funkcia príprava parametrov pre jeden prvok je, dá sa povedať, centrálnym mozgom programu. Prepočítava animované súradnice grafického prvku na absolútnej súradnice na displeji, s korekciou podľa aktuálneho pohľadu. Pracuje s prvkom, na ktorý aktuálne ukazuje index prvku. Po skončení výpočtu posunie ukazovateľ na nasledujúci prvok. Jednotlivé operácie sú rozdelené do skupín. Funkcia prevedie súradnice stredu prvku do polárnych súradníc, otočí súradnice podľa aktuálneho uhla pohľadu a prevedie súradnice späť do kartézského systému. Nakoniec pripraví ešte funkcia sin a cos aktuálneho uhla otočenia. Funkcia používa 2 lokálne premenné (tj. Premenné viditeľné iba vnútri funkcie), uhol prvku a polomer prvku, ktoré sú polárnymi súradnicami prvku.
Stred otáčania pohľadov leží v strede trojuholníka, vo výške 1/3 výšky trojuholníka. Najskôr sa preto prevedú súradnice prvku na stred otáčania sústavy odpočítaním súradnice stredu otáčania.
K prevodu karteziánskych súradníc na polárne sú použité funkcie vzdialenosť bodu (počíta sqrt (x 2 + y 2)) a uhol bodu (počíta ATAN2 (y, x)).
Po pripočítaní uhla pohľadu sú polárne súradnice prepočítané späť na karteziánske, za využitie funkcií sin a cos.
Pri prepočte súradníc späť na súradnice okná sú k súradniciam prvku pripočítané späť súradnice stredu otáčania pohľadu. V prípade, že sa jedná o ľavý alebo pravý trojuholník, je pripočítaná ešte raz 1/3 výšky trojuholníka, pretože tieto trojuholníky sú akoby "hore nohami", preto je stred otáčania v ich hornej tretine.
Nakoniec sú předvypočítány hodnoty sin a cos pre transformácie vrcholov prvku a to zo súčtu uhla otočenia prvku a uhla pohľadu.
Teraz sa vrátime späť do hlavnej slučky programu, do skupiny pre generovanie grafiky. Jej obsah vidíte na nasledujúcom obrázku. Budeme generovať 3 obrázky, tj. 3 trojuholníky. Pre prvé trojuholník najskôr nastavíme požadovaný uhol pohľadu na 0. Zavolaním funkcie vykreslenie prvkov pre jeden pohľad zabezpečíme vykreslenie prvkov. Vykreslenú grafiku zložíme príkazom pre úschovu výrezu z okna a potom výrez zamaskujeme pripravenú maskou, čím ju orežeme na trojuholník. Podobne postupujeme aj pre ostatné 2 trojuholníky s tým rozdielom, že zadávame uhly + 60 ° a
- 60 °, používame druhú masku a obrázky ešte
horizontálne prevrátime.
Skupina vykreslenie kaleidoskopu bude zabezpečovať vykreslenie pripravených obrázkov na plochu okna. Postupne vykresľujú jednotlivé obrázky. Súradnice Y zostáva pri všetkých súborov 0, teda ju nezadávame. Pre jednotlivé prípady použijeme obrázky a súradnice X podľa nasledujúcej tabuľky. Pre prehľadnosť označíme šírku plochy ako wp, dĺžku strany trojuholníka ako wt a vertikálne prevrátenie obrázka ako VF.
trojuholník | obrázok | súradnice X |
---|---|---|
D | dole | wp / 2 - wt / 2 |
L | vľavo | wp / 2 - wt |
R | vpravo | wp / 2 |
LL | vpravo VF | wp / 2 - wt / 2 - wt |
RR | vľavo VF | wp / 2 + wt / 2 |
LLL | dole VF | wp / 2 - wt - wt |
RRR | dole VF | wp / 2 + wt |
Po vykreslenie jednotlivých trojuholníkov zložíme spodnú polovicu okná, vertikálne ju prevrátime a vykreslíme do hornej polovice okna.
Pokiaľ chcete vyskúšať medziprodukt programu, máte teraz príležitosť - mali by sa zobraziť náhodné obrazce. Zatiaľ nehybné, ale pri každom spustení programu iné.
Dostávame sa k poslednej skupine hlavnej slučky, posun prvkov. Tu budú zabezpečené animácie kaleidoskopu. Jadrom obsluhy je slučka, s ktorej pomocou prejdeme všetky prvky zoznamu prvkov.
Pri výpočte novej súradnice X v pripočítame k súradnicu rýchlosť posunu X. Výslednú súradnicu obmedzíme a to zľava hodnotou -0.5 (povolíme mierny presah), sprava hodnotou dĺžka strany trojuholníka. Náhodne zmeníme rýchlosť posunu X, výslednú rýchlosť obmedzíme na rozsah -0.01 až +0.01.
Podobne obslúžime súradnicu prvku Y. Obmedzenie zdola bude hodnotou -0.5, zhora hodnotou výška plochy / 2. Rýchlosť posunu Y obslúžime podobne ako rýchlosť posunu X.
Nakoniec obslúžime otočenie prvku. K otočenie prvku prirátame rýchlosť otáčania. Pripočítaním konštanty 2 * pi posunieme hodnotu do kladných uhlov, aby sme následnou operáciou modulo získali výsledný uhol v rozsahu 0 až 2 * pi. Nakoniec výslednú rýchlosť otáčania obmedzíme do intervalu -0.01 až +0.01.
To jest všetko. Ak ste neurobili nikde chybu, mali by ste sa dočkať veľmi zaujímavých obrazcov.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 182x (134.16 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Petr Lite (sú obsiahnuté v EXE súbore, ktorý možno v programe priamo otvoriť)