Grafika Komputerowa
Laboratorium: ćwiczenie 3
Temat: Przekształcenia geometryczne
Funkcje OpenGl
Działania na stosie macierzowym:
skopiowanie macierzy na wierzchołku stosu
void glPushMatrix(void);
zdjęcie macierzy z wierzchołka stosu
void glPopMatrix(void);
załadowanie macierzy jednostkowej na wierzchołek stosu
void glLoadIdentity(void);
wybór aktywnego stosu macierzowego (tryb = GL_MODELVIEW - stos macierzy modelujących, tryb = GL_PROJECTION - stos macierzy rzutujących)
void glMatrixMode(GLenum tryb);
Przekształcenia modelujące:
translacja o wektor (x, y, z)
void glTranslatef(GLfloat x, GLfloat y, GLfloat z);
rotacja o kąt alfa (kąt w stopniach, wartość dodatnia oznacza kierunek przeciwny do ruchu wskazówek zegara) wokół osi równoległej do wektora
(x, y, z)
void glRotatef(GLfloat alfa, GLfloat x, GLfloat y, GLfloat z);
skalowanie wzdłuż osi x, y, z (sx, sy, sz - współczynniki skalowania)
void glScalefGL(float sx, GLfloat sy, GLfloat sz);
Funkcje rysujące bryły przestrzenne (biblioteka GLUT):
szkielet sfery (radius - promień sfery, slices - liczba południków, stacks - liczba równoleżników)
void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
sfera (radius - promień sfery, slices - liczba południków, stacks - liczba równoleżników)
void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
szkielet stożka (base - promień podstawy, height - wysokość, slices - liczba „południków”, stacks - liczba „równoleżników”)
void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
stożek (base - promień podstawy, height - wysokość, slices - liczba „południków”, stacks - liczba „równoleżników”)
void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
szkielet sześcianu (size - długość boku)
void glutWireCube(GLdouble size);
sześcian (size - długość bobku)
void glutSolidCube(GLdouble size);
szkielet torusa (innerRadius - promień wewnętrzny, outerRadius - promień zewnętrzny, sides - liczba ścian, rings - liczba pierścieni)
void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides,
GLint rings);
torus (innerRadius - promień wewnętrzny, outerRadius - promień zewnętrzny, sides - liczba ścian, rings - liczba pierścieni)
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides,
GLint rings);
szkielet dwunastościanu
void glutWireDodecahedron(void);
dwunastościan
void glutWireDodecahedron(void);
szkielet osmiościanu
void glutWireOctahedron (void);
ośmiościan
void glutWireOctahedron (void);
szkielet czworościanu
void glutWireTetrahedron (void);
czworościan
void glutWireTetrahedron (void);
szkielet dwudziestościanu
void glutWireIcosahedron (void);
dwudziestościan
void glutSolidIcosahedron (void);
szkielet dzbanka (size - rozmiar)
glutWireTeapot(GLdouble size);
dzbanek (size - rozmiar)
void glutSolidTeapot(GLdouble size);
Funkcje rysujące kwadryki (biblioteka GLU):
alokacja pamięci dla nowej kwadryki (utworzenie kwadryki). Funkcja zwraca wskaźnik do zaalokowanej pamięci, który wykorzystywany jest w pozostałych funkcjach operujących na kwadrykach
GLUquadric* gluNewQuadric (void);
zwolnienie pamięci o kwadryce (usunięcie kwadryki)
void gluDeleteQuadric ( GLUquadric *state);
cylinder bez podstaw (gobj - wskaźnik do kwadryki, baseRadius - promień dolnej podstawy, topRadius - promień górnej podstawy, height - wysokość, liczba „południków”, stacks - liczba „równoleżników)
void gluCylinder ( GLUquadric *qobj, GLdouble baseRadius,
GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);
dysk tzn. koło z wewnętrznym otworem (gobj - wskaźnik do kwadryki, innerRadius - promień wewnętrzny, outerRadius - promień zewnętrzny, slices - liczba podziałów promienistych , loops - liczba podziałów koncentrycznych)
void gluDisk ( GLUquadric *qobj, GLdouble innerRadius,
GLdouble outerRadius, GLint slices, GLint loops);
tryb rysowania kwadryki (gobj - wskaźnik do kwadryki, drawStyle - tryb rysowania: GLU_POINT, GLU_LINE, GLU_FILL, GLU_SILHOUETTE)
void gluQuadricDrawStyle ( GLUquadric *gobj, GLenum drawStyle);