Está en la página 1de 77

Geometría 3D para

Graficación por
Computadora
Clase 1
FCC-BUAP Otoño 2010
Rafael Lemuz López
Geometría 2D

 Recordatorio básico:
 Elangulo al rededor de un circulo es 360 o 2π
radianes
 Cuando dos lineas se cruzan:
 Angulos opuestos son equivalentes
 Angulos sobre la linea suman180
 Triangulos similares:
 Todos los angulos correspondientes son equivalentes
 Pares de lados correspondientes tienen la misma razón de
longitud y estan separados por ángulos equivalentes
 Cada para de lados correspondientes tienen la misma razón
de longitud
Trigonometría

 Seno: “opuesto sobre hipotenusa”


 Coseno: “adyacente sobre hipotenusa”
 Tangente: “opuesto sobre adyacente”
 Definiciones del circulo unitario:
 sin ( )=y (x, y)
 cos ( ) = x
 tan ( ) = y/x
 Etc…
El objetivo de hoy

 Algebra lineal básica y


 Geometría Analítica
¿Por qué?
Manipulación de la geometría y el color…

Monsters, Inc
Manipulación de la geometría y el color…
Manipulación de la geometría y el color…
Manipulación de la geometría y el color…
Manipulación de la geometría y el color…
¿Por qué?

 En gráficación los objetos se


representan utilizando primitivas
lineales:
 puntos
 lineas, segmentos
 planos, polígonos

 Es necesario saber como


calcular distancias,
tranformaciones y
proyecciones…
¿Como enfocar problemas geométricos?

 Existen dos formas:


1. Aplicar nuestra intuición geométrica
2. Formalizar todo y emplea nuestras habilidades
algebraicas
 Normalmente primero intentamos con No.1 y
despues resolvemos con No.2
 Para problemas complejos hacer No.1 no es
necesariamente facil…
Ejemplo: Distancia entre 2 lineas en 3D

 Problema Geométrico: tenemos dos lineas (o


segmentos) en 3D, necesitamos encontrar la
distancia entre ellos
Ejemplo: Distancia entre 2 lineas en 3D

 Enfoque Geométrico:
 Si observaramos desde la dirección de una de las
lineas, esa linea se reduce a un punto
 Asi, todo lo que necesitamos es calcular la distancia
entre un punto y una linea en 2D (el plano de
proyección)
 Proyectando, reducimos el problema de 3D a 2D
Ejemplo: Distancia entre 2 lineas en 3D

 Enfoque Geométrico:
 ¡Podemos continuar reduciendo la dimensionalidad!
 Proyectar el punto en rojo y la linea azul en el plano
perpedicular a la linea en azul
 Ahora podemos obtener la distantcia punto a punto
Ejemplo: Distancia entre 2 lineas en 3D

 ¿Pero como obtenemos el valor numérico?


 Necesitamos representar las lineas matemáticamente
 OK…
 Escribir la formula de proyección
 Debemos desenpolvar nuestros recuerdos del algebra…
 Calcular la distancia punto a punto
 Facil
Ejemplo: Distancia entre 2 lineas en 3D

 Alternativa:
 (Casi) saltarse el paso de la intuición geométrica…
 Representar lineas matemáticamente
 Sabemos que la distancia se obtiene en el segmento
que es perpendicular a ambas lineas
 Escribir la ecuación para ese segmento y resolver

(p1 p 2 ), u s || u ||2 t v, u 0
(p1 p 2 ), v s u, v t || v ||2 0
Conclusión:

 Con o sin intuición geométrica y buena


orientación 3D, en cualquier caso necesitamos:

Revisar el algebra…
Espacio Vectorial

 Dos tipos de elementos


 Scalares (numeros reales): …
 Vectores (n-tuplas): u, v, w, …

 Soportan dos operaciones:


 Addición u + v, con:
 Identidad 0 v+0=v
 Inversa - v + (-v) = 0
 Multiplicación escalar:
 Regal distributiva: (u + v) = (u) + (v)
( + )u = u + u
Espacio Vectorial: Ejemplo

 La noción comun de un vector en el plano 2D es un


espacio vectorial:
 Los vectores anclados en el origen

 La multiplicacion escalar “estrecha ” el vector, cambiando su


longitud (magnitud) pero no su dirección

 La suma utiliza “regla del trapecio”:


