Sei sulla pagina 1di 28

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computacin Lecturas en Ciencias de la Computacin

ISSN 1316-6239

Introduccin a la Visualizacin 3D
Prof. Rhadams Carmona

ND 2008-02

Centro de Computacin Grfica Caracas, Enero 2008.

Introduccin a la Computacin Grfica


Prof. Rhadams Carmona

rcarmona@ ciens.ucv.ve Universidad Central de Venezuela. Facultad de Ciencias. Escuela de Computacin. Centro de Computacin Grfica Venezuela. Caracas Apdo. 47002, 1041-A.

ND 2008-02

Resumen Este trabajo busca introducir al estudiante al mundo de la computacin grfica tridimensional, enseando conceptos fundamentales como espacio vectorial, coordenadas homogneas, trasformaciones afines, proyecciones, y dems transformaciones necesarias para visualizar un objeto tridimensional definido por polgonos.

Palabras claves: visualizacin 3d, pipeline grfico, transformaciones afines, coordenadas homogneas.

Enero, 2008

1.- Introduccin
El despliegue de una imagen tridimensional en un dispositivo grfico bidimensional, conocido como proceso de visualizacin, tiene asociado varias transformaciones, que son deducidas de una manera natural, y combinadas como un producto de matrices, trabajando sobre el espacio proyectivo (extensin del espacio euclidiano) y el plano proyectivo (extensin del plano euclidiano). Para describir cmo se realiza este proceso, es necesario conocer ciertos conceptos bsicos, que sern utilizados a lo largo de este trabajo: espacio vectorial, espacio de puntos, espacio afn, espacio euclidiano, combinaciones baricntricas y transformaciones afines. Esto nos permitir la introduccin de aspectos de la geometra proyectiva, tales como el plano y espacio proyectivo, coordenadas homogneas, y las transformaciones afines en trminos proyectivos, para culminar con la descripcin de del proceso completo de visualizacin.

2.- Conceptos Bsicos


2.1) Espacio vectorial Un espacio vectorial o lineal V sobre R es un conjunto que es cerrado bajo combinaciones lineales con coeficientes reales. Los elementos de V son llamados vectores, y los coeficientes escalares [BOE94]. La operacin suma de vectores cumple con ciertas propiedades: es conmutativa, asociativa, existe el elemento neutro (un elemento comnmente denotado por 0, tal que para todo vector v, v + 0 = v ), y existe para cada vector v su inverso (generalmente expresado como -v, tal que v + (-v ) = 0 ). La multiplicacin de vectores por escalares cumple con: ( . .v) = .( .v) , 1.v = v , ( + ).v = .v + .v , y .( v + w) = .v + .w , donde , son escalares, y v, w son vectores en V.

2.2) Base y dimensin de un espacio vectorial

Sean a1 , a2 , ..., ar , r vectores del espacio vectorial V. Se dice que estos vectores son linealmente dependientes (L.D.) si existen escalares 1 , 2 , ..., r no todos nulos tal que

.a
i =1 i

=0.

Por el contrario son linealmente independientes (L.I.) si se cumple que

.a
i =1 i

= 0 =( 1 , 2 , ..., r )=0.

El conjunto de los vectores v V formados por todas la combinaciones lineales de a1 , a2 , ..., ar es un subespacio de V. La dimensin de V (dim(V)) es el mximo nmero de vectores linealmente independientes en V. Los vectores que definen la dimensin de V: a1 , a2 , ..., an , forman una base para el espacio V, de tal manera que cualquier vector v V se puede expresar como combinacin lineal de stos. v V =( 1 , 2 , ..., n ) :
2.3) Espacios de puntos

.a
i =1 i

= v.

El mundo puede ser visto como un espacio de puntos. Estos puntos estn relacionados de manera natural con un espacio lineal: dos puntos estn conectados por un vector (la resta de los puntos b y a es el vector v que va de a hacia b), y un vector sumado a un punto es un punto. De aqu derivamos: v = ba y b = a+v

Como v es un vector, puede ser expresado como combinacin lineal de n vectores, entonces b puede expresarse como: b = a + i .ai
i =1 n

2.4) Espacio Afn:

De la seccin 1.3, el conjunto de puntos b, con b = a + i .ai , obtenidos a partir de


i =1

todos los = (1 , 2 , ..., n ) R es llamado espacio afn A (dado que la transformacin


n

es afn) mientras que el espacio generado por los vectores a1 , a2 , ..., an , i.e.

.a , es un
i =1 i i

espacio vectorial que denominamos V (dado que la transformacin es lineal, i.e. el 0 lleva al 0). La dimensin de A es igual a la dimensin de V. Un punto a A, junto con una base a1 , a2 , ..., an V , forman un sistema afn en A. El punto a es referido como el origen en A, mientras que los i (i=1,2,..,n) son llamados coordenadas afines del punto b, respecto a los vectores a1 , a 2 , ..., a n .

Una recta o lnea afn es representado por todos los puntos q = b + t.b1 , en donde b es un punto, b1 un vector (vector director de la recta), y t R . Esta ecuacin es mejor conocida como la ecuacin paramtrica de la recta. Un plano afn es representado por todos los puntos q = b + t1 .b1 + t 2 .b2 , con: b1,b2 vectores linealmente independientes, b un punto, y t1, t2 escalares. Esta ecuacin es llamada ecuacin paramtrica del plano. Similarmente, un espacio tridimensional afn es representado por q=b +
2.5) Espacio Euclidiano (o Eucldeo):

ti .bi
i =1

Es un espacio afn A, con la particularidad de que los vectores a1 , a 2 , ..., a n del sistema afn son ortonormales. Este sistema afn con vectores ortonormales es denominado sistema cartesiano. El espacio Euclidiano de dimensin n se denota por En. En este espacio, se define la distancia entre dos puntos de la siguiente manera. Sean dos puntos p=( p1 , p2 ,...pn ) y q=( q1 ,q2 ,...qn ); la distancia d(p,q) entre los puntos p y q es determinada por: d ( p, q ) =

( qi pi ) 2
i =1

a a v=ba b a+b b
Figura 1: Resta y suma de puntos. Note que la resta ba est geomtricamente definida como el vector que parte del punto a y llega a b. Sin embargo, la suma depende de la ubicacin del origen en el sistema de coordenadas, por lo que no est definida.

Esta distancia es la longitud del vector v (v=qp) que va del punto p al punto q. Similarmente, la norma 2 del vector v (longitud de v) con v=( v1 ,v2 ,...vn ), viene dada por:
2 2 v = < v, v > = v12 + v 2 + ... + v n =

(q
i =1

pi ) 2

