• No se han encontrado resultados

Tema 3. Transformaciones geométricas

N/A
N/A
Protected

Academic year: 2021

Share "Tema 3. Transformaciones geométricas"

Copied!
13
0
0

Texto completo

(1)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Tema 3: Transformaciones Geom´

etricas

J. Ribelles

SIE020: S´ıntesis de Imagen y Animaci´on Institute of New Imaging Technologies, Universitat Jaume I

(2)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Contenido

1 Introducci´on 2 Transformaciones b´asicas Traslaci´on Escalado Rotaci´on 3 Concatenaci´on de Transformaciones

4 Matriz de Transformaci´on de la Normal

5 Giro alrededor de un Eje arbitrario

(3)

Introducci´on

Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Introducci´

on

¿Por qu´e las necesitamos?

En la etapa de modelado los objetos se definen bajo un sistema de coordenadas propio.

A la hora de crear una escena, estos objetos se incorporan bajo un nuevo sistema de coordenadas conocido como sistema de

coordenadas del mundo.

Este cambio de sistema de coordenadas es necesario y se realiza

(4)

Introducci´on

Transformaciones b´asicas

Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL Traslaci´on Escalado Rotaci´on

Transformaciones b´

asicas

Traslaci´on

Consiste en desplazar el punto p= (px,py,pz) mediante un vector

t = (tx,ty,tz) de manera que el nuevo puntoq= (qx,qy,qz):

qx =px+tx, qy =py+ty, qz =pz+tz (1)

La representaci´on matricial con coordenadas homog´eneas:

T(t) =T(tx,ty,tz) =     0 0 0 tx 0 0 0 ty 0 0 0 tz 0 0 0 1     (2)

Utilizando esta representaci´on, el nuevo punto se obtiene as´ı:

˜

(5)

Introducci´on

Transformaciones b´asicas

Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Traslaci´on

Escalado

Rotaci´on

Escalado

Consiste en multiplicar el puntop= (px,py,pz) con los factores de

escalasx,sy ysz de tal manera que el nuevo puntoq= (qx,qy,qz):

qx =px·sx, qy =py ·sy, qz =pz·sz (4)

La representaci´on matricial con coordenadas homog´eneas:

S(s) =S(sx,sy,sz) =     sx 0 0 0 0 sy 0 0 0 0 sz 0 0 0 0 1     (5)

Utilizando esta representaci´on, el nuevo punto se obtiene as´ı:

˜

(6)

Introducci´on

Transformaciones b´asicas

Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Traslaci´on Escalado

Rotaci´on

Rotaci´on

Gira un punto un ´anguloφalrededor de un eje.

La representaci´on matricial con coordenadas homog´eneas:

Rx(φ) = 0 B @ 1 0 0 0 0 cosφ −sinφ 0 0 sinφ cosφ 0 0 0 0 1 1 C A (7) Ry(φ) = 0 B @ cosφ 0 sinφ 0 0 1 0 0 −sinφ 0 cosφ 0 0 0 0 1 1 C A (8) Rz(φ) = 0 B @ cosφ −sinφ 0 0 sinφ cosφ 0 0 0 0 1 0 0 0 0 1 1 C A (9)

Utilizando esta representaci´on, el nuevo punto se obtiene as´ı:

˜

(7)

Introducci´on

Transformaciones b´asicas

Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Traslaci´on Escalado

Rotaci´on

Ejercicio

Determina las transformaciones que situan al cono que se muestra en la

figura (a) (radio de la base y altura uno) en la posici´on que se muestra

en la figura (b) (radio de la base uno y altura tres).

(8)

Introducci´on Transformaciones b´asicas

Concatenaci´on de Transformaciones

Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Concatenaci´

on de Transformaciones

Descripci´on

Las transformaciones geom´etricas en su forma matricial con

coordenadas homog´eneas se pueden concatenar.

Una sola matriz puede representar a toda una secuencia de matrices

de transformaci´on.

Es muy importante operar la secuencia de transformaciones en el orden correcto ya que el producto de matrices no posee la propiedad conmutativa.

Dibuja en el papel como quedar´ıa una esfera de radio unidad centrada en el origen dadas las dos siguientes matrices de

transformaci´onT(5,0,0) yS(5,5,5) si las matrices se multiplican de las dos formas posibles, es decir,M=T·S yM=S·T.

(9)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones

Matriz de Transformaci´on de la Normal

Giro alrededor de un Eje arbitrario Transformaciones en OpenGL

Matriz de Transformaci´

on de la Normal

Descripci´on

La matriz de transformaci´on no siempre es v´alida para los vectores

normales a la superficie.

Lo habitual es que la matriz de transformaci´on de la normalN sea la

traspuesta de la inversa de la matriz de transformaci´on.

