Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones...

14
Edgar Garduño Ángeles C. Computación, I.I.M.A.S. Coordenadas Homogéneas Por lo tanto agregamos una dimensión más: En 2D usamos M 3 × 3 En 3D usamos M 4 × 4 p = v + o = α i ! e i i= 1 n + o = E α + o = e 1,1 e 2,1 e 3,1 o 1 e 2,1 e 2,2 e 2,3 o 2 e 3,1 e 3,2 e 3,3 o 3 0 0 0 1 α 1 α 2 α 3 1 p a = M

Transcript of Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones...

Page 1: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Coordenadas Homogéneas

■ Por lo tanto agregamos una dimensión más:● En 2D usamos M3×3

● En 3D usamosM4×4

p = v +o = αi

!ei

i=1

n

∑ +o =Eα +o =

e1,1 e2,1 e3,1 o1

e2,1 e2,2 e2,3 o2

e3,1 e3,2 e3,3 o3

0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

α1

α2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

p a=M

Page 2: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Translación

p = v +o =

1 0 0 t10 1 0 t2

0 0 1 t3

0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

v1

v2

v3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

p = v +o =

1 0 0 t10 1 0 t2

0 0 1 t3

0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

v1

v2

v3

0

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

w

Page 3: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Transformaciones Ortogonales

■ Un conjunto de vectores es ortogonal si todos son perpendiculares. Este conjunto es ortonormal si todos los vectores tienen magnitud igual a uno.

■ Las transformaciones ortogonales preservan los ángulos.■ Las transformaciones ortonormales preservan ángulos y

distancias.■ Las rotaciones son ortonormales.

I =RRT .

Page 4: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Varios Sistemas Coordenados Involucrados

■ Espacio del Dispositivo: El sistema coordenado que utiliza el dispositivo de gráficas. Típicamente medido en píxeles.

■ Espacio de la Pantalla: El plano donde se crea la proyección, este plano es el que se mapea al espacio del dispositivo. Típicamente se define como el plano . Donde .

■ Espacio de la Imagen: El sistema coordenado 3D qué contiene al Espacio de la Pantalla. Es una extensión del Espacio de la Pantalla:

. Este espacio se proyecta sobre el de la Pantalla.■ Espacio del Objeto: El sistema de coordenadas de un objeto que se crea. Este

sistema está o estará inmerso en un sistema general conocido como Espacio del Mundo/Universo.

■ Espacio del Mundo: El sistema de la escena que será proyectado en el Espacio de la Imagen. Típicamente, se mapea una región de este espacio.

Px− y

Px− y = p | p ∈2 y -1≤ p1,2 ≤1{ }

C = p | p ∈3 y -1≤ p1,2,3 ≤1{ }

Page 5: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Esquema de Coordenadas Homogéneas

w = 1w = 2

(0, 0, 1) = (0, 0, 2) = …(7, 1, 1) = (14, 2, 2) = …(4, 5, 1) = (8, 10, 2) = …

■ Dividir entre w para normalizar (homogeneizar)■ ¿Qué pasa cuando w = 0?

Page 6: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Marcos de Referencia

■ Dado el espacio afín A de dimensión n. Sea o un punto en éste espacio y sea una base para A. Un “frame” de A es la colección . Un punto relativo al “frame” se puede calcular como sigue

{ei}

{!ei ,o}

v = α i

eii=1

n

p = v +o = αi

!eii=1

n

∑ +o

p = v +o = αi

!eii=1

n

∑ +o =Eα +o

p =!e1!e2!e3 o

0 0 0 1

⎢⎢⎢

⎥⎥⎥

α1

⎣⎢

⎦⎥

o

Representación de un Marco de Referencia

e1e2

en o⎡⎣

⎤⎦

Page 7: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

TransformacionesMarco →Marco

e1e2e3 c⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

= u1u2u3 o⎡

⎣⎤⎦

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

FF’

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=

a1,1 a1,2 a1,3 a1,4

a2,1 a2,2 a2,3 a2,4

a3,1 a3,2 a3,3 a3,4

0 0 0 1

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

Coordenadas de Bases en Fcon respecto a F’

e1e2e3 c⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

= e1e2e3 c⎡

⎣⎤⎦

a1,1 a1,2 a1,3 a1,4