La resta de dos puntos ba est definida independientemente del sistema de coordenadas que se utilice (siempre ser el vector que parte de a y llega a b). Sin embargo, la suma de dos puntos no es siempre la misma, por depender del sistema de coordenadas utilizado; por lo tanto, no est definida (ver Fig. 1).

2.6) Combinaciones baricntricas

Vimos que la suma de puntos no est definida por depender del sistema de coordenadas utilizado. Sin embargo, la combinacin baricntrica (suma ponderada de puntos en E3) no depende del sistema de coordenadas, se deriva de la hiptesis que un vector es la resta de dos puntos. Sea el espacio afn En. Este espacio tiene asociado un espacio lineal V con base a1 , a2 , ..., an . Un vector v En puede expresarse como la resta de dos puntos a y p: v=pa. As, el punto p puede expresarse como p=a+v (un punto sumado a un vector). Expresando v como combinacin lineal de los vectores a1 , a2 , ..., an , tenemos que: p = a + 1a1 + 2 a2 + ... + n .an . Se puede demostrar que existe el conjunto de puntos {p1, , pn} tal que podemos expresar los vectores de la base como ai=pia, con i=1,2,...,n. As, p=a+1.( p1 a)+ 2.( p2 a)+ ... + n .( pn a) . Luego, p=[1 (1+ 2+...+ n )]a+1 p1+ 2 p2+...+ n pn . p = i . pi
i =1 n

Si

definimos

i =1

= 1,

entonces, podemos expresar p como una combinacin baricntrica de la forma:

Los valores 1 , 2 , ..., n son llamados las coordenadas baricntricas del punto p respecto a los puntos p1 , p2 , ..., pn . Un caso interesante resulta la combinacin baricntrica convexa en donde se debe cumplir adems que: i=1,...,n: 0i1 de donde se desprende el concepto de cpsula convexa (conjunto formado por todas las combinaciones convexas de un conjunto de puntos). Por ejemplo, el conjunto de todos los puntos dentro de un tringulo con vrtices p1, p2, p3, es el resultado de todas las combinaciones baricntricas convexas de dichos vrtices (ver Fig. 2). La interpolacin lineal entre dos puntos a y b tambin es una combinacin baricntrica convexa, y se expresa como f(t) = (1t).a + t.b, con t [0,1]. Variando t en [0,1] se

obtienen todos los puntos del segmento de recta delimitado por a y b. Fcilmente se prueba que si denominamos 0=(1t) y 1=t, se cumplen las hiptesis 0+1=1 y 0i i1 (Ver Fig. 3). p1
b=f(1)

p2 P3 1/3(p1+ p2+ p3)

c=f(1/2) a=f(0)

Figura 2: Cpsula convexa de un tringulo. En general, Cualquier punto interno de un polgono convexo puede ser expresado como una combinacin baricntrica convexa de sus vrtices. La figura muestra la obtencin del centro del tringulo, tomando i=1/3.

Figura 3: La interpolacin lineal es la interpolacin baricntrica convexa de dos puntos.

2.7) Transformaciones afines

Consideremos dos espacios afines A y B de dimensiones n y m respectivamente. Una funcin : A B es afn si mantiene la combinacin baricntrica invariante. De manera ms precisa, si contamos con la combinacin baricntrica p = i . pi , con
i =0 n

i =0

=1

y los pi (i=0,...,n) son puntos en A, entonces, es afn si

(p) = ( xi . pi ) (p) =
i =0

xi . ( pi ) .
i =0

Se puede demostrar que cualquier transformacin de la forma T()=A3x33x1+b3x1 es una transformacin afn. A continuacin se detallan algunas transformaciones afines entre el plano Euclideo y s mismo.
a) Traslacin: La traslacin de un punto P(x,y) consiste en mover el punto segn un desplazamiento T(dx, dy): dx respecto al eje x, y dy respecto al eje y, obteniendo un nuevo punto P'(x',y'). As, la traslacin puede escribirse como:

(P ) = P ' = P + T ,

explcitamente dy y + y' =

x'

dx

Demostremos que en efecto la traslacin es una transformacin afn. Partiendo de la definicin, definamos p como p = i . pi , con
i =0 n

i =0

= 1 . Entonces:
n n

( p) = ( i pi ) = i pi + T = i pi + 1T = i . pi + ( i )T =
i =1 i =1 i =1 i =1 i =1

p + T = p + T = ( p + T ) = ( p )
i =1 i i i =1 i i =1 i i i i =1 i i i =1 i i

Por ejemplo, si tenemos un cuadrado (en el plano), se desplazan todos sus puntos segn dx y dy. No es necesario realizar la transformacin sobre todos los puntos del cuadrado; basta con trasladar los vrtices del mismo y luego redibujar las lneas (interpolacin lineal). Esto es vlido para las otras transformaciones afines que veremos posteriormente.

b) Escalamiento: Objetos pueden ser escalados (estrechados o estirados) segn un factor sx respecto al eje x, y sy respecto al eje y. x ' s x 0 x P'= S(sx, sy)*P, explcitamente y' = . 0 s y y

La Fig. 4 muestra que el cuadrado original fue estrechado por sx=0.5 y sy=0.5.
y 4 3 2 1 x 1 2 3 4 1 2 3 4 escalamiento 4 3 2 1 x y

Figura 4: Efecto del escalamiento

c) Rotacin: Un punto puede ser rotado respecto al origen en un ngulo . Esta transformacin de define matemticamente como:

x' = x.cos - y.sen, y' = x.sen + y.cos y en forma matricial como:

&1

x ' cos P ' = R ( ) * P , y explcitamente como y' = sen

sen x cos y

Esta ecuacin puede derivarse con la ayuda de la Fig. 5, en la que una rotacin transforma un punto (x,y) en (x',y'). Por simple trigonometra se puede obtener: r = x/cos, r = y/sen cos(+) = cos.cos - sen.sen sen(+) = cos.sen - sen.cos x' = r.cos(+), y' = r.sen(+) sustituyendo &3 y &4 en &5 y obtenemos x' = r.cos.cos - sen.sen, y' = r.cos.sen - sen.cos &6 &2 &3 &4 &5

Finalmente se sustituye &2 en &6 y se obtiene &1. Es importante sealar la traslacin es tratada de manera diferente, por tener asociada una suma de dos vectores, mientras que el escalamiento y la rotacin, un producto matriz por vector.

P(x',y') r P(x,y) r.cos


Figura 6: Pista de rieles tal y como la vemos. Note que se pierden propiedades eucldeas como paralelismo entre rectas, congruencia de segmentos y ngulos.

r.cos(+)

Figura 5: Derivacin de la ecuacin de rotacin

3.- Geometra Proyectiva