y u+v
y
v

u
x x
Espacio Vectorial: Vectores Base

 Dada una base para un espacio vectorial:


 Cada vector en el espacio es una unica combinación
lineal de los vectores de la base
 Las coordinadas del vector son los escalares de la
combinación lineal
 El ejemplo mas conocido: Coordenadas Cartesianas

x
 Notar que un vector v tendra diferentes coordenadas
para diferentes bases
Definiciones básicas

 Puntos especifican una posición en el espacio


(o en el plano).
 Vectores tienen magnitud y dirección (como la
velocidad).

Points Vectors
Punto + vector = punto
vector + vector = vector

Regla del paralelogramo


punto- punto= vector

A
punto+ punto: not definido!!
Mapeo de puntos a vectores (Espacio Afin)

 Si tenemos un sistema de coordenadas con el


origen en el punto O
 Podemos definir correspondencias entre puntos
y vectores:

p
p p p O
v O+v
O
Producto Punto

 El producto punto, o mas generalmente, producto


interno de dos vectores es un escalar:
<v1 , v2 > =v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D)
 Util para muchos propositos
 Calcular la longitud de un vector : ||v|| = sqrt(v • v)
 Normalizar un vector, haciendo que tenga longitud-uno
 Calcular el angulo entre dos vectores:
<u , v > = ||u|| ||v|| cos(θ)
 Verificar
ortogonaliad de vectores v
 Proyectar un vector en otro
θ
u
Producto interno (punto)

 Definido para vectores:

v, w || v || || w || cosθ

L
w cos θ
||w||
v, w
L
v || v ||
L

Proyección de w en v
Producto punto en coordenadas (2D)

v ( xv , yv )
y
w ( xw , yw )
yw v, w xv xw yv yw
w
yv
v

O xw xv x
Vectores Perpediculares

v, w 0
Unicamente en 2D : v ( xv , yv ) v ( yv , xv )

v
Distancia entre dos puntos

y dist ( A, B) || B A ||
A B A, B A
yA
( xB x A ) 2 ( yB y A )2
yB B

O xA xB x
Ecuación paramétrica de una linea

Representación paramétrica de una línea


con un vector de dirección v y un punto p0
sobre la línea:

(t ) p 0 t v, t ( , )

v
p0
Ecuación paramétrica de un rayo

Restringiendo 0 t produce un rayo


(t ) p 0 t v, t (0, )

v
p0

Haciendo v igual a Q1- Q2 (dos puntos) y restringiendo


0 t 1 produce un segmento de línea Q1 and Q2
Distancia entre un punto q y una línea l

q
Encontrar un punto q’ tal que (q q’) v
dist(q, l) = || q q’ || l
q q, v 0
v
q (p 0 tv ), v 0 q’ = p0 +tv
q p0 , v t v, v 0 p0
q p0 , v q p0 , v
t
v, v || v ||2
2
q p0 , v
dist 2 (q, l ) || q q ||2 || q p 0 ||2
|| v ||2
Interpretación geométrica facil

q
Pitágoras
Pythagoras : l
v
q’
2 2 2
(1) L dist(q, q ) || q p0 ||
q p0 , v p0
(2) L L
|| v ||
dist(q, q ) 2 || q p0 ||2 L2
2
q p0 , v
|| q p0 ||2 .
|| v ||2
La distancia mínima entre un punto y una línea –
también aplica en 3D!

 La representación paramétrica de la línea es


independiente de las coordenadas
 v , p0 y el punto verificado q pueden estar en 2D,
3D o en cualquier dimensión…
Ecuación implicita de una linea en 2D

Ax By C 0, A, B, C R, ( A, B) (0,0)

y
Ax+By+C > 0

Ax+By+C < 0

x
Intersección Linea-segmento

El segmento Q1Q2 intersecta la linea


( Ax1 By1 C )( Ax2 By 2 C ) 0
Q1 (x1, y1)
y
Ax+By+C > 0

Q2 (x2, y2)

Ax+By+C < 0

x
Producto Cruz

 El producto cruz de dos vectores es un vector:


y1 z 2 y 2 z1
v1 v 2 ( x1 z 2 x 2 z1)
x1 y 2 x 2 y1

 El producto cruz de dos vectores es ortogonal a