a2,1 a2,2 a2,3 a2,4

a3,1 a3,2 a3,3 a3,4

0 0 0 1

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

u1u2u3 o⎡

⎣⎤⎦ =

e1e2e3 c⎡

⎣⎤⎦

a1,1 a1,2 a1,3 a1,4

a2,1 a2,2 a2,3 a2,4

a3,1 a3,2 a3,3 a3,4

0 0 0 1

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

Page 8: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

TransformacionesMarco → Cartesianas

e1e2e3 o⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

= u1u2u3 o⎡

⎣⎤⎦

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

e1e2e3 o⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

e1e2e3 o⎡

⎣⎤⎦ =

1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥

e1,1 e1,2 e1,3 o1

e2,1 e2,2 e2,3 o2

e3,1 e3,2 e3,3 o3

0 0 0 1

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥

e1,1 e1,2 e1,3 o1

e2,1 e2,2 e2,3 o2

e3,1 e3,2 e3,3 o3

0 0 0 1

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

Page 9: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

TransformacionesCartesianas →Marco

Suponiendo un vector conocido v

Usando la Regla de Cramer:

1 1 1

2 2 2

3 3 3

a b cD a b c

a b c=

1 1 1

2 2 2

3 3 3

b cb cb cDu

aaa=1 1 1

2 2 2

3 3 3

a ca ca c

Dv

aaa=

1 1 1

2 2 2

3 3 3

a ba ba b

Dw

aaa=

0D ¹ 0uvw

é ùê ú ¹ê úê úë û

Siempre y cuando: y

v = o + ue1 + ve2 + we3

uvw

⎢⎢⎢

⎥⎥⎥=

a1 b1 c1

a2 b2 c2

a3 b3 c3

⎢⎢⎢⎢

⎥⎥⎥⎥

α1

α 2

α3

⎢⎢⎢⎢

⎥⎥⎥⎥

1 0 00 1 00 0 1

⎢⎢⎢

⎥⎥⎥= e1

e2e3

⎡⎣

⎤⎦

a1 b1 c1

a2 b2 c2

a3 b3 c3

⎢⎢⎢⎢

⎥⎥⎥⎥

e1e2e3 o⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

e1e2e3 o⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

= u1u2u3 o⎡

⎣⎤⎦

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

1 0 0 00 1 0 00 0 1 0

⎢⎢⎢

⎥⎥⎥= e1

e2e3 o⎡

⎣⎤⎦

a1 b1 c1 o1

a2 b2 c1 o2

a3 b3 c1 o3

0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

e1e2e3 o⎡

⎣⎤⎦

β1

β2

β3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

= e1e2e3 o⎡

⎣⎤⎦

a1 b1 c1 o1

a2 b2 c1 o2

a3 b3 c1 o3

0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

α1

α 2

α3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

Page 10: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Siempre y cuando: y

TransformacionesCartesianas →Marco

Suponiendo un vector conocido v

Usando la Regla de Cramer:

( )1 1 1

2 2 2

3 3 3

,a b c

D a b c a b ca b c

= ´ =

( )

1 1 1

2 2 2

3 3 3 ,

b cb c

b cb cD Du

aa

aa ´= =

( )

1 1 1

2 2 2

3 3 3 ,

a ca c

a t ca cD Dv

aaa ´= =

( )

1 1 1

2 2 2

3 3 3 ,

a ba b

a b ta bD Dw

aaa ´

= =

0D ¹0

uvw

é ùê ú ¹ê úê úë û

Volume cosa b c f= ´

( )1 1 1

2 2 2

3 3 3

,a b c

a b c a b ca b c

´ =

( ) ( ) ( ), , ,a b c b c a c a b´ = ´ = ´

v = o + ue1 + ve2 + we3

uvw

⎢⎢⎢

⎥⎥⎥=

a1 b1 c1

a2 b2 c2

a3 b3 c3

⎢⎢⎢⎢

⎥⎥⎥⎥

α1

α 2

α3

⎢⎢⎢⎢

⎥⎥⎥⎥

1 0 00 1 00 0 1

⎢⎢⎢

⎥⎥⎥= e1

e2e3

⎡⎣

⎤⎦

a1 b1 c1

a2 b2 c2

a3 b3 c3