La geometra proyectiva es una extensin de la geometra Euclidiana, y como consecuencia las transformaciones en la geometra proyectiva no slo son ms poderosas, sino adems, ms eficientes y fciles de combinar [PIE88, PAT90, FIS92]. La geometra Euclidiana estudia la forma de los objetos tal como son. Especficamente, estudia las propiedades (congruencia de segmentos, de ngulos, y paralelismo) que se mantienen inalterables luego de realizar ciertas transformaciones (rotacin, traslacin, etc.) sobre los objetos planares o slidos. La geometra proyectiva estudia el cmo los objetos son vistos. Por ejemplo, los rieles de un ferrocarril pueden verse o representarse

como dos lneas paralelas atravesadas por muchos segmentos perpendiculares a stas. Sin embargo, cuando vemos los rieles hacia el horizonte, las lneas paralelas tienden a encontrarse (ver Fig. 6). Ntese que las lneas de los rieles que son paralelas, parecen encontrarse (prdida de paralelismo). Igualmente, entre los segmentos que van de riel a riel, se tiene una distancia uniforme, que parece reducirse cada vez, al igual que el tamao de los segmentos (se pierde la congruencia de segmentos). Adems, los ngulos entre los segmentos y los rieles son en realidad de 90o, aunque aparentan que no (prdida de congruencia de ngulos). Por lo tanto, las longitudes, ngulos, paralelismo y forma, pueden distorsionarse al ver los objetos. En pinturas artsticas podemos distinguir dos aspectos de la comunicacin visual: el primero es el realismo que se trata de comunicar (geometra euclidiana), y otro aspecto es cmo lo comunica (geometra proyectiva). A continuacin se presenta un modelo de perspectiva, y las implicaciones que este modelo trae, que conjuntamente con otras ideas nos conlleva a definir de una manera natural, la geometra proyectiva, as como el espacio donde se aplica (espacio proyectivo).

Ojo Imagen Objeto Plano imagen


Figura 7: Modelo fsico de perspectiva

En perspectiva, los artistas tratan de representar la realidad (tres dimensiones), en un lienzo (dos dimensiones). Un modelo para el estudio de la perspectiva puede consistir de un objeto en el espacio, un plano imagen, y un ojo opuesto al objeto respecto al plano imagen (ver Fig. 7). Hay una natural correspondencia entre los puntos del objeto y los puntos de la imagen, por asociar a cada punto P del objeto, un punto proveniente de la interseccin de la recta que pasa por P y el ojo, con el plano imagen. Un modelo fsico ms sencillo para el estudio de la perspectiva puede consistir en un objeto bidimensional que yace en un plano (plano objeto), un plano imagen y el ojo del lado opuesto al objeto segn el plano imagen (ver Fig. 8). El objeto 2D que se visualiza son los rieles de un tren. El punto de desvanecimiento (p.d.) es el punto en donde dos lneas paralelas del objeto se encuentran en el plano imagen. Los puntos ms lejanos del objeto (desde el ojo) se asocian a los puntos ms cercanos al punto de desvanecimiento.

La lnea de desvanecimiento (l.d.) es la recta formada por la interseccin del plano imagen con el plano que pasa por el ojo y paralelo al plano objeto.

p.d.

l.d. ojo

m plano objeto

plano imagen

Figura 8: Modelo planar de perspectiva

Por la ubicacin del objeto respecto al plano imagen y el ojo en el modelo, nos interesa trabajar con un semi-plano del plano objeto (semi-plano donde yace el objeto), y la banda del plano imagen delimitada por la recta l.d. y la recta de interseccin entre el plano objeto y el plano imagen. Para hacer un estudio de las transformaciones que se realizan sobre el objeto, resulta ms natural y cmodo trabajar con el plano objeto e imagen, y no con semiplanos, por lo que se tiene que extender la correspondencia entre puntos del objeto y puntos de la imagen, a puntos del plano objeto con puntos del plano imagen. Desafortunadamente esta correspondencia no est definida para todos los puntos del plano objeto. Para cualquier punto P sobre la recta m, la transformacin no est definida, ya que la recta que pasa por P y el ojo es paralela al plano imagen, y por tanto no tiene imagen en la transformacin. Similarmente, no hay puntos en el plano objeto que se correspondan con la lnea de desvanecimiento. Este dilema se resuelve introduciendo puntos ideales (o puntos en el infinito) en los planos objeto e imagen. Estos puntos ideales surgen para lograr la correspondencia uno a uno entre ambos planos, y no yacen en el plano euclideano. Los puntos que s estn sobre el plano euclideano son llamados puntos ordinarios. Ahora tenemos que el plano proyectivo es un plano euclideano (puntos ordinarios) ms puntos ideales.

3.1 Plano Proyectivo

El hecho de que en la perspectiva, dos rectas paralelas tiendan a encontrarse, es algo que no corresponde con la geometra euclidiana. Si consideramos en el modelo de proyeccin dos lneas paralelas, estas lneas se encuentran en un punto en el infinito. Si se considera otra recta paralela a las anteriores, las tres rectas se encontrarn en el mismo punto. Para cada familia de rectas paralelas en el plano, se aade un nuevo punto (punto ideal).

La relacin de paralelismo entre rectas es una relacin de equivalencia (reflexiva, simtrica y transitiva). La relacin divide el conjunto de todas las rectas en el plano en clases de equivalencias mutuamente excluyentes. Cada clase contiene el total de rectas paralelas segn un vector director. Para cada clase aadimos un punto al plano euclideano. El punto aadido (punto ideal) se apoya en cada una de las lneas de la clase, ms no en alguna otra lnea. Tambin se aade una lnea al plano euclideano; todos los puntos ideales aadidos se apoyan sobre esta lnea, pero ningn punto ordinario (punto del plano euclideano) se apoya sobre la misma. Las lneas originales del plano euclideano son llamadas lneas ordinarias; la nueva lnea es llamada lnea ideal, y el sistema resultante de puntos y lneas ordinarias, y puntos ideales y lnea ideal es llamado plano proyectivo.

3.2.- Espacio Proyectivo

En el caso planar, el conjunto de todas la lneas en el espacio pueden ser subdivididas en clases de equivalencias, en donde cada clase contiene todas las lneas paralelas segn un vector director. Todas las lneas de una clase de equivalencia dada tienen el mismo punto ideal asociado. El conjunto de todos los puntos ideales en el plano proyectivo forman una lnea ideal. Ahora, podemos extender la idea anterior a tres dimensiones. Dos rectas paralelas, tienen el mismo punto ideal asociado. Igualmente dos planos paralelos comparten una misma lnea ideal. As, podemos formar clases de equivalencias, en donde cada clase est formada por todos los planos paralelos, asociados a un vector normal, y tienen la misma lnea ideal. Si tomamos la lnea ideal de cada clase de equivalencia, y agrupamos todas estas lneas ideales, obtenemos un plano ideal asociado al espacio euclideano E3. Los puntos, lneas y planos originales (del espacio euclideano) son denominados ordinarios. Los puntos y lneas del plano ideal, son tambin ideales. As, el sistema resultante de puntos, lneas y planos, ordinarios e ideales, es llamado espacio proyectivo.

