Sunteți pe pagina 1din 59

Transformaciones Geometricas

Mario Martnez Molina

13 de junio de 2016

1 / 59
Vectores I

Un vector n-dimensional es denotado por la n-tupla de n


umeros
reales:

V = (V1 , V2 , . . . , Vn ) (1)

Cada vi es llamada componente del vector V.


Comunmente, el indice que representa a una componente
toma su nombre del eje cartesiano al que corresponde.

P = (Px , Py , Pz )
En general n {2, 3, 4}

Vectores 2 / 59
Vectores II

Un vector columna es representado a traves de una matriz de n


filas y una columna:

V1
V2

V=
..
(2)
.
Vn
Un vector fila es representado a traves de una matriz de una fila y
n columnas. Esta matriz es la transposicion del vector columna:

VT = [V1 V2 . . . Vn ] (3)

Vectores 3 / 59
Vectores III

La norma de un vector n-dimensional V es un escalar denotado por


kV k definido como sigue:
v
u n
uX
kV k = t Vi2 (4)
i=1

Dado un vector V con al menos una componente no cero, es posible


obtener un vector con normal igual a uno como sigue:

1
 
v = V (5)
kV k
Este proceso es llamado normalizaci
on y el vector resultante es
llamado vector unitario.

Vectores 4 / 59
Vectores IV

Teorema:

Sean P y Q dos vectores, dado el escalar a se tiene:


kPk 0
kPk = 0 P = (0, 0, . . . , 0)
kaPk = |a| kPk
kP + Qk kPk + kQk

Vectores 5 / 59
Operaciones con vectores

Suma:

P + Q = (P1 + Q1 , P2 + Q2 , . . . , Pn + Qn ) (6)

Resta:
P Q = P + (Q) (7)
Producto de un escalar y un vector:

aV = V a = (aV1 , aV2 , . . . , aVn ) (8)

Vectores 6 / 59
Propiedades

Sean P, Q y R tres vectores, dados los escalares a y b se tiene:


1. P + Q = Q + P
2. (P + Q) + R = P + (Q + R)
3. (ab)P = a(bP)
4. a(P + Q) = aP + aQ
5. (a + b)P = aP + bP

Vectores 7 / 59
Producto escalar I

El producto escalar de dos vectores n-dimensionales P y Q denotado


por P Q se define como:
n
X
PQ= Pi Qi (9)
i=1

El producto escalar tambien puede ser expresado como el producto


matricial:

Q1
Q2

PT Q = [P1 P2 . . . Pn ]

..
(10)
.
Qn

Vectores 8 / 59
Producto escalar II

Teorema:

Dados dos vectores n-dimensionales P y Q, el producto punto


P Q satisface la relaci
on:

P Q = kPk kQk cos (11)

donde es el angulo planar entre los vectores P y Q.

Dos vectores P y Q son perpendiculares (ortogonales) si y solo si


PQ=0

Vectores 9 / 59
Producto escalar III

Vectores 10 / 59
Producto escalar IV

Propiedades
1. P Q = Q P
2. (aP) Q = a (P Q)
3. P (Q + R) = P Q + P R
4. P P = kPk2
5. |P Q| kPk kQk

Vectores 11 / 59
Proyecciones

a = kPk cos
PQ
a=
kQk

PQ
projQ P = Q (12)
kQk2

PQ
perpQ P = P Q (13)
kQk2

Vectores 12 / 59
El producto vectorial I

El producto vectorial de dos vectores 3-dimensionales P y Q, deno-


tado por P Q es una cantidad vectorial definida como:

P Q = (Py Qz Pz Qy , Pz Qx Px Qz , Px Qy Py Qx ) (14)


i j k
i = (1, 0, 0)
P Q = Px Py Pz


Qx
j = (0, 1, 0)
Qy Qz
k = (0, 0, 1)

Vectores 13 / 59
El producto vectorial II

Teorema

Sean P y Q dos vectores


3-dimensionales. Entonces:

(P Q) P = 0
(P Q) Q = 0

Esto es, el producto vectorial


produce un vector que es
perpendicular tanto a P como a
Q.