⎢⎢⎢⎢

⎥⎥⎥⎥

Page 11: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Marco para Cámara

t

Marco de Cámara:

Coordenadas Mundo Coordenadas Cámara

(0,0,0)

(0,0,f )

(0,1,0)

(0,1,f )

u = t × w

t × w

v = w× u

g = − w = qow

qow

w = owq

owq

u v w ow

⎡⎣

⎤⎦

ow

ow

ow + f w

ow +v

ow +v + f w

q

e2

e1

e3

Page 12: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Marco para Cámara

Marco de Cámara:

Suponiendo que Mc es ortonormal: Una matriz Pm×n es ortogonal si sus columnas son vectores ortonormales en !m. Para una matriz ortonormal P se cumple PPT=I. Las hileras y las columnas de dicha matriz forman bases ortonormales de !m.

1 0 0 00 1 0 00 0 1 00 0 0 1

⎢⎢⎢⎢

⎥⎥⎥⎥

ω1

ω 2

ω3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=u v w ow

0 0 0 1

⎣⎢⎢

⎦⎥⎥

c1

c2

c3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=Mc ow

0T 1

⎣⎢⎢

⎦⎥⎥c

c =Mc

−1 −Mc−1ow

0T 1

⎣⎢⎢

⎦⎥⎥

ω1

ω 2

ω3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

c =Mc

T −McT ow

0T 1

⎣⎢⎢

⎦⎥⎥

ω1

ω 2

ω3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

u v w ow

⎡⎣

⎤⎦

Page 13: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

TransformaciónMundo → Cámara

Usando la Regla de Cramer: ( ) ( ) ( ), , ,a b c b c a c a b´ = ´ = ´

Tomando el Punto :

v = ow + au + bv + c w

001

⎢⎢⎢

⎥⎥⎥= u v w⎡⎣ ⎤⎦

c1

c2

c3

⎢⎢⎢⎢

⎥⎥⎥⎥

010

⎢⎢⎢

⎥⎥⎥= u v w⎡⎣ ⎤⎦

b1

b2

b3

⎢⎢⎢⎢

⎥⎥⎥⎥

100

⎢⎢⎢

⎥⎥⎥= u v w⎡⎣ ⎤⎦

a1

a2

a3

⎢⎢⎢⎢

⎥⎥⎥⎥

D = u, v × w( ) = 1

a1 = α , b × c( ) = 1 0 0⎡⎣ ⎤⎦

T, u

a2 = a , t × c( ) = 1 0 0⎡⎣ ⎤⎦

T, v

a3 = a , b × t( ) = 1 0 0⎡⎣ ⎤⎦

T, w

b1 = α , b × c( ) = 0 1 0⎡⎣ ⎤⎦

T, u

b2 = a , t × c( ) = 0 1 0⎡⎣ ⎤⎦

T, v

b3 = a , b × t( ) = 0 1 0⎡⎣ ⎤⎦

T, w

c1 = α , b × c( ) = 0 0 1⎡⎣ ⎤⎦

T, u

c2 = a , t × c( ) = 0 0 1⎡⎣ ⎤⎦

T, v

c3 = a , b × t( ) = 0 0 1⎡⎣ ⎤⎦

T, w

t = 0 0 0⎡⎣ ⎤⎦

T− ow ow

t = 0 0 0⎡⎣ ⎤⎦T− ow = o1

u + o2v + o3

w

o3 = a , b × t( ) = −ow , w

o2 = a , t × c( ) = −ow , v

o1 = t , b × c( ) = −ow , u

Page 14: Proyecciones - turing.iimas.unam.mxturing.iimas.unam.mx/.../SLDS/Clase_GxC_06.pdf · Proyecciones Coordenadas Mundo Coordenadas Plano Dispositivo Coordenadas Cámara!2!3!3 Coordenadas

Edgar Garduño Ángeles C. Computación, I.I.M.A.S.

Proceso de Rendering

CoordenadasMundo

Transformación M→C

CoordenadasPlano Dispositivo

CoordenadasCámara

!3!3!2

CoordenadasPlano Proyección

Z2

Transformación C→P

c =Mc

T −McT ow

0T 1

⎣⎢⎢

⎦⎥⎥

ω1

ω 2

ω3

1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