3.3.- Coordenadas Homogneas en el plano y espacio proyectivo

Inicialmente, enfocaremos el concepto de coordenadas homogneas sobre el plano proyectivo, y luego se har una extensin para el espacio proyectivo. Recordemos que el plano proyectivo es el espacio euclideano completado con una lnea ideal (formada por puntos ideales o en el infinito). Los puntos del espacio euclideano pueden ser representados en coordenadas cartesianas como (x,y), pero los puntos ideales no. Por lo tanto, es necesario utilizar un sistema de coordenadas que permita describir todos los puntos del plano proyectivo; este es el sistema de coordenadas homogneas. A continuacin se dan una serie de definiciones bsicas, para luego definir coordenadas homogneas.

Definicin 1: El conjunto RP2 es el conjunto de todas las tripletas [p]=[p1,p2,p3], donde p=(p1,p2,p3) est en R3-{(0,0,0)}. Dos de tales tripletas [p1,p2,p3] y [q1,q2,q3] son consideradas iguales si y slo si existe una constante real k tal que:

p1 = k.q1, p2 = k.q2, p3 = k.q3 Ejemplo: Los puntos [1,2,3] y [2,4,6] son iguales tomando k=0.5. De aqu se desprende que para una tupla p cualquiera en el espacio proyectivo, se pueden obtener infinitos puntos equivalentes a l en dicho espacio (ver Fig. 9).

q=k.p

Figura 9: Puntos equivalentes a p. Variando k en R{0} obtenemos todos los puntos equivalentes a p en el plano proyectivo.

Definicin 2: Un vector (q1,q2,q3) es un representante de [p1,p2,p3] si y slo si [p1,p2,p3] = [q1,q2,q3].

Ejemplo: El vector (1,2,3) es representante de [2,4,6] ya que [1,2,3] y [2,4,6] son iguales segn la Def. 1.
Proposicin 1: El vector (q1,q2,q3) es un representante de [p1,p2,p3] si y slo si existe una constante real k tal que (p1,p2,p3)=k.( q1,q2,q3). Proposicin 2: Hay una natural descomposicin de RP2 en dos conjuntos disjuntos:

RP2 = {[p1,p2,1] RP2} U {[ p1,p2,0] RP2} Demostracin: Para cada [q1,q2,q3] RP2 tenemos: caso 1: q3 = 0 [q1,q2,q3] = [q1,q2,0] {[ p1,p2,0] RP2}

caso 2: q3 0 [q1,q2,q3] = [q1/q3, q2/q3,1] {[ p1,p2,1] RP2}

3.4 Correspondencia entre RP2 con el plano proyectivo

Estudiaremos la correspondencia del plano proyectivo con RP2 en dos etapas: la correspondencia entre el plano euclideano con RP2, y la correspondencia entre los puntos ideales y RP2.
a) Hay una correspondencia uno a uno entre un punto (x,y) del plano euclideano estndar con un punto (x,y,1) en el plano z=1, y cada punto (x,y,1) del plano z=1 con un punto [x,y,1] {[p1,p2,1] RP2} (ver Fig. 10). Igualmente, un punto [q1,q2,q3] {[p1,p2,1]RP2} se asocia con las coordenadas cartesianas (q1/q3, q2/q3) si q30.
z

(0,0,1) P(x,y,z)

Figura 10: Coordenadas sobre el plano Euclideano z=1 b) Sea el conjunto R(a,b) de todas las rectas cuyo vector director es (a,b) en el plano Euclideano estndar. Todas estas rectas son paralelas, pero en el plano proyectivo se cortan en un punto. Se hace una correspondencia uno a uno de los puntos del plano euclideano estndar con los punto en el plano z=1, de tal forma que (x,y) se transforma en (x,y,1). Tomaremos del plano z=1 la recta m que pasa por (x0,y0,1) imagen de la recta m' R(a,b) que pasa por el punto (x0,y0). Su ecuacin paramtrica viene dada por:

{ pt : pt(a.t+x0, b.t+y0, 1) R3, t R } Para cada punto pt(a.t+x0, b.t+y0, 1) sobre m tenemos la siguiente correspondencia uno a uno denominada H: H(pt) = [a.t+x0, b.t+y0, 1] = [a + x0/t, b + y0/t, 1/t] El punto ideal Pab asociado a la recta m, es el punto de corte en el infinito asociado a todas las rectas paralelas a m. El punto ideal se obtiene cuando t. As:

Lim H ( Pt ) = Lim [a +
t t

x0 y , b+ 0 , 1/t ] = [a,b,0] t t

Por lo tanto, el punto ideal asociado a todas las rectas con vector director (a,b) del plano Euclideano estndar, y del plano Euclideano z=1, se representan en RP2 como [a,b,0]. De la correspondencia entre RP2 y el plano proyectivo, surge la definicin de coordenadas homogneas.
Definicin 2.3: Las coordenadas homogneas [p1,p2,p3] de un punto P en el plano proyectivo estndar son de la forma:

[x,y,1] si P es un punto cuyas coordenadas cartesianas son (x,y) [a,b,0] si P es el punto ideal asociado a todas las lneas en el plano Euclideano con vector director (a,b).

De esta manera, la descomposicin de RP2 corresponde a: RP2 = {[ p1,p2,1] RP2} U {[ p1,p2,0] RP2} = {Puntos Euclideanos} U {Puntos ideales}

Ntese que para determinar si un punto [p1,p2,p3] es ideal o euclideano, basta con determinar si p3=0 (punto ideal) p30 (punto euclideano). En la prctica, tanto los vectores como los puntos ideales se representan con la tercera componente en cero, y los puntos con la tercera componente distinta de cero. Cuando deseamos llevar un punto [x,y,z] de RP2 a R2, dividimos entre z para obtener el punto equivalente [x/z,y/z,1], y luego (x/z,y/z)R2. Para el caso de los vectores, sencillamente eliminamos la ltima componente.

3.5 Extensin al espacio proyectivo