ambos
 El producto cruz es útil para encontrar la
orientación de las superficies
 Iluminación
 Visibilidad
Representación de un plano en el espacio 3D

 Un plano se define por una normal n y un punto en


el plano p0.
 Un punto q pertenece al plano si < q – p0 , n > = 0
 La normal n es perpendicular a todos los vectores en el
plano
n

q
p0
Distancia entre un punto y un plano

 Proyectar el punto sobre plano en la dirección


de la normal :
dist(q, ) = ||q’ – q||

q n

q’ p0
Distancia entre punto y plano

(q q) || n q
q n, R q q n
q p0 , n 0 ((because
porque q’
q isesta enplane
in the el plano
) π)
q n p0 , n 0
q p0 , n n, n 0
p 0 q, n
|| n ||2
2
2 2 2 2 q p0 , n
dist (q, ) || q q || || n || .
|| n ||2
q n

q’ p0
Distancia entre punto y plano

 Camino Geométrico:
 Proyectar (q - p0) sobre n

| q p0 , n |
dist
n

q n

p0
Representación implicita del plano en 3D

Ax By Cz D 0, A, B, C, D R, ( A, B, C ) (0,0,0)

 (x, y, z) son coordenadas de un punto en el plano


 (A, B, C) son las coordenadas del vector normal al plano

Ax+By+Cz+D > 0

Ax+By+Cz+D = 0

Ax+By+Cz+D < 0
Distancia entre dos lineas en 3D

l1 q1
l1 ( s) p1 su p1
u
l2 (t ) p 2 tv d

p2
v
l2 q2

La distancia se calcula entre dos puntos q1 y q2


Tales que (q1 – q2) u y (q1 – q2) v
Distance between two lines in 3D

l1 q1
l1 ( s) p1 su p1
u
l2 (t ) p 2 tv d

p2
v
l2 q2

(p1 p 2 ) su tv, u 0 (p1 p 2 ), u s || u ||2 t v, u 0


(p1 p 2 ) su tv, v 0 (p1 p 2 ), v s u, v t || v ||2 0
Distancia entre dos líneas en 3D

l1 q1
l1 ( s) p1 su p1
u
l2 (t ) p 2 tv d

p2
v
l2 q2

u, v v , p1 p 2 || v ||2 u, p1 p 2
s
|| u ||2 || v ||2 u, v 2
|| u ||2 u, p1 p 2 u, v u, p 1 p 2
t
|| u ||2 || v ||2 u, v 2
Distancia entre dos líneas en 3D

l1 q1
l1 ( s) p1 su p1
u
l2 (t ) p 2 tv d

p2
v
l2 q2

~ ~
dist (l1 , l2 ) || l1 ( s ) l2 ( t ) ||
Matrices

 Por convención, el elemento de la matriz Mrc se


ubica en la fila r y columna c:
M11 M12  M1n
M21 M22  M2n
M
   
Mm1 Mm2  Mmn

 En (OpenGL) y la mayoria de las, v1


bibliotecas graficas los vectores v v2
son columnas: v3
Matrices

 Una multiplicación Matriz-vector aplica una


transformación lineal al vector :
M11 M12 M13 vx
M v M 21 M 22 M 23 vy
M 31 M 32 M 33 vz

 Recordar como se hace la multiplicación de


matrices
Transformaciones Lineales

 Una transformación lineal:


 Transforma un vector en otro
 Preserva las combinaciones lineales

 Así, el comportamiento de las transformaciones


esta completamente determinado por lo que le
hace a la base
 Implica que cualquier transformación lineal se
puede representar por una matriz
Transformaciones 2D:

Rotación
Rotar
y

(0,1)

x
(1,0)
Rotar por : 1er Cuadrante

y cos ,sin

sin

(1,0) x
cos
Rotar por : 1er Cuadrante

(1,0) (cos , sin )


Rotar por : 2o Cuadrante
y

(0,1)

x
(1,0)
Rotar por : 2o Cuadrante
y
(0,1)

cos

x
sin
Rotar por : 2o Cuadrante

(0,1) ( sin , cos )


Resumen de Rotation por

(1, 0) (cos ,sin )

(0,1) ( sin , cos )


Resumen ( Forma Columna)

1 cos
0 sin

0 sin
1 cos
Utilizando notación matricial

cos - sin 1 cos


