IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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).

2D grafika

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.

2D grafika

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.

2D grafika

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)).

2D grafika

Po pripočítaní uhla pohľadu sú polárne súradnice prepočítané späť na karteziánske, za využitie funkcií sin a cos.

2D grafika

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.

2D grafika

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.

2D grafika

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.

2D grafika

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
2D grafika

Po vykreslenie jednotlivých trojuholníkov zložíme spodnú polovicu okná, vertikálne ju prevrátime a vykreslíme do hornej polovice okna.

2D grafika

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.

2D grafika

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+0.01.

2D grafika

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 02 * pi. Nakoniec výslednú rýchlosť otáčania obmedzíme do intervalu -0.01+0.01.

2D grafika

To jest všetko. Ak ste neurobili nikde chybu, mali by ste sa dočkať veľmi zaujímavých obrazcov.

2D grafika
2D grafika
2D grafika
2D grafika
2D grafika

 

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ť)

 

Všetky články v sekcii
2D grafika
Článok pre vás napísal Panda38
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programátor C++, WinAPI, ASM.
Aktivity