Hlavne menu We are sorry, but magazine AMMO is suspended. Here is just read-only access to the articles archive. Some features are removed because they were outdated, pointless in read-only (voting and pools), or it was missused by spammers (comments) etc. Now the webpages aren't maintained so when something will get broken most probably it won't be fixed at all. If you liked our magazine then please make donation with paypal so we can pay for traffic on this server.

TOP Výuka
01 Maľované krížovky 103 bodov
02 OpenGL, lákadlo 38 bodov
03 MySQL (+ použitie Visual C++ a PHP) 28 bodov
04 OpenGL, časť 1 21 bodov
05 Huffmanove kódovanie 19 bodov
06 Pascal, časť 1 18 bodov
07 Ako tlačiť s HP 16 bodov
08 Základy HTML časť 2 16 bodov
09 Základy HTML časť 3 13 bodov
10 Hry pre nenáročných + zdrojáky 10 bodov
11 OpenGL, úvod 8 bodov
12 Faktúrka v4.0 + zdrojáky v MS Visual C++ 6.0 7 bodov
13 OpenGL – Intermezzo 1 7 bodov
14 OpenGL povinná literatúra 6 bodov
15 Základy HTML časť 1 6 bodov
Najnovsie clanky
Kvalitné služby podľa skúseností iných - TopSlužby.sk
LOTR - Dve veže - Parodia - Scénka 2. časť
Neverwinter nights
Children Of Bodom-Hatebreeder
Kult Duny - 6. časť (Bonus)
Kult Duny - 5. časť (Filmy, Hry)
Dobré ráno. (morc certa, hora incerta...)
Kult Duny - 4. časť (Knihy 2/2)
Stretnutie Spoločenstva Tolkiena
GRAVE DIGGER – Knights Of The Cross
Kult Duny - 3. časť (Knihy 1/2)
Kult Duny - 2. časť (Pojmy)
Kult Duny - 1. časť (Úvod)
LOTR - Dve veže - Parodia - Scénka
Jackass
Vsetky clanky
Airsoft - Specnaz [4 clanky]
Básne [6 clankov]
Fantázia [4 clanky]
Filmy a DVD [51 clankov]
Hardware [10 clankov]
Hry [170 clankov]
Hry, návody [6 clankov]
Hudba [8 clankov]
Internet [7 clankov]
Knihy [6 clankov]
O AMME [4 clanky]
Pandemonium [10 clankov]
Poviedky [14 clankov]
Programy [18 clankov]
Rôzne [8 clankov]
Technické [3 clanky]
Úvahy [8 clankov]
Výuka [50 clankov]
Ako tlačiť s HP
Algoritmy v grafoch
Fake2
Faktúrka
Faktúrka v4.0 + zdrojáky v MS Visual C++ 6.0
Fract
HLSaver
Hry pre nenáročných + zdrojáky
Huffmanove kódovanie
IPicture2 & aggresiveoptimize.h
Maľované krížovky
MySQL (+ použitie Visual C++ a PHP)
OpenGL - GLWnd
OpenGL AMMO Saver
OpenGL povinná literatúra
OpenGL – Intermezzo 1
OpenGL, časť 10
OpenGL, časť 11
OpenGL, časť 12
OpenGL, časť 13
OpenGL, časť 14
OpenGL, časť 15
OpenGL, časť 16
OpenGL, časť 17
OpenGL, časť 18
OpenGL, časť 8
OpenGL, časť 9
Opengl – Cloth Simulation
RenameR
SkinMagic
WinSocket Communication via VC++
Údajové štruktúry
viac...
Zábava [5 clankov]
Zdravie [15 clankov]
Celkovy pocet clankov: 407
OpenGL, časť 4 
Výuka | Dna 14.3.2002 | Johny | 1 znamka, priemer 1.00 | 4611 videni | 881 WAP videni

V poslednej časti sme si ukázali ako použiť farby a ako ich pridať na trojuholník a na štvorec. Minulá časť nebola veľmi dlhá, a táto bude len o čosi dlhšia. V dnešnej časti si ukážeme a povieme, čosi o rotáciách objektov okolo ich osi.