Vectores 14 / 59
El producto vectorial III

Teorema

Dados dos vectores 3-dimensionales P y Q, el producto vectorial


satisface la relacion:

kP Qk = kPk kQk sin (15)

donde es el angulo planar entre los vectores P y Q.

Vectores 15 / 59
El producto vectorial IV

Propiedades

Q P = (P Q)
(aP) Q = a(P Q)
P (Q + R) = P Q + P R
P P = (0, 0, 0)
(P Q) R = (R P) Q = (Q R) P
P (Q P) = P Q P = P 2 Q (P Q)P

Vectores 16 / 59
Espacios vectoriales I

Un espacio vectorial es un conjunto V cuyos elementos son llamados


vectores. En un espacio vectorial las operaciones de suma y multipli-
cacion por un escalar estan definidas. Ademas se tienen las siguientes
propiedades:
1. V es cerrado bajo la suma.
2. V es cerrado bajo la multiplicaci
on con un escalar.
3. Existe un elemento en V denotado 0 tal que
P+0=0+P=P
4. Para cada elemento P en V , existe un elemento Q en V tal
que P + Q = 0

Vectores 17 / 59
Espacios vectoriales II

Independencia lineal

Un conjunto de vectores {V1 , V2 , . . . , Vn } es linealmente


dependiente si existen reales a1 , a2 , . . . , an con al menos uno de los
ai 6= 0 tal que:

a1 V1 + a2 V2 + + an Vn = 0 (16)

En caso contrario se dice que los vectores son linealmente


independientes.

Vectores 18 / 59
Base de un espacio vectorial

Una base B para un espacio vectorial V es un conjunto de vecto-


res linealmente independientes B = {V1 , V2 , . . . , Vn } tal que para
cada elemento P en V existen reales a1 , a2 , . . . , an tal que:

