Autor Wątek: Obroty..  (Przeczytany 1286 razy)

Offline TDM

  • Użytkownik

# Październik 23, 2006, 16:08:32
Cze! Mam do was pytanie odnosnie obrotow 3d. Mam strukture:

struct
{
       float x;
       float y;
       float z;
} quad[4];
Rysuje sobie kwadrat i obracam go o 45 jednostek wokul osi Y
Kodu z przypisaniem wspolzednych do zmmiennych nie bede wklejal.
         
         glRotatef(45.0f, 0.0f, 1.0f, 0.0f);
         glBegin(GL_QUADS);
           glVertex3f(quad[0].x, quad[0].y, quad[0].z);
           glVertex3f(quad[1].x, quad[1].y, quad[1].z);
           glVertex3f(quad[2].x, quad[2].y, quad[2].z);
           glVertex3f(quad[3].x, quad[3].y, quad[3].z);
         glEnd();

No i tu moj problem, jak obracam kwadrat funkcja "glRotatef" to nie zmieniaja mi sie wartosci zmmiennych(quad[0].x, quad[0].y, quad[0].z).
I teraz mam takie pytanie jak moge wykonac obrot tak zeby zmienily mi sie te wartosci zmmiennych.
« Ostatnia zmiana: Październik 23, 2006, 16:54:42 wysłana przez TDM »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline mINA87

  • Użytkownik

# Październik 23, 2006, 16:25:33
Heh obroty w przestrzeni 3d w sumie :]
Żeby Cię od razu nie zbluzgać to sposób najbardziej uniwersalny (pojęcia które Ci wymieniłem wystarczą do rozwiązania problemu) stwórz macierz transformacji (macierz obrotu) i przemnóż wierzchołki przez tą macierz. Macierz masz już w sumie w maszynie stanów OpenGL'a, możesz ją sobie pobrać, co do mnożenia wektora przez macierz to poszukaj sobie. I szukaj przede wszytskim zanim zapytasz :]

agent_J

  • Gość
# Październik 23, 2006, 16:25:40
glRotate obraca tylko początek układu współrzędnego w OpenGL. Musisz poszukać sobie wzorów na obroty w 3D.

Przykładowo:
http://ics.p.lodz.pl/~adamwoj/ARTYKULY/Przeksztalcenia3D_3.pdf