Extendiendo todas las definiciones al espacio proyectivo, el conjunto RP3 se descompone en dos conjuntos disjuntos {[p1,p2,p3,1] RP3} U {[p1,p2,p3,0] RP3}, y los puntos [p1,p2,p3,p4] y [q1,q2,q3,q4] son iguales si existe una constante k R tal que pi = k.qi i {1,2,3,4}. Adems, las coordenadas homogneas [p1,p2,p3,p4] de un punto P en el espacio proyectivo son: [x,y,z,1] si P tiene como coordenadas cartesianas (x,y,z) [a,b,c,0] si P es un punto ideal asociado a todas las rectas paralelas con vector director (a,b,c). Igualmente, esta es la representacin de un vector en RP3.

3.6 Transformaciones afines en trminos proyectivos

A diferencia al plano Euclideano, las transformaciones afines de rotacin, traslacin y escalamiento son tratadas de manera similar (multiplicacin vector por matriz). Esto permite tratar estas transformaciones de una manera consistente y combinarlas fcilmente. La traslacin (en el plano proyectivo) puede escribirse ahora como un producto matriz por vector. La matriz asociada a la traslacin la denominaremos T(dx,dy).
x' 1 0 d x x x y ' = .0 1 d y = T (d , d ). y y x y 1 0 0 1 1 1

La matriz de escalamiento ser llamada S(sx,sy).


x' s x y ' = . 0 1 0

0 sy 0

0 x x 0 y = S ( s x , s y ). y 1 1 1

La matriz de rotacin respecto al origen en un ngulo la llamaremos R ( ) .


x' cos y ' = sen 1 0 sen

cos 0

0 x x 0 y = R( ). y 1 1 1

Extendemos la traslacin, escalamiento y rotacin al espacio proyectivo. Ahora las matrices de transformacin son 4x4 y un punto (x,y,z) en coordenadas homogneas lo representaremos como [x,y,z,1]. La matriz de traslacin la nominaremos T(dx,dy,dz), la de escalamiento S(sx,sy,sz) y la de rotacin depender al eje de rotacin: Rx() respecto al eje X, Ry() respecto al eje Y, y Rz() respecto al eje Z. 1 0 T (d x , d y , d z ) = 0 0 0 1 0 0 0 dx s x 0 0 dy S (s x , s y , s z ) = 0 1 dz 0 1 0 0 sy 0 0 0 0 sz 0 0 0 0 1

Las matriz de rotacin de grados respecto a un vector arbitrario v(x,y,z), es de mucha utilidad en el caso tridimensional. Sea u=v/|v|=(x,y,z), considere adems
0 z' y' T T A= 0 x' z' , B = uu +cos()(I uu )+ sin()A 0 y ' x'

0 1 0 cos Rx ( ) = 0 sen 0 0

0 sen cos 0

0 cos 0 0 R y ( ) = sen 0 1 0

0 sen 1 0 0 cos 0 0

0 cos sen 0 Rz ( ) = 0 0 1 0

sen cos 0 0

0 0 1 0

0 0 0 1

La matriz de rotacin de grados alrededor del vector v vienen dada por b11 b12 b b R ( , x, y, z ) = 21 22 b31 b32 0 0 b13 b23 b33 0 0 0 0 1

4.- Proceso completo de visualizacin


El proceso de visualizacin 3D consiste en todas las operaciones que conlleva el despliegue de un objeto tridimensional en un dispositivo grfico de salida. Por lo general, el objeto es concebido como una serie de tringulos, que sern procesados por un motor grfico 3D, con soporte de hardware grfico. En la Fig. 11 se muestra un tpico pipeline grfico, el cual es utilizado por el API OpenGL con soporte del hardware, pero que puede implementarse 100% por software [OPENGL]. El pipeline puede dividirse a alto nivel en 7 mdulos: a) Procesador de vrtices: desde el punto de vista geomtrico, este mdulo transforma los vrtices de la geometra al espacio de clipping. Adems, realiza transformaciones sobre los atributos del vrtice, como por ejemplo, la transformacin del color, transformaciones de las coordenadas de textura y aplicacin de un modelo de iluminacin. b) Ensamblaje de primitivas: en esta etapa se agrupan los vrtices en primitivas para pasar a la siguiente etapa. c) Cull, Clipping, Viewport y: el culling consiste en remover las primitivas traseras o frontales de objetos. El clipping significa en este caso la remocin de primitivas o de partes de primitivas que no son visibles por el ojo. El espacio de clipping puede ser pensado como el espacio de ojo, en donde las se verifican si las primitivas grficas estn dentro, fuera o parcialmente dentro de la pirmide

d)

e)

f)

g)

truncada de visualizacin. Sin embargo, 4 de los planos de la pirmide truncada son planos arbitrarios, por lo que el proceso de clipping en este espacio suele ser tedioso. Por ello, se trabaja en un espacio de clipping cbico, en donde la pirmide truncada es transformada a un cubo de lado 2, delimitado por los puntos (-1,-1,-1) y (1,1,1). Es este espacio, la verificacin de contencin de primitiva es ms manejable tanto el software como en hardware. La primitiva puede ser removida parcialmente, en cuyo caso, puede reducirse a una o varias primitivas, en donde nuevos vrtices pueden ser creados, interpolando atributos de otros vrtices. Estas primitivas son transformadas a coordenadas de dispositivo o viewport, para ser discretizadas por el mdulo de rasterizacin. Rasterizacin: es la conversin de las primitivas geomtricas en fragmentos. Cada fragmento es una unidad discreta dentro del tringulo, y se corresponde con a un pxel del buffer de la imagen (framebuffer). Aqu se interpolan los colores resultantes en los vrtices, para obtener el color inicial del fragmento. Similarmente, se interpolan los valores de profundidad para el z-buffer, coordenadas de textura, y dems atributos que sern utilizados en los operadores por el procesador de fragmento. Debido a que el fragmento puede ser modificado e incluso eliminado en los mdulos siguientes, an no se le denomina pxel. La salida de este mdulo son los datos asociados al fragmento, como color, coordenadas de textura, valor de profundidad, etc., todos obtenidos por interpolacin. Procesador de fragmentos: este mdulo combina el color con la textura y dems propiedades del fragmento, para actualizar su color. La salida principal de este mdulo es una tupla de color RGBA y una profundidad. Operadores por fragmento: antes de almacenar el fragmento en el buffer de la imagen, una serie de operaciones, incluso su eliminacin, pueden ser aplicados. El fragmento puede ser eliminado si es muy transparente o no es visible o no forma parte de la mscara del estncil. Si el fragmento pasa estas pruebas, la operacin de mezcla o blending puede ser utilizada para mezclar el color del fragmento con el ya almacenado en la imagen, y adems, podra aplicarse alguna operacin lgica o de mscara de bits sobre su color. Operaciones sobre la imagen: estas operaciones incluyen la inicializacin o borrado de la imagen, as como la seleccin del buffer a utilizar, para el caso de doble buffer o estereoscopa.

