Documente Academic
Documente Profesional
Documente Cultură
Traslacin
x
z
x
z
Rotacin
x
z
x
z
Escalado
x
z
x
z
Ejemplo
y'
glRotatef(45,0,0,1);
x'
x
glTranslatef(10,0,0);
1/ 2
1/ 2
M=
0
0
1/ 2 0 0
1/ 2 0 0
0
1 0
0
0 1
glRectf(-5,-5,5,5);
y'
x'
y
0
M = M
0
0 0 10 1/ 2
1 0 0 1/ 2
=
0 1 0 0
0 0 1 0
1/ 2 0 10/ 2
1/ 2 0 10/ 2
0
1
0
0
0
1
y'
x'
y
P
x
1/ 2
1/ 2
P = MP =
0
0
1/ 2 0 10/ 2 5 10 2
1/ 2 0 10/ 2 5 2
=
0
1
0 0 0
0
0
1 1 1
Funciones de Matrices
glLoadIdentity(void)
glLoadMatrix{fd}(cont TYPE *m)
glMultMatrix{fd}(cont TYPE *m)
m1
m
M = 2
m3
m4
m5
m6
m7
m8
m9
m10
m11
m12
m13
m14
m15
m16
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixf(M1);
glMultMatrixf(M2);
glMultMatrixf(M3);
Se aplica al vector v:
M1M2M3v = [M1[M2[M3v]]]
y
10
// Sube 10 unidades en y
glTranslatef (0.0f, 10.0f, 0.0f);
// Mueve 10 unidades en x
glTranslatef (10.0f, 0.0f, 0.0f);
10
y
10
// Sube 10 unidades en y
glTranslatef (0.0f, 10.0f, 0.0f);
// Dibuja el primer cubo
glutSolidCube (1.0f);
// Reinicia de nuevo la matriz
glLoadIdentity();
// Mueve 10 unidades en x
glTranslatef (10.0f, 0.0f, 0.0f);
// Dibuja el segundo cubo
glutSolidCube (1.0f);
Ing. Jos Luis Peralta Lujn
10
Pila de Matrices
glPushMatrix(void)
glPopMatrix(void)