Sin embargo, la matriz inversa no siempre existe por lo que se recomienda que la matrizNsea la traspuesta de la matriz adjunta. Como la normal es un vector y la traslaci´on no le afecta, y el escalado y la rotaci´on son transformaciones afines, solo hay que calcular la adjunta de los 3x3 componentes superior izquierda.

Las longitudes de las normales no se preservan si hay una

(10)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal

Giro alrededor de un Eje arbitrario

Transformaciones en OpenGL

Giro alrededor de un Eje arbitrario

Descripci´on

Seand yφel vector unitario del eje de giro y el ´angulo de giro.

Hay que calcular una base ortogonal que contenga a d.

La idea es hacer un cambio de base entre la base que forman los ejes de coordenadas y la nueva base.

X Y Z d e f Y Z d e f R

(11)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal

Giro alrededor de un Eje arbitrario

Transformaciones en OpenGL C´alculo de la matriz R

La matriz que representa al cambio de base es esta:

R=   dx dy dz ex ey ez fx fy fz   (11)

e es un vector unitario normal ad.

f es el producto vectorial de los otros dos vectoresf =d×e

El vector ese puede obtener de la siguiente manera:

Partiendo del vectord haz cero su componente de menor magnitud. Intercambia los otros dos componentes y niega uno de ellos. Normal´ızalo.

Teniendo en cuenta queR es ortogonal, la matriz de rotaci´on final:

(12)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario

Transformaciones en OpenGL

Transformaciones en OpenGL

La librer´ıa GLM

Proporciona funciones tanto para la construcci´on de las matrices de

transformaci´on como para operar con ellas:

mat4 translate (floattx, floatty, floattz) mat4 scale (floatsx, float sy, float sz) mat4 rotate (floatα, floatx, float y, floatz)

// P a r a o b t e n e r l a m a t r i z de t r a n s f o r m a c i o n d e l m o d e l o mat4 T , S , M; T = t r a n s l a t e ( 1 0 . 0 f , 0 . 0 f , 0 . 0 f ) ; S = s c a l e ( 2 . 0 f , 2 . 0 f , 2 . 0 f ) ; M = T∗S ; // P a r a o b t e n e r l a m a t r i z n o r m a l N mat3N (mat3( t r a n s p o s e ( i n v e r s e (M) ) ) ) ;

(13)

Introducci´on Transformaciones b´asicas Concatenaci´on de Transformaciones Matriz de Transformaci´on de la Normal Giro alrededor de un Eje arbitrario

Transformaciones en OpenGL

¿D´onde calcular las matrices?

La construcci´on de ambas matrices, la matriz de transformaci´on del

modelo y la matriz de transformaci´on de la normal, es conveniente que

tenga lugar en la aplicaci´on y que ambas se suministren al procesador de

v´ertices.

Listado 1: Shader para transformar la posici´on y la normal de cada v´ertice

u n i f o r m mat4M; // m a t r i z de t r a n s f o r m a c i o n d e l m o d e l o u n i f o r m mat3N ; // m a t r i z de t r a n s f o r m a c i o n de l a n o r m a l i n v e c 3 p o s i c i o n , v N o r m a l ; o u t v e c 3 n o r m a l ; v o i d main ( ) { n o r m a l = n o r m a l i z e (N∗v N o r m a l ) ; g l P o s i t i o n = M∗v e c 4( p o s i c i o n , 1 . 0 ) ; }

Referencias

Documento similar

Estos resultados fueran estendidos para la familia de Bonnet, que es una clase de superficies m´ıninas de R 3 que contiene la superficie de Enneper y o catenoide. (Lemes,

Aunque se anunció que no se realizarían juicios contra los miembros de la vencida Guardia Nacional, con la llegada de las nuevas autoridades nicaragüenses se

De esta forma, el diálogo sobre las diversas experiencias de vida alrededor de la transición a la institucionalización permitió movilizar las transformaciones del cuidado, por

Este factor esencial es el que ha permitido que, pa- radójicamente, sus concepciones sobre el servicio público sigan te- niendo hoy en día la fuerza y capacidad de influencia en

Las reglas de dise˜ no de la arquitectura von Neuman contin´ uan vigentes hoy en d´ıa para la construcci´ on de ordenadores: la unidad de control y la unidad aritm´etico-l´

En el caso de la transformada de Hilbert (l-dimen- sional) o en cualquier transformada de Riesz ( n-dimensional), la condición tambien es suficiente.. Un razonamiento

Reduce su campo de análisis al estudio de un aspecto del comportamiento individual, esto es, a la conducta de optimización, sin contemplar considera- ciones históricas y sociales,

Transformaciones de un núcleo de veraneo: Sangenjo (Pontevedra) VIDAL DOMINGUEZ, M.a JESUS Estudios Geográficos; May 1, 1980; 41, 159;