En la actualidad, las tarjetas grficas soportan mltiples unidades para procesar vrtices y fragmentos, para acelerar el tiempo de respuesta. Adicionalmente, estas unidades son programables en alto nivel, siendo muy populares los compiladores de CG (C for Graphics) y GLSL (Shading Language de OpenGL). Estos transforman el cdigo fuente escrito en C a cdigo ensamblador entendible por las unidades programables. En esta gua, se estudiar parte del mdulo geomtrico del pipeline, que se realiza en los procesadores de vrtices: transformaciones realizadas sobre el objeto y la vista, la proyeccin y la aplicacin al dispositivo o viewport. Adicionalmente se estudia el proceso de culling, ya sea por pirmide de visualizacin o frustum, y el back-face culling.

Vrtice
Geometra Procesador de Vrtices Ensamblado de Primitivas

Primitiva
Clipping, Viewport, Cull

Primitiva
Rasterizacin

Fragmento
Procesador de Fragmentos

Fragmento
Operadores por Fragmento

Fragmento
Operaciones sobre la imagen Dispositivo

Figura 11: Pipeline grfico. Por lo general, la tarjeta grfica despliega objetos representados por primitivas geomtricas, como tringulos y lneas, los cuales estn definidos por vrtices. Estos vrtices son transformados para ser aplicados al dispositivo de salida, mediante proyeccin. Las primitivas son discretizadas en puntos o fragmentos mediante la rasterizacin, en donde las propiedades de los vrtices son interpoladas, incluyendo color, posicin y coordenadas de textura. Los fragmentos que resultan de esta interpolacin son procesados para generar el color del fragmento, que luego sufren otra serie de operaciones antes de ser desplegados en la imagen. Al ser desplegados, los fragmentos pasan a llamarse pxeles, en donde sus principales atributos son el color y transparencia.

Comnmente el objeto, que yace en coordenadas objeto, es definido por un mallado de polgonos, al cual se le suelen hacer transformaciones como traslacin, escalamiento y rotaciones (transformaciones sobre el modelo). Este objeto es luego observado por el ojo desde una posicin determinada (transformacin sobre la vista), en donde se interpone un plano (plano imagen) entre el objeto y el ojo para su posterior proyeccin (Ver Fig. 12). En este momento el objeto se encuentra en coordenadas de ojo. Luego se define una pirmide truncada de visualizacin, a partir de la posicin del ojo, que indica el espacio que es visto por el visor. Las primitivas grficas (por lo general tringulos) pueden ser descartadas total o parcialmente si estn total o parcialmente fuera de este volumen. Este proceso es mejor conocido como view frustum culling, o descarte por pirmide truncada de visualizacin. Cada vrtice puede tener asociado distintas propiedades, cmo color, normal, y otros parmetros para el modelo de iluminacin. Tambin puede tener coordenadas de textura que pueden ser transformadas por una matriz 4x4, o bien, pueden ser calculadas en este mdulo, segn el valor del vrtice y otros parmetros. En coordenadas de ojo o en coordenadas objeto puede calcularse un modelo de iluminacin local en cada vrtice del mallado, cuyo color resultante va a ser utilizado en el proceso de rasterizacin. Finalmente, el objeto es proyectado sobre el plano NCP, y este a su vez aplicado al dispositivo. En resumen, estas transformaciones pueden ser estudiadas en 4 fases: a) b) c) d) Transformaciones del modelo y vista Culling Proyeccin Transformacin al viewport

4.1) Transformaciones del modelo y vista

Las transformaciones ms tpicas sobre el modelo son las de traslacin, escalamiento y rotacin. Por lo general, el objeto es centrado en el (0,0,0) del sistema de coordenadas, para realizar su escalamiento y rotacin. Si el centro del objeto es C(cx,cy,cz), los puntos del objeto son inicialmente trasladados mediante T(cx, cy, cz). M = Rotaciones * S(sx,sy,sz) * T(cx, cy, cz) La matriz denominada Rotaciones contiene nicamente rotaciones, y al igual que los escalamientos, se realizan generalmente con el objeto centrado en el origen.

Espacio objeto

Espacio ojo

Espacio de dispositivo

y x z

Transformacin modelo y vista y NCP


Ojo

FCP

u
Proyeccin y Aplicacin al viewport

-Culling -Modelo de iluminacin

Figura 12: transformaciones geomtricas del proceso de visualizacin 3D. El objeto originalmente se encuentra definido en un sistema de coordenadas denominado sistema de coordenadas objeto. Por lo general el objeto es trasladado al centro del sistema de coordenadas, para ser escalado y rotado (transformaciones sobre el modelo), y luego ubicado en una posicin donde el ojo puede verlo (transformacin sobre la vista). Tpicamente el ojo se encuentra ubicado en el origen, mirando a la direccin (0,0,1). Dos planos, uno cercano y otro lejano (NCP y FCP) y un ngulo de visin permiten la definicin de una pirmide truncada, que indica el conjunto de puntos que tienen imagen en el plano de visualizacin al momento de la proyeccin. Esto es muy til para descartar polgonos o reas que no son visualizadas. Luego, se calcula un modelo de iluminacin en los vrtices (opcional) y se proyectan sobre el NCP y este al dispositivo, en donde se realiza posteriormente la rasterizacin y las operaciones por fragmento.

Comnmente, la transformacin de la vista consiste en colocar el ojo en alguna posicin del espacio en donde pueda ver al objeto. Sin embargo, mover el ojo hacia el objeto o escena es equivalente a mover el objeto o escena hacia el ojo (dualidad). La librera grfica OpenGL permite realizar transformaciones sobre el ojo mediante glLookAt, que luego son aplicadas de manera inversa sobre el objeto o escena debido a la dualidad. En el caso de tener un nico objeto a visualizar, la transformacin sobre la vista podra ser alejar al ojo del centro (0,0,0), trasladndolo hacia (0,0,+zDist), y ponerlo a mirar hacia el (0,0,0). El valor zDist es la distancia del centro del objeto al centro de proyeccin. Por la dualidad, esto equivale a dejar el ojo fijo en el (0,0,0) mirando en la

direccin (0,0,-1) y aplicar la trasformacin inversa al objeto, trasladndolo por (0,0,zDist). De esta manera, y sin prdida de generalidad, podemos asumir que el ojo est ubicado en el centro (0,0,0) mirando en direccin (0,0,1), osea, hacia z. El objeto tambin puede ser desplazado en x y y. Por ejemplo, si proyectamos un cuerpo humano, y nos interesa visualizar los hombros en el centro de la pantalla, hacemos un desplazamiento en x, y. Entonces, podemos escribir la transformacin de la vista a ser aplicada sobre los objetos como: V=T(tx, ty, zDist). De este primer paso en el pipeline, obtenemos la matriz que en OpenGL se denomina MODELVIEW, y consiste en el producto V*M.