Použijeme zdroják z minulej časti a na pár miest pridáme nejaké doplnky.
Hneď na začiatku si pridáme 2 premenné, ktoré nám budú slúžiť na rotácie pre trojuholník a štvorec. 2 nové premenné sú rtri, pre trojuholník a rquad pre štvorec. Tieto 2 premenné budú vyjadrovať uhol pod akým sa točí trojuholník. My zvolíme float, takže môžeme používať aj čísla ako 1.1, 1.7,…

Túto časť napíšeme pod niekde na začiatok programu, niekam pod include, proste tak, aby tieto premenné boli globálne premenné.

GLfloat rtri; // uhol pre trojuholník
GLfloat rquad; // uhol pre štvorec

Teraz zmeníme funkciu DrawGLScene.

int DrawGLScene(GLvoid) // tu kreslíme
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// vyčistíme obrazovku a depth buffer
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f); // doľava a dozadu

Ďalší riadok je nový. Je to funkcia glRotatef(uhol,Xvector,Yvector,Zvector). Používa sa na rotáciu objektov okolo osi. Je to dosť dôležité a budete ju veľmi často používať. Uhol je uhol o ktorý chceme otočiť náš objekt. Xvector, Yvector a Zvector určujú vektory okolo ktorých sa otočíme. Ak použijete napríklad 1,0,0 tak sa otočíte okolo osi x. Teda môžete sa otočiť naraz o uhol aj podľa x aj podľa y. Je dôležité vedieť, že všetky uhly sú v stupňoch. Teda kruh ma 360 stupňov.

glRotatef(rtri,0.0f,1.0f,0.0f); // otoč o uhol okolo y

V ďalšej časti sa nič nezmenilo, opäť vykreslíme náš trojuholník. Trojuholník bude otočený podľa osi y o ten uhol. Predstavte si 3 špajle. Všetky tri sú na seba kolmé, teda tvoria akýsi základ 3D priestoru. V mieste, kde sa všetky 3 pretínajú je počiatok tohoto systému. Teda si myslite, že tam je 0,0,0. A ďalej si predstavte iba jeden vektor, ktorý je na 0,0,0 a smeruje smerom „dozadu“. Ten vektor je kamera, ktorá je tam „zabetónovaná“ a nemôžme ňou hýbať. Môžeme ale ovládať naše 3 spojené špajle. Môžeme sa nimi posunúť ktorým-koľvek smerom a otočiť ich podľa toho, ako len chceme. Osi však budú vždy tie isté. A objekt , ktorý akurát kreslíme vždy berie za základ 0,0,0 na našich 3 špajlách. Ďalej sa skúste zamyslieť, čo by sa stalo, keby som sa posunul a potom otočil o uhol. Alebo naopak otočil a potom posunul. Ale radšej to napíšem. Ak sa najprv posuniem niekam a otočím, tak náš objekt bude na tom mieste, kde sme ho posunuli a bude nejako zrotovaný. Ak to urobím opačne. Teda najprv sa otočím a potom posuniem. Tak to posunutie bude ovplyvnené otočením, lebo osi sa pootočia.

glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();

Tak a teraz sa umiestnime opäť do začiatku 0,0,0. A ideme kresliť štvorec.

glLoadIdentity();
glTranslatef(1.5f,0.0f,-6.0f);
glRotatef(rquad,1.0f,0.0f,0.0f);

Tu sa nič nezmenilo. Len nakreslíme štvorec.

glColor3f(0.5f,0.5f,1.0f);
glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();


Ďalšie 2 riadky sú nové. Procedúra Draw…. je volaná vždy pri kreslení každého frejmu, a my chceme, aby sa objekt točil, takže uhly o ktorý sa točí trojuholník a štvorec budeme zväčšovať alebo zmenšovať.

rtri+=0.2f; // rtri=rtri+0.2
rquad-=0.15f; // rquad=rquad-0.15
return TRUE;
}

Hodnoty sú malé, lebo táto funkcia sa volá dosť často. Veď si tam skúste dať vyššie a hneď uvidíte, že sa to točí ako vrtuľa na helikoptére.

Ako vždy zdroják je na
http://www.softsklad.host.sk/opengl/lesson04.zip


Najnovsie clanky od tohto redaktora
Podobne clanky