P = a1 V1 + a2 V2 + + an Vn (17)
Si para cada par (i, j) se tiene que Vi Vj = ij , donde:
(
1 si i = j
ij
0 6 j
si i =
entonces se dice que la base B es ortonormal.

Vectores 19 / 59
Matrices

Una matriz es un conjunto de numeros reales denotado en forma de


un arreglo de m filas y n columnas.

A11 A12 A13 A14
A = A21 A22 A23 A24

A31 A32 A33 A34

Si m = n se dice que la matriz es cuadrada.


Aij es la entrada en la fila i, columna j.
Las entradas donde i = j constituyen la diagonal principal
de la matriz.
Si cada Aij = 0 excepto en la diagonal principal, entonces la
matriz es llamada matriz diagonal.

Matrices 20 / 59
Operaciones I

1. Transposicion. La matriz transpuesta de A denotada AT es


una matriz n m cuya entrada ATij = Aji

A11 A21 A31
A A22 A32
T 12
A =

A13 A23 A33

A14 A24 A34


2. Producto con un escalar:

aA11 aA12 A1n
aA21

aA22 A2n

aA = Aa =
.. .. .. .. (18)
. . . .


aAm1 aAm2 aAmn

Matrices 21 / 59
Operaciones II

3. Suma de matrices:


A11 + B11 A12 + B12 A1n + B1n
A21 + B21

A22 + B22 A2n + B2n

A+B= .. .. .. ..

. . . .


Am1 + Bm1 Am2 + Bm2 Amn + Bmn

Matrices 22 / 59
Propiedades de la matriz transpuesta

Sean A y B dos matrices y sea a un escalar. Se tienen las siguientes


propiedades:

(AT )T = A
(A + B)T = AT + BT
(aA)T = aAT
(AB)T = BT AT

Matrices 23 / 59
Multiplicacion de matrices I

Dos matrices A y B pueden ser multiplicadas, siempre que el n


umero
de columnas en A sea igual al n
umero de filas en B.

Sea A una matriz m n y B una matriz n p, el producto AB es


una matriz m p cuya entrada ij esta dada por:
n
X
(AB)ij = Aik Bkj (19)
k=1

i.e., la entrada (AB)ij es el producto punto de la fila i de A y la


columna j de B

Matrices 24 / 59
Multiplicacion de matrices II

Matriz identidad

Es una matriz cuadrada denotada por I tal que AI = IA = A


1 0 0
0 1 0

I = . . .
.. (20)
.
. .
. . . .

0 0 1

Matrices 25 / 59
Propiedades I

Teorema

Dados dos escalares a y b y tres matrices A, B, y C, se tiene lo


siguiente:
1. A + B = B + A
2. (A + B) + C = A + (B + C)
3. a(bA) = (ab)A
4. a(A + B) = aA + aB
5. (a + b)A = aA + bA

Matrices 26 / 59
Propiedades II

Teorema

Dado un escalar a, una matriz m n A, una matriz n p B, y


una matriz p q C, se tiene:

1. (aA)B = a(AB)
2. (AB)C = A(BC)
3. (AB)T = BT AT

Matrices 27 / 59
Sistemas de ecuaciones lineales I

El sistema lineal de ecuaciones:

3x + 2y 3z = 13
4x 3y + 6z = 7
x z = 5

Puede ser representado en forma matricial como:



3 2 3 x 13
4 3 6 y
7
=


1 0 1 z 5

Matrices 28 / 59
Sistemas de ecuaciones lineales II

La solucion al sistema puede ser hallada al aplicar una serie de ope-


raciones elementales a las filas de la matriz que resulta de conca-
tenar la matrix de coeficientes con la matriz de constantes.

3 2 3 13
4 3 6 7

1 0 1 5

Intercambiar dos filas.


Multiplicar una fila por un escalar distinto de cero.
Sumar el multiplo de una fila a otra fila.

Matrices 29 / 59
Inverso de una matriz

Una matriz M de dimensiones nn es invertible si existe una matriz


denotada por M1 tal que:

MM1 = M1 M = I (21)
La matriz M1 es llamada el inverso de M. Las matrices que no
poseen un inverso son llamadas singulares

Teorema

Una matriz M es invertible si y solo si MT es invertible.

Matrices 30 / 59
Matrices ortogonales I

Una matrix n n es llamada ortogonal si y solo si M1 = MT

Teorema
Si los vectores V1 , V2 , . . . , Vn forman un conjunto ortonormal,
entonces la matriz n n cuyas columnas estan dadas por
V1 , V2 , . . . , Vn es ortogonal.

Matrices 31 / 59
Matrices ortogonales II

Teorema

Sea M una matriz ortogonal, entonces:

1. El producto con M preserva el angulo entre dos vectores:

(MV1 ) (MV2 ) = V1 V2 (22)


2. M preserva la longitud de un vector V bajo el producto, esto
es:
kMVk = kVk (23)

Matrices 32 / 59
Transformaciones lineales I

Considere dos sistemas coordenados C, C 0 y un vector de posicion


P = (x, y, z) en C.

Si es posible expresar las coordenadas (x0 , y 0 , z 0 ) en C 0 como fun-


ciones lineales de las coordenadas (x, y, z) en C, es decir, se tiene:

x0 (x, y, z) = U1 x + V1 y + W1 z + T1 (24)
0
y (x, y, z) = U2 x + V2 y + W2 z + T2 (25)
0
z (x, y, z) = U3 x + V3 y + W3 z + T3 (26)

entonces se dice que las ecuaciones 24 a 26 constituyen una trans-


on lineal de C a C 0 .
formaci

Transformaciones 33 / 59
Transformaciones lineales II
Las ecuaciones 24 a 26 pueden ser escritas como:

x0 U1 V1 W1 x T1
0
y = U2 V2 W2 y + T2 (27)

z0 U3 V3 W3 z T3
donde:
El vector T representa la traslaci
on del origen del sistema
coordenado C a C .0

La matriz cuyas columnas estan dadas por U, V y W


representa el cambio en la orientaci
on de los ejes coordenados
cuando se pasa de C a C .0

Si la matriz dada por U, V y W es ortogonal, entonces solo


se pueden realizar reflexiones y rotaciones.

Transformaciones 34 / 59
Reflexion

Para reflejar un vector P con respecto a alguno de los ejes coorde-


nados se puede utilizar el producto matricial siguiente:

ax 0 0 Px
P0 = 0 ay 0 Py (28)

0 0 az Pz

donde cada ai toma el valor 1 si no hay reflexi


on con respecto al eje
correspondiente, o 1 si existe reflexi
on con respecto a ese eje.

Transformaciones 35 / 59
Escalamiento I

El escalamiento de un vector P por un factor a se obtiene al calcular


P0 = aP, que puede ser expresado como el producto matricial:

ax 0 0 Px
P0 = 0 ay 0 Py (29)

0 0 az Pz

donde cada ai R+ .

Si ax = ay = az se dice que el escalamiento es uniforme, de lo


contrario diremos que el escalamiento es no-uniforme.

Transformaciones 36 / 59
Escalamiento II

Escalamiento
uniforme

Escalamiento
no uniforme

Transformaciones 37 / 59
Rotacion
Es posible expresar la rotaci
on de un vector P un angulo alrededor
de un eje arbitrario cuya direccion esta representada por el vector

unitario A de acuerdo al siguiente producto matricial:

Px
P0 = M Py (30)

Pz
donde la matriz M esta dada por:


c + (1 c)A2x (1 c)Ax Ay sAz (1 c)Ax Az + sAy
(1 c)Ax Ay + sAz c + (1 c)A2y (1 c)Ay Az sAx

(1 c)Ax Az sAy (1 c)Ay Az + sAx c + (1 c)A2z

con c = cos y s = sin

Transformaciones 38 / 59
Transformaciones compuestas

Dados un vector P y una matriz de escalamiento Ms es posible


escalar al vector P por MS de acuerdo a:

P0 = MS P
on MR , se puede rotar a P0
Si se tiene ahora una matriz de rotaci
por MR como sigue:

P00 = MR P0 = MR (MS P)
Por la asociatividad del producto de matrices se tiene:

P00 = (MR MS ) P0
Nota: Recuerde que el producto de matrices no es conmuta-
tivo.

Transformaciones 39 / 59
Coordenadas homogeneas I

Considere el problema de trasladar un conjunto de vertices como en


la figura siguiente:

Transformaciones 40 / 59
Coordenadas homogeneas II

Una manera de lograr lo anterior seria expresar la translacion me-


diante un vector T cuyas componentes representan el desplazamien-
to deseado en cada eje, i. e.,

P0 = MP + T
donde M es una matriz que representa alguna transformacion lineal
dada. Si ahora se desea realizar una transformacion compuesta se
tiene:

P0 = M2 (M1 P + T1 ) + T2
= (M2 M1 )P + M2 T1 + T2 (31)

Que pasara para la composici


on de n transformaciones?

Transformaciones 41 / 59
Coordenadas homogeneas III

Es posible expresar una transformaci


on de traslacion en forma matri-
cial en un sistema coordenado de cuatro dimensiones de la manera
siguiente:

Q0 = FQ (32)
donde:

Px
M11 M12 M13 Tx P
Q = y
M M22 M23 Ty
F = 21 Pz

M31 M32 M33 Tz

1
0 0 0 1

Transformaciones 42 / 59
Interpretacion de la coordenada w

Para extender un vector de posici


on P en un espacio bidimensional a
un espacio tridimensional, basta con agregar una tercera coordenada
w = 1 a P.

Transformaciones 43 / 59
Posicion y direccion

A diferencia de los vectores que representan una posicion en un


espacio tridimensional, un vector que representa una direccion debe
permanecer invariante a una transformaci on de traslacion.

Para lograr lo anterior, se hace la siguiente distincion:


Vectores de posici
on, w = 1
Vectores de direcci
on, w = 0

Por ejemplo la diferencia entre dos vectores de posicion P y Q,


ambos con w = 1, resulta en un vector de direccion P Q cuya
componente w = 0.

Transformaciones 44 / 59
Sistemas coordenados en OpenGL I

Cmara

Matriz de
modelo
Espacio local Espacio global

Sistemas coordenados 45 / 59
Sistemas coordenados en OpenGL II

Cmara

Matriz de
vista
Espacio global Espacio de vista

Sistemas coordenados 46 / 59
Sistemas coordenados en OpenGL III

Matriz de
proyeccin
Espacio Espacio de
de vista clipping

Sistemas coordenados 47 / 59
Sistemas coordenados en OpenGL IV

Transformacin
de viewport
Espacio Espacio de
de vista pantalla

Sistemas coordenados 48 / 59
Transformacion de sistemas coordenados I

Sistemas coordenados 49 / 59
Transformacion de sistemas coordenados II

Caso bidimensional:

Es posible expresar al vector de posici


on P con respecto a los
vectores de la base canonica como sigue:

P = (Px , Py ) o + Px + Py , o = (0, 0)

Si se expresa a P con respecto al origen e y los vectores unitarios


yv
u :

P = (Pu , Pv ) e + Pu u
+ Pv v

Sistemas coordenados 50 / 59
Transformacion de sistemas coordenados III

En forma matricial se tiene:



Px ux vx ex Pu
Py = uy vy ey Pv

1 0 0 1 1

Esta transformacion toma un vector de posici


on en el sistema coor-
denado dado por la base B = { } y lo transforma a un vector
u, v
expresado de acuerdo a la base canonica.

Sistemas coordenados 51 / 59
Transformacion de sistemas coordenados IV

La operacion inversa:

Pu ux uy e u Px
P = v v e Py
v

v x y
1 0 0 1 1

toma un vector de posici


on expresado en la base canonica y lo trans-
forma a un punto expresado con respecto a la base B = { }
u, v

Sistemas coordenados 52 / 59
La matriz de vista I

El siguiente diagrama muestra el escenario a partir del cual se puede


construir una base ortonormal para la matriz de vista:

Sistemas coordenados 53 / 59
La matriz de vista II
1. Halle el vector f (forward), que representa la direccion a la
que apunta la camara, de la manera siguiente:
ep
f=
ke pk
2. Ahora obtenga el vector lateral s (sideways) a partir de los
vectores f y u como sigue:

f u
s=
kf uk
3. Debido a que los vectores u y f podran no ser ortogonales, es
necesario obtener un tercer vector v ortogonal a s y f , i. e.,

v=sf

Sistemas coordenados 54 / 59
La matriz de vista III

Finalmente la matriz de vista estara dada por:



sx sy sz s p
x vy vz v p
v
(33)
fx fy fz f p

0 0 0 1

Sistemas coordenados 55 / 59
Entrada del usuario

GLFW se comunica de manera continua con el administrador de


ventanas para poder recibir y procesar eventos, y para informar que
la aplicacion a
un responde.
void glfwPollEvents(). Se procesan los eventos que se
encuentran en la cola de eventos y la funci
on regresa
inmediatamente.
void glfwWaitEvents(). Esta funci on pone al hilo que la
llamo en estado de sleep hasta que alg
un evento este
disponible en la cola de eventos.

Entrada 56 / 59
Teclado I

GLFW divide la entrada desde el teclado en dos categoras: eventos


de teclas y eventos de caracter.
Eventos de teclas.
Ocurren cuando una tecla fsica ha sido presionada, se mantiene
presionada, o es liberada. Para ser notificado de estos eventos es
necesario configurar un callback de la manera siguiente:

glfwSetKeyCallback(window, key callback);

La funcion de callback toma la forma siguiente:

void key callback(GLFWwindow* window, int key, int


scancode, int action, int mods)

Entrada 57 / 59
Mouse I

GLFW puede reconocer los siguientes tipos de entrada provenientes


del mouse:

Desplazamiento del mouse.


Clicks en los botones del mouse.
Movimiento de la rueda del mouse.

De manera adicional, tambien es posible cambiar la imagen por de-


fecto del cursor por una personalizada.

Entrada 58 / 59
Mouse II

Para responder al evento generado por el movimiento del mouse, es


necesario configurar un callback de la manera siguiente:

glfwSetCursorPosCallback(window, cursor pos callback);

El prototipo de la funci
on de callback correspondiente es como sigue:

void cursor pos callback(GLFWwindow* window,


double xpos, double ypos);

Entrada 59 / 59

S-ar putea să vă placă și