sin cos 0 sin

cos - sin 0 - sin


sin cos 1 cos
(Notar que los vectores unitarios
simplemente mantienen las columnas)
General Rotation por Matrix

cos -sin x xcos -ysin


sin cos y xsin ycos
Transformaciones de matrices

 Una secuencia o composición de


transformaciones lineales corresponden al
producto de las matrices correspondientes
 Nota: la matriz de la derecha afecta al vector
primero
 Nota: el orden de las matrices importa!

 La matriz identidad I no afecta al multiplicar


 Algunas (no todas las) matrices tienen inversa:
1
M Mv v
Rotación una figura no anclada al origen

Los puntos siempre se rotan con respecto al origen

y
6

1 6

0
1 2 3 4 5 6 7 8 9 10
x
Transformaciones Compuestas

Ts T ( a , b ) R (t ) T ( a, b)

Si el centro de la figura esta en ( a , b )

1 0 a cos( ) sin( ) 0 1 0 a x x'


0 1 b sin( ) cos( ) 0 0 1 b y y'
0 0 1 0 0 0 0 0 1 1 1
Trasladar de regreso Rotar en el origen Trasladar al origen
Escala (No uniforme)

1
sx 0 1
sx 0
Scale( sx , s y ) S 1
0 sy 0 sy
sx 0 0 x sx x
0 sy 0 y sy y y
6

0 0 sz z sz z 5

3 6 9
3 3
2

1 2 3
1 1
0
1 2 3 4 5 6 7 8 9 10
x
Nota: Si no esta anclada al origen la
figura se desplaza y crece
Shear

1 a 1 1 a
Shear S
0 1 0 1

(0,1) (1,1) (a,1)

(1, 0) (1, 0)
Invertir Transformaciones Compuestas
 Suponer que se quiere revertir el efecto de 3
transformaciones compuestas
 Opción 1: Calcular la matríz compuesta, invertir
 Opción 2: Invertir cada transformación e invertir
el orden
 Resulta de las propiedades de las matrices
M M 1M 2 M 3
1 1 1 1
M M 3 M 2 M1
1 1 1 1
M M M 3 (M 2 (M1 M1 )M 2 )M 3
Translación!
Coordenadas Homogéneas
Un punto (x, y) puede re-escribirse en coordenadas
homogéneas como:
(xh , yh , h)
El parámetro homogéneo h es un valor diferente de
cero, tal que:
xh yh
x y
h h
Cualquier punto (x, y) se puede describir como: (hx, hy, h)
Convenientemente se elige h = 1 de tal forma que:
(x, y) se represente como (x, y, 1)
¿Porque coordenadas Homogéneas?

Los matemáticos utilizan comunmente


coordenadas homogeneas porque de esta
forma los factores de escala se pueden
remover de las ecuaciones.
Todas las tranformaciones discutidas
previamente se pueden representar mediante
una matriz de 3x3.
Utilizando coordenadas homogeneas se
puede utilizar la multiplicacion de matrices para
calcular las tranformaciones- cálculo que es
extremadamente eficiente!
Translación con Homogéneas
La translación de un punto para un desplazamiento (dx, dy)
se escribe en forma matricial :

1 0 dx
0 1 dy
0 0 1
Representando los puntos con un vector columna la
translación de un objeto se expresa como:

1 0 dx x 1x 0 y 1dx x dx
0 1 dy y 0 x 1y 1dy y dy
0 0 1 1 0x 0 y 1 1
Transformaciones en Coordenadas Homogeneas

1 0 dx x x dx
traslación:
0 1 dy y y dy : v' T (dx, dy)v
0 0 1 1 1

sx 0 0 x sxx
escala: 0 sy 0 y syy : v' S ( sx, sy )v
0 0 1 1 1
Transformaciones en Coordenadas Homogéneas

Rotación:
cos sin 0 x x cos y sin
sin cos 0 y x sin yos : v ' R ( )v
0 0 1 1 1
Inversa de las Transformaciones
Las tranformaciones se pueden revertir facilmente
utilizando la inversa de las matrices T.

1 0 dx
1 1
T 0 1 dy 0 0
sx
0 0 1
1 1
S 0 0
cos sin 0 sy
R 1
sin cos 0 0 0 1
0 0 1
Transformaciones 3D:

Rotación