4.2) Culling

Es una manera efectiva para evitar procesar polgonos que no son visibles al usuario. Hay varios tipos de culling que pueden ser utilizados. Entre ellos, merecen citarse el culling de caras traseras (backface culling), culling por pirmide truncada (frustum culling), culling por portales, culling por oclusin y culling por contribucin. Tanto el backface culling como el frustum culling estn disponibles actualmente en hardware, y por lo tanto son los que detallaremos en esta gua.
Agudo descartar

Obtuso No descartar

Figura 13: Backface culling. Se muestra una imagen 2D por simplicidad. Los polgonos grises son eliminados por este culling. Las normales de los polgonos que son visibles forman un ngulo obtuso (mayor a 90) con el vector de visualizacin, mientras que los no visibles, un ngulo agudo (menor a 90). Cualquier vrtice del polgono puede ser tomado para estos clculos, ya que si un punto est back, entonces el polgono entero tambin.

a) Backface culling Supongamos que las normales de los polgonos apuntan hacia fuera del objeto, y que este es cerrado. Aquellos polgonos cuya normal van en direccin contraria del observador no

son visibles, pues otros polgonos lo ocultan (ver Fig. 13). Geomtricamente, las normales de los polgonos que son visibles forman un ngulo obtuso con el vector que sale del ojo y llega a un punto del polgono. Para evitar el clculo del arcocoseno, se determina el coseno entre los dos vectores con el producto escalar o producto punto. Si pe es algn punto del polgono en coordenadas de ojo, esto significa que: Pe Ojo , N > 0 el polgono se descarta Pe Ojo 2 Dado que el ojo tiene coordenadas (0,0,0), las coordenadas de PeOjo son las mismas coordenadas de Pe. b) Frustum culling La pirmide puede definirse por un ngulo y dos planos: el Near Clipping Plane o NCP, y el Far Clipping Plane o FCP. El ngulo define la apertura del lente de una cmara, o igualmente el campo de visin del ojo. Los tringulos que estn fuera de la pirmide, son descartados para el rendering, mientras que los que estn dentro son aceptados para los prximos pasos en el pipeline. Aquellos tringulos cortados por la pirmide, generan polgonos arbitrarios (por ejemplo trapecios) que deben ser retriangulados (ver Fig.14

(a)

(b)

(e) (d) (c)

Figura 14: Frustum culling. Se muestra una vista 2D del frustum. Los polgonos (b), (d) y (e) son descartados por estar completamente de un lado de la pirmide truncada. El tringulo (e) est totalmente dentro de la pirmide, por lo que es seleccionado para rendering. El tringulo (a) est parcialmente dentro de la pirmide. Este es intersectado con la misma, y el rea interna es retriangulada para el rendering. Los atributos (color, normal, coordenadas de textura, etc.) de los nuevos vrtices creados en (a) son obtenidos mediante interpolacin lineal de los vrtices del tringulo.

4.3) Proyeccin

En general, las proyecciones transforman puntos en un sistema de coordenadas de dimensin n a un sistema de coordenadas de dimensin inferior. En este caso trataremos con las proyecciones que van del espacio al plano (3D a 2D). La proyeccin de objetos tridimensionales sern definidos por la interseccin de lneas rectas que van desde un

centro de proyeccin u ojo, hasta cada punto del objeto con un plano llamado plano de proyeccin (). Esta clase de proyecciones se denominan proyecciones geomtricas planares, porque la proyeccin es hecha sobre un plano en vez de una superficie curva, y por usar lneas rectas para la proyeccin (proyectores) en vez de lneas curvas. Las proyecciones geomtricas planares pueden ser divididas en dos categoras: la proyeccin perspectiva (ver Fig. 15a), y la proyeccin paralela (ver Fig. 15b). La diferencia fundamental entre estas dos proyecciones es la distancia entre el plano y el centro de perspectiva. Si la distancia es finita, hablamos de proyeccin perspectiva, y si la distancia es infinita, hablamos de proyeccin paralela. (a)
plano de proyeccin
A' B B' A

(b)
objeto
plano de proyeccin A'

A objeto

B centro de proy. en el infinito B'

Centro de proyeccin (ojo)

Figura 15: (a) Proyeccin perspectiva. (b) Proyeccin paralela.

a) Proyeccin perspectiva En la proyeccin perspectiva tenemos un origen de proyeccin, el ojo. Por simplicidad, este est ubicado en el origen del sistema de coordenadas, y mirando en direccin (0,0,1). El plano de corte cercano =NCP es perpendicular a la direccin de visualizacin, por lo que su vector normal N es justamente (0,0,1). La distancia del plano al ojo la denominaremos ncp, que es el nico parmetro que debe especificar el programador para . As, la ecuacin del plano viene dada por z = ncp. Cada punto del objeto pe(xe, ye, ze) detrs de en coordenadas de ojo tiene imagen en , resultante de la interseccin de la recta que pasa por el ojo y pe. Paramtricamente, esta recta pede ser escrita como f(t)=t*Pe. Conociendo que los puntos sobre el plano tienen la forma (0,0,ncp), la interseccin puede determinarse igualando (0,0,ncp)=t*Pe. Por simple despeje obtenemos que t=ncp/ze. La interseccin puede obtenerse tambin por simple geometra (Ver Fig. 16), y ser expresada en coordenadas homogneas como: xe y ,ncp e ,ncp,1] ze ze Por propiedades de coordenadas homogneas, esto puede ser escrito como [ x , y , z ,1] = [ncp [ x , y , z ,1] = [ncp.xe , ncp. ye , ncp.ze , ze ] y en trminos matriciales

0 0 x ncp y 0 0 ncp = z 0 0 ncp 0 1 1 0

0 xe 0 . ye 0 ze 0 1

Aunque la proyeccin perspectiva no es una transformacin lineal en coordenadas cartesianas, en coordenadas homogneas s lo es, por lo que resulta ms fcil combinar la proyeccin con las otras transformaciones del proceso de visualizacin. Note que en la ltima componente (coordenada w) se almacena el valor de z del punto en coordenadas de ojo. Este valor se ir arrastrando a lo largo de todas las transformaciones, y podr ser utilizado posteriormente para la operacin por fragmento del test de profundidad (zbuffer).

+x xe x ojo ze

pe(xe,ze)

z=ncp

Figura 16: determinacin de la ecuacin de proyeccin perspectiva. Utilizando la propiedad de tringulos semejantes, ze/xe=ncp/x, obtenemos x. Un anlisis similar se hace para y.

b) Proyeccin paralela Constituye una buena aproximacin cuando el observador se encuentra alejado del objeto. En este enfoque, los rayos de visualizacin son paralelos (ver Fig. 15b). Dado un punto Pe(xe,ye,ze) del objeto en coordenadas de ojo, su imagen en el plano es simplemente

