background image

 

Grafika Komputerowa  
Laboratorium  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);

 

 

background image

 

•  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); 
 

background image

 

•  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ść boku)  

void glutSolidCube(GLdouble size); 
 

szkielet czworościanu 

void glutWireTetrahedron (void); 
 

czworościan 

void glutSolidTetrahedron (void); 
 

szkielet osmiościanu 

void glutWireOctahedron (void); 
 

ośmiościan 

void glutWireOctahedron (void); 
 

background image

 

szkielet dwunastościanu 

void glutWireDodecahedron(void); 
 

dwunastościan 

void glutWireDodecahedron(void); 
 

szkielet dwudziestościanu 

void glutWireIcosahedron (void); 
 

dwudziestościan 

void glutSolidIcosahedron (void); 
 

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 dzbanka (size – rozmiar) 

glutWireTeapot(GLdouble size); 
 

dzbanek (size – rozmiar) 

void glutSolidTeapot(GLdouble size); 

background image

 

•  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); 
 

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

 
 
 

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  (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);