[ x , y , z ,1]t = [ x , y , ncp,1]t y en trminos matriciales x 1 y 0 = z 0 1 0 0 1 0 0 0 0 xe 0 0 . ye 0 ncp ze 0 1 1

4.4) Transformacin al Viewport

Debemos destacar que slo una regin del plano de visualizacin ser mostrada en el dispositivo. Comnmente esta regin es rectangular (ventana), y est delimitada en trminos generales por dos esquinas [s0,t0,z,1] y [s1,t1,z,1]. La ventana ser desplegada en el dispositivo, y para generalizar, dentro de un rectngulo del dispositivo de despliegue (viewport). Las coordenadas del dispositivo varan de dispositivo a dispositivo. Sin embargo, estudiaremos las transformaciones matemticas que aplican puntos de la ventana al viewport en trminos generales. La coordenada z de los puntos [x,y,z,1] es constante e irrelevante, y puede ser ignorada en esta etapa. t [s1,t1,1] VP (s0,t0,1) s t [1,1,1] Tnorm [0,0,1] s Tmap
i

v
viewport

[u1,v1,1]

[u0,v0,1]

Figura 17: Transformacin de la ventana del NCP al dispositivo

El proceso que se realiza puede resumirse en la Fig. 17. Los puntos [s,t,1] de la imagen delimitado por las esquinas [s0,t0,1] y [s1,t1,1] son llevados a un sistema de coordenadas auxiliar de normalizacin, dentro de un cuadrado de lado 1, con la transformacin Tnorm. La imagen luego es desplegada en un rectngulo o viewport del dispositivo delimitado por las esquina [u0,v0,1] y [u1,v1,1] utilizando la transformacin Timg. Si no se realiza frustum culling, este sera un buen momento para realizar clipping pero en 2D. Las tcnicas de clipping son dependientes del dispositivo, si son trabajadas directamente sobre el mismo. Sin embargo, es recomendable realizar clipping dentro del cuadrado de radio 1, para realizar algoritmos independientes al dispositivo. La matriz de transformacin Tnorm no es ms que la composicin de una traslacin 1 1 T (- s0 ,-t0 ) y un escalamiento S s1 s0 , t1 t0 .

Tnorm = S

1 s1 s0

1 , t1 t0 * T(-s0, -t0)

1 s1 s0 Tnorm = 0 0

0
1 t1 t 0

1 0 1 0 s0 s1 s0 = 0 t 0 0 1 0 1 0 0 1 0

0
1 t1 t 0

s0 ( s1 s 0 ) t0 ( t1 t 0 )

La matriz de transformacin Timg resulta la composicin de un escalamiento S(u1u0, v1v0) y una traslacin T(u0,v0). As:
1 0 u0 u1 u0 Timg = 0 1 v0 * 0 0 0 1 0 0 v1 v0 0 0 u1 u0 0 = 0 1 0 0 v1 v0 0 u0 v0 1

Finalmente, la matriz asociada a la transformacin de puntos de la forma (s,t,1) a puntos (u,v,1) a ser desplegados en el dispositivo es:
u 0 us1 1 s0 VP = Timg * Tnorm = 0 0

0
v1v 0 t1 t0

u0 s1 u1s0 ( s1 s0 ) v0t1 v1t0 ( t1 t0 )

En la prctica resulta ms cmodo y fisiolgico trabajar con una ventana de largo 2.h y ancho 2.k, centrado en el 0, y no un rectngulo cualquiera. As, las esquinas que delimitan la vantana son (h,k) y (h,k). Para este caso, la matriz VP puede ser expresada como:
u0 u12 .h VP = 0 0

0
v1 v0 2.k

u1 +u0 2 v1 +v0 2

Para el caso OpenGL, los parmetros s0, s1, t0, t1 no son ms que los parmetros left, right, top and down del modelo de pirmide truncada ubicados en el near clipping plane. Los valores u0, u1, v0, v1 son especificados en OpenGL mediante la rutina glViewPort(u0, v0, u1u0, v1v0). Para trabajar con matrices de un slo tamao, la matriz VP es rescrita como:
u0 u12 .h 0 VP = 0 0

0
v1 v0 2.k

0 0 1 0

u1 +u0 2 v1 +v0 2

0 0

0 1

En resumen, la transformacin geomtrica aplicada a los vrtices puede expresarse en coordenadas homogneas como un producto de matrices, denominada matriz de visualizacin (Mvis). Mvis = VP * P * V * M donde, M es la matriz que realiza transformaciones del modelo. V es la matriz de transformacin de la vista P es la matriz de proyeccin VP es la matriz que transforma la ventana del NCP al dispositivo

As, la transformacin sobre los vrtices es simplemente un producto matriz 4x4 por vector: xd xo y d = Mvis * yo zd zo 1 wd en donde [xo, yo, zo, 1] es un punto del objeto en coordenadas objeto, y [xd, yd, zd, wd] es un punto del objeto en coordenadas de dispositivo. Finalmente, dividiendo entre wd y eliminando la componente zd/wd, obtenemos un punto en pantalla como (u,v) = (xd/wd, yd/wd) Una vez transformado los vrtices del mallado de coordenadas objeto a coordenadas de dispositivos, estos pueden unirse mediante lneas para visualizar el mallado. Adicionalmente, los vrtices pueden reagruparse para formar los polgonos del mallado en coordenadas de dispositivo, y proceder a rellenarlos. En este caso, los polgonos pueden desplegarse en orden atrs hacia delante (depth-sort) para eliminar lneas ocultas, o bien, aplicar tcnicas de culling como de z-buffer, o incluso haloed lines [FOL90].

5.- Bibliografa
[BOE94] Boehm Wolfgang. Prautzsch Harmut. "Geometric Concepts for Geometric Design". AK Peters. 1994. [FIS92] Fishback W. "Projective and Euclidena Geometry". 2da. Edicin. 1992.

[FOL90] Foley James. Vam Dam Andries. Feiner Steven. Hugkea John. "Computer Graphics. Principles and Practice". Addison-Wesley. 2da. Edicin. 1990. [OPENGL] http://www.opengl.org [PAT90] Paterson Richard. Penna Michael. "Projective Geometric and Applications to Computer Graphics". Prentice-Hall International. 1990. [PIE88] Pierre Samuel. "Projective Geometry". Springer-Verlag. 1988.

Potrebbero piacerti anche