Está en la página 1de 32

1

TEMA 6 - REPRESENTACION DE CURVAS Y SUPERFICIES


La mayor parte de los objetos existentes en el mundo real presentan formas continuas y suaves, y para nada pueden asemejarse a formas poligonales. La mayor de las aplicaciones grcas necesitan modelar objetos presentes a a en el mundo real, y por lo tanto se hace necesario poder generar curvas y supercies de una forma ms exacta que una simple sucesin de segmentos a o rectos cortos. El diseo asistido por ordenador (CAD), los tipos de letra de n alta calidad, los trazos de un artista, el path que debe seguir una cmara a a lo largo de una secuencia; todos ellos contienen supercies y curvas suaves. La necesidad de poder representar curvas y supercies viene por dos sentidos. En primer lugar para modelar objetos existentes (coches, caras, montaas, etc.), en donde una descripcin matemtica del objeto puede no n o a estar disponible. Por supuesto, podemos usar para modelar las coordenadas de los innitos puntos del objeto, lo cual no es nada viable. Tambin podemos e representarlo aproximadamente usando planos, esferas u otras primitivas sencillas, fciles de describir matemticamente, pero seguir a a amos sin lograr una representacin adecuada. o En segundo lugar para modelar algo que an no exista f u sicamente, por ejemplo cuando se est diseando un nuevo prototipo de coche o de avin. a n o Para crearlo, el usuario puede ir esculpindolo interactivamente, o bien ese pecicar su descripcin matemtica, o dar una descripcin aproximada para o a o luego ir retocndola. a En este cap tulo vamos a ver el modelado de curvas y supercies paramtricas, e con lo cual obtendremos una visin general del rea de modelado geomtrico, o a e el cual es un ampl simo campo dentro de la informtica grca. a a

6.1 CURVAS CUBICAS PARAMETRICAS


Cualquier l nea curva puede representarse mediante un conjunto de segmentos rectos. Cuanto mayor sea el nmero de ellos mejor ser la aproximacin. u a o De igual manera, cualquier tipo de supercie puede aproximarse por un conjunto de pol gonos conectados (mesh), acercndonos ms a la supercie origa a inal cuanto ms pol a gonos usemos. El principal problema de este tipo de aproximaciones es la enorme cantidad de coordenadas de cada punto (extremos de cada segmento recto en las curvas, o vrtices de cada pol e gono en las supercies) que debemos almacenar para lograr una aproximacin razono able. Adems, otro problema adicional es que la manipulacin interactiva de a o los datos para aproximar una forma dada es tediosa, debido a los numerosos

puntos que hay que posicionar correctamente. Para solucionar este hndicap, existe una forma de representacin mas a o manipulable y compacta para representar curvas y supercies. La aproximacin general consiste en usar funciones de mayor grado que las funciones o lineales (que es lo que son los segmentos rectos y los pol gonos). Por ejemplo, si tenemos tres puntos no podemos obtener una recta que pase por los tres, si stos no son colineales. Esto es debido a que la expresin para una recta e o es y = ax + b, por lo que slo disponemos de dos coecientes (a y b) para o intentar cumplir tres condiciones (una para obligar que pase por cada punto); necesitar amos guardar dos rectas. Sin embargo, con un polinomio de grado dos tendr amos tres coecientes, con lo que s conseguir amos obtener una unica funcin que pasara por los tres puntos. De ah que el usar funciones o de mayor grado nos permiten aproximar mejor y con menos informacin un o trozo de curva que mediante segmentos rectos. Estas funciones seguirn siendo todav aproximaciones a la forma dea a seada, pero requerirn mucho menos espacio de almacenamiento y ofrecern a a una manipulacin interactiva mucho ms sencilla que con las funciones lino a eales. Para este tipo de aproximaciones de mayor grado existen tres mtodos e posibles: a) Podemos expresar las componentes y y z como funciones expl citas de x ) y = f(x) z = g(x) Un primer problema de esta representacin es que es imposible obtener mltiples o u valores de y para un valor de x, por lo que las curvas tales como circunferencias y elipses deben representarse por varios segmentos curvos. Un segundo problema es que esta denicin no es invariante frente a rotaciones; describir o una versin rotada de la curva requerir un gran coste e incluso se necesitar o a a dividir la curva en varias partes. Un problema ms es que describir curvas a que posean tangente vertical es muy dif ya que es complicado representar cil, una pendiente innita. b) Podemos elegir como modelo de la curva la solucin de una ecuacin o o impl cita de la forma f (x, y, z) = 0 Esta solucin tambin supone nuevos problemas. En primer lugar, la ecuacin o e o dada puede tener ms soluciones de las que queremos. Por ejemplo, para a modelar una circunferencia podemos usar la ecuacin x2 +y 2 = 1, pero cmo o o podr amos modelar una semicircunferencia? Deber amos aadir requisitos n tales como x 0 que no se hayan incluidos dentro de la propia ecuacin. o En segundo lugar, si deseamos unir dos segmentos curvos denidos en forma impl cita, puede ser muy dif determinar si coinciden sus tangentes en el cil

punto de unin. La continuidad de las tangentes es un detalle cr o tico en la mayor de las aplicaciones. a c) La representacin paramtrica para las curvas, o e x = x(t) y = y(t) z = z(t)

soluciona todos los problemas de los dos mtodos anteriores, y ofrece adems e a una serie de ventajas adicionales que la hacen ideal para lo que quer amos en un principio. Las curvas paramtricas sustituyen el uso de las pendie entes geomtricas (las cuales pueden ser innitas) por vectores tangentes e paramtricos (los cuales nunca sern innitos). De esta manera, una curva e a va a aproximarse por segmentos curvos polinmicos en lugar de segmentos o rectos como antes. Cada segmento curvo Q de la curva completa vendr repa resentado por tres funciones, x, y, y z, las cuales sern polinomios cbicos en a u t. Se suelen usar los polinomios cbicos porque los de grado dos ofrecen u poca exibilidad a la hora de controlar la forma de la curva, y los de grado mayor que tres pueden introducir rizos innecesarios y adems requieren ms a a computacin. Ninguna representacin de grado inferior a tres permite que o o un segmento curvo pase a travs de dos puntos dados con dos derivadas ese pec cas en cada uno. Dado un polinomio cbico con cuatro coecientes, u los usaremos como incgnitas para poder cumplir el sistema de ecuaciones o formado por las cuatro condiciones que hemos dicho. Esto es similar a lo que hacemos con una recta: dos coecientes y dos condiciones por cumplir (los dos extremos). Las derivadas de cada extremos vienen ya denidas por la propia recta, y no pueden ser controladas independientemente. Con polinomios cuadrticos (de grado dos) tenemos tres coecientes, lo cual nos sirve a para los dos extremos y alguna condicin ms. o a Otro detalle ms es que las curvas polinmicas cbicas son las curvas de a o u menor grado que pueden ser no planares en 3D. Es decir, un polinomio de grado dos con tres coecientes viene dado por tres puntos, los cuales siempre forman un plano en el espacio. La curva resultante por lo tanto permanecer a sobre ese plano. Los polinomios cbicos que denen un segmento curvo Q(t) = [x(t), y(t), z(t)] u son de la forma x(t) = ax t3 + bx t2 + cx t + dx y(t) = ay t3 + by t2 + cy t + dy z(t) = az t3 + bz t2 + cz t + dz

t [0, 1]

Para tratar con segmentos nitos de la curva, y sin prdida de generalie dad, hemos restringido el parmetro t al intervalo [0, 1]. Deniendo el vector a

T = [t3 , t2 , t, 1] y deniendo tambin la matriz C de coecientes de los tres e polinomios como ax ay az b b b C= x y z cx cy cz dx dy dz podemos reescribir la ecuacin para la curva como o Q(t) =

x(t) y(t) z(t)

=T C

En la gura 3 pueden verse dos segmentos curvos cbicos paramtricos u e unidos y sus respectivos polinomios. Adems, puede verse la habilidad de a la representacin paramtrica para representar de forma sencilla mltiples o e u valores de y para un solo valor de x mediante polinomios expl citos en t.

Figure 1 La derivada del vector Q(t) es el vector tangente paramtrico de la curva. e Aplicando esta denicin obtenemos la siguiente ecuacin: o o
d d Q(t) = Q0 (t) = x0 (t) y 0 (t) z 0 (t) = T C = dt dt 2 3t 2t 1 0 C = =

3ax t2 + 2bx t + cx 3ay t2 + 2by t + cy 3az t2 + 2bz t + cz

Si dos segmentos curvos se unen en un extremo, diremos que la curva posee continuidad geomtrica G0 . Si las direcciones (pero no necesariamente las e magnitudes) de los vectores tangentes de ambos vectores son iguales en el punto comn, diremos que la curva tiene continuidad geomtrica G1 . En los u e

objetos hechos en CAD (Diseo Asistido por Ordenador) frecuentemente se n requiere la continuidad G1 entre segmentos consecutivos. Esta continuidad signica que las pendientes de los segmentos son iguales en el punto de unin. o Para que dos vectores tangentes V1 y V2 tengan la misma direccin debe o cumplirse que V1 = k V2 , con k > 0. Si los vectores tangentes de dos segmentos curvos son iguales (tanto en direccin como en magnitud) en su punto de unin, diremos que la curva o o 1 tiene continuidad paramtrica C . En general, si la direccin y magnitud e o del vector dn Q(t)/dtn es igual para ambos segmentos, diremos que la curva tiene continuidad C n . En la gura 4 pueden verse varias curvas con grados diferentes de continuidad. No se olviden que cualquier segmento curvo es siempre continuo en su interior; aqu nos estamos reriendo a la continuidad de los extremos.

Figure 2

El vector tangente Q0 (t) mide la velocidad de un punto de la curva con respecto al parmetro t. Similarmente, la segunda derivada de Q(t) representa a la aceleracin. Si una cmara se mueve a lo largo de una curva paramtrica a o a e incrementos constantes de tiempo y va grabando un fotograma en cada paso, el vector tangente mide la velocidad de la cmara a lo largo de la curva. a Tanto la velocidad como la aceleracin de la cmara en los puntos extremos o a entre segmentos debe ser continua, para evitar movimientos bruscos en la secuencia resultante. Es precisamente esta aceleracin en el punto de unin o o de la gura previa la que provoca que el segmento C 2 se alargue ms a la a derecha que el segmento C 1 , antes de doblarse hacia el extremo nal. En general, la continuidad C 1 implica G1 , pero no al revs, ya que la e continuidad G1 es menos restrictiva que C 1 . Sin embargo, visualmente no se aprecia diferente, como puede verse en la gura 5. El dibujo de una curva paramtrica es completamente diferente al de una e funcin ordinaria, en la cual la variable independiente se va trazando sobre o el eje x y la dependiente sobre el eje y. En un plot paramtrico, la variable e independiente t nunca se dibuja. Esto signica que no puede determinarse a simple vista el vector tangente a la curva, ya que aunque la direccin es o

Figure 3 posible de determinar, no ocurre lo mismo con su magnitud. Esto puede verse en el siguiente ejemplo: sea el segmento (t), 0 t 1, cuyo vector tangente en t = 0 ser 0 (0). Si creamos un nuevo segmento, (t) = (2t), a 0 t 1/2, entonces los dibujos de ambas curvas son idnticos, y sin e embargo, 0 (0) = 2 0 (0)1 . Esto demuestra que dos curvas con idntico dibujo e tienen diferentes vectores tangente. Este es el motivo para la denicin de o la continuidad geomtrica: para que dos segmentos se unan suavemente slo e o es preciso que las direcciones de las tangentes coincidan, independientemente de sus magnitudes. Un segmento de curva Q(t) viene denido, como ya hemos dicho, por dos puntos extremos, dos vectores tangentes y una continuidad entre segmentos consecutivos. Cada polinomio cbico tiene cuatro coecientes, por lo que se u necesitan cuatro condiciones que nos permitan formular cuatro ecuaciones cuyas incgnitas a calcular sean precisamente estos cuatro coecientes. Exo isten diferentes tipos de curvas cbicas, que veremos posteriormente en este u cap tulo. Para ver como dichos coecientes dependen de las cuatro condiciones, consideremos que nuestro segmento de curva viene denido como Q(t) = T C siendo C = M G, donde a su vez M es una matriz base de 4x4, y G un vector columna de cuatro elementos de requisitos geomtricos, llamado e vector de geometr Los requisitos geomtricos van a ser precisamente a. e las condiciones establecidas, tales como los puntos extremos o los vectores tangentes, que denen la curva en concreto. Denimos Gx para referirnos al vector columna formado exclusivamente por las componentes x del vector de geometr Gy y Gz se denen de forma similar. Tanto M como G diferirn a. a para cada tipo de curva cbica. u Los elementos de M y G son constantes, por lo que el producto T M G
(t) = (2t) = (u), siendo u = 2t d(t) d(u) d(u) du 0 (t) = = = = 2 0 (u) dt dt du dt
1

nos da tres polinomios cbicos en t. Expandiendo el producto Q(t) = T M G u obtenemos2 Q(t) =

x(t) y(t) z(t)

t3 t2 t 1

m11 m21 m31 m41

m12 m22 m32 m42

m13 m23 m33 m43

m14 m24 m34 m44

G1 G2 G3 G4

El resultado para el polinomio x(t) queda x(t) = (t3 m11 + t2 m21 + tm31 + m41 )g1x + (t3 m12 + t2 m22 + tm32 + m42 )g2x +(t3 m13 + t2 m23 + tm33 + m43 )g3x + (t3 m14 + t2 m24 + tm34 + m44 )g4x Los polinomios y(t) y z(t) quedan de forma similar. Si observamos atentamente este polinomio, puede verse como la curva es una suma ponderada de los elementos de la matriz de geometr Es decir, a. para cada valor de t x(t) = b1 (t)g1x + b2 (t)g2x + b3 (t)g3x + b4 (t)g4x donde los pesos que multiplican a cada elemento de G son los polinomios cbicos en t. A estas funciones se les denonima funciones blending (to u blend=doblar) ya que dependiendo de la forma de estas funciones se van interpolando los valores geomtricos de la curva para cada valor de t. Estas e funciones se obtienen haciendo B = T M. Esta forma de representacin puede parecer compleja, pero en realidad no o es ms que una generalizacin de la aproximacin lineal usando segmentos a o o rectos (polinomios de grado 1), para la cual slo se necesitan dos condiciones o geomtricas, que son los dos puntos extremos. As cada segmento viene e , denido por la recta que pasa entre los puntos G1 y G2 :

x(t) = g1x (1 t) + g2x (t) y(t) = g1y (1 t) + g2y (t) z(t) = g1z (1 t) + g2z (t) Cmo se ver esta aproximacin lineal usando la misma sintaxis que o a o empleamos para la curva cbica? Sea el segmento recto (en un caso bidimenu sional se ver ms fcil) de la gura 6. a a a En coordenadas paramtricas parece claro que la ecuacin ser de la e o a forma: ) x(t) = x1 + t(x2 x1 ) siendo 0 t 1 y(t) = y1 + t(y2 y1 )
Ntese que cada Gi es en realidad una terna de valores xyz. Es decir, aunque lo o llamemos vector de geometr a efectos de nmeros reales, G ser una matriz 4x3, donde a, u a Gx ser la primera columna, Gy la segunda y Gz la tercera. a
2

Figure 4 Esto puede ponerse tambin como e x(t) = (1 t)x1 + tx2 y(t) = (1 t)y1 + ty2 Por lo tanto el segmento quedar como sigue: a Q(t) =

x(t) y(t)

=BG=B

x1 y1 x2 y2

De aqu deducimos que el tamao de la matriz B ha de ser 1x2. El ele n mento b11 ser igual al polinomio que multiplica tanto a x1 como a y1 , es a decir, b11 (t) = (1 t). De igua manera deducimos b12 (t) = t. Finalmente, ya podemos calcular la matriz base: B = T M = M =

t 1

1 1 1 0

m11 m12 m21 m22

En resumen, un segmento recto vendr dado por la ecuacin a o Q(t) = T M G =

t 1

1 1 1 0

siendo G el vector de geometr formado por los dos puntos extremos. a Dejando a un lado este ejemplo 2D, pasemos a continuacin a ver las mao trices base para dos tipos distintos de curvas cbicas: las curvas de Hermite, u y las curvas de Bezier. Existen ms tipos de curvas, pero aqu slo veremos a o estos dos.

6.1.1 Curvas de Hermite Un segmento curvo de Hermite viene determinado por sus dos puntos extremos, P1 y P4 , y dos vectores tangentes en dichos puntos, R1 y R4 . As el , vector de geometr de Hermite viene denido por a
GH =

P1 P4 R1 R4

y las expresiones para el polinomio cbico de cada componente (x por ejemu plo) ser de la forma: a x(t) =

t3 t2 t 1

MH GHx

Las condiciones para que la curva comienze y nalize en cada extremo son: x(0) = P1x = x(1) = P4x =

0 0 0 1 1 1 1 1

MH GHx MH GHx

Para obtener las otras dos ecuaciones referentes a las tangentes habra que encontrar la derivada de x respecto de t : x0 (t) =

3t2 2t 1 0

x0 (0) = R1x = x0 (1) = R4x =

0 0 1 0 3 2 1 0

MH GHx

MH GHx MH GHx

Coloquemos ahora las cuatro ecuaciones en forma matricial:


P1 P4 R1 R4

0 1 0 3

0 1 0 2

0 1 1 1

1 1 0 0

MH

GHx

Ahora jmonos en una cosa curiosa. En realidad, el vector columna que e aparece a la izquierda de la igualdad coincide con GHx ! Por lo tanto, el producto de la matriz 4x4 por MH debe ser igual a la matriz identidad para que la igualdad se cumpla. De aqu deducimos MH
MH =

0 1 0 3

0 1 0 2

0 1 1 1

1 1 0 0

2 2 1 1 3 3 2 1 0 0 1 0 1 0 0 0

10

MH es por supuesto unica, y puede usarse en la expresin x(t) = T MGHx o para encontrar el polinomio x(t) basado en el vector de geometr GHx . De a igual forma, y(t) = T M GHy y z(t) = T M GHz . As la expresin para , o el segmento completo puede escribirse como Q(t) =

x(t) y(t) z(t)

= T MH GH

Expandiendo el producto T MH obtenemos las funciones blending de Hermite BH como los polinomios que pesan a cada elemento del vector de geometr a: Q(t) = T MH GH = BH GH = = (2t3 3t2 + 1)P1 + (2t3 + 3t2 )P4 + (t3 2t2 + t)R1 + (t3 t2 )R4 En la gura siguiente pueden verse las cuatro funciones blending

1.0 0.8 0.6 0.4 0.2 0.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Las l neas gruesas representan a los polinomios que multiplican a P1 y a P4 (el de P1 empieza en 1) y las nas a R 1 y a R4

Ntese que en t = 0, solamente la funcin que multiplica a P1 es distinta o o de cero, por lo que solamente P1 afecta a la curva en t = 0. A medida que t crece, los otros tres polinomios comienzan a tener inuencia. En la gura 7 se ven las cuatro funciones blending ya pesadas por las componentes y de un vector de geometr su suma y(t), y la curva paramtrica a, e 2D nal Q(t). Ntese que el eje de representacin de sta ultima gura es xy o o e y no ty. En la gura 8 se ilustra la inuencia que sobre la curva ejerce la variacin o de la magnitud de la tangente R1 . Como comentbamos antes, la tangente a R1 viene a medir la derivada en t del inicio de la curva, es decir, como si fuese su velocidad inicial. A mayor magnitud, mayor velocidad tendr la curva. Ya a que el segmento se mantiene constante en el intervalo (0, 1), es decir, t var a entre 0 y 1 (el tiempo es el mismo), al incrementar la velocidad se incrementa

11

Figure 5

Figure 6

12

la longitud de la curva. El efecto visual es que la curva se estira en el sentido de la tangente. En la gura 9 se aprecia el efecto de variar la direccin de la tangente. o Lgicamente, la curva partir en la misma direccin que tenga R1 , e ir o a o a variando suavemente hasta llegar a la posicin nal llegando siempre con una o direccin R4 . o

Figure 7 En los sistemas grcos actuales, el software que permite al diseador a n modelar las curvas es capaz de mostrarnos las tangentes de cada segmento para que el usuario interactivamente vaya variando dichos vectores, y en tiempo real ir viendo como va quedando la curva completa. Esta situacin o se muestra en la gura 10, donde puede verse una curva de Hermite compuesta por dos segmentos. Los puntos extremos pueden reposicionarse arrastrndolos con el ratn, y los vectores tangentes son alargados o encogidos a o tambin con el ratn arrastrando las puntas de los vectores. e o

Figure 8 Tambin puede apreciarse como, para que la curva aparezca suave y sin e esquinas, debe mantenerse la continuidad G1 entre cada dos segmentos consecutivos. De esta manera, si forzamos al software para que nos mantenga

13

siempre esta restriccin, las tangentes nal e inicial de dos segmentos coneco tados siempre sern colineales, como puede verse. Matemticamente, esta a a restriccin implica que los dos vectores de geometr deben ser de la forma o a

P1 P4 R1 R4

P4 P7 kR4 R7

Es decir, debe haber un punto comn entre ambos segmentos, y los vectores u tangentes deben tener igual direccin. La condicin ms restrictiva de C1 se o o a consigue haciendo k = 1, coincidiendo entonces direccin y magnitud. En la o gura 11 pueden verse dos segmentos con continuidad G1 .

siendo k > 0

Figure 9 La forma de dibujar una curva de Hermite es relativamente sencillo. Slo o hay que ir evaluando x(t),y(t)y z(t)para nsucesivos valores de tseparados por un incremento constante .Es decir x(t) = ax t3 + bx t2 + cx t + dx y(t) = ay t3 + by t2 + cy t + dy donde t = 0, , 2, ..., 1 3 2 z(t) = az t + bz t + cz t + dz Otra forma ms eciente es usar la regla de Horne para polinomios a f(t) = at3 + bt2 + ct + d = ((at + b)t + c)t + d lo cual reduce el clculo a 9 multiplicaciones y 10 sumas para cada punto 3D. a Una vez calculados todos los puntos, stos pueden unirse mediante segmentos e rectos en la pantalla. Otro detalle muy importante a tener en cuenta sobre las curvas cbicas u es que, al ser combinaciones lineales de los cuatro elementos del vector de geometr para transformar una curva simplemente transformaremos su veca, tor de geometr y usaremos este nuevo vector obtenido para mostrar la a, curva transformada. Esto signica que las curvas son invariantes frente a rotaciones, traslaciones y escalados. Esta estrategia es por tanto much simo ms eciente que generar la curva como una serie de segmentos a rectos cortos y transformar cada segmento individual.

14

6.1.2 Curvas de Bezier Un segmento curvo de Bezier viene determinado por sus dos puntos extremos, P1 y P4 ,y por otros dos puntos, P2 y P3 ,que indirectamente especican los vectores tangentes en los extremos. Estos dos puntos no pertenecen a la curva, como puede verse en la gura 12.Los vectores tangentes vienen determinados

Figure 10 o por los vectores P1 P2 y P3 P4 ,y su relacin con los vectores tangente R1 y R4 de Hermite es R1 = Q0 (0) = 3(P2 P1 ) R4 = Q0 (1) = 3(P4 P3 ) Por lo tanto, vemos que en realidad una curva Bezier es como una curva de Hermite, salvo que el vector de geometra es diferente, ya que en vez de consistir en dos puntos y dos vectores, consiste en cuatro puntos, esto es GB =

P1 P2 P3 P4

Para encontrar la relacin existente entre el vector de geometr de Hero a mite, GH ,y el de Bezier, GB ,vamos a calcular la matriz MHB que cumple GH = MHB GB :
GH =

P1 P4 R1 R4

1 0 3 0

0 0 3 0

0 0 0 3

0 1 0 3

P1 P2 P3 P4

= MHB GB

Para encontrar la matriz base de Bezier usaremos la expresin de la curva o de Hermite: Q(t) = T MH GH = T MH (MHB GB ) = T (MH MHB )GB = T MB GB

15

De aqu obtenemos la matriz de Bezier:


MB = MH MHB =

1 3 3 1

3 6 3 0

3 3 0 0

1 0 0 0

La expresin para la curva es entonces o Q(t) = (1 t)3 P1 + 3t(1 t)2 P2 + 3t2 (1 t)P3 + t3 P4 Los cuatro polinomios BB = T MB ,que aparecen multiplicando a los elementos del vector de geometr en la ecuacin anterior, son conocidos a o como polinomios de Bernstein, y aparecen en la gura siguiente:

1.0 0.8 0.6 0.4 0.2 0.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Las l neas gruesas representan a los polinomios que multiplican a P1 y a P4 y las nas a P2 y a P3

Puede verse como en t = 0 solamente el polinomio que multiplica a P1 es distinto de cero, por lo que la curva es igual a P1 . Similarmente, en t = 1 slo o el polinomio de P4 es diferente de cero, estando la curva en P4. Si examinamos los cuatro polinomios de Bernstein nos damos cuenta de que su suma vale siempre 1 para todo t entre 0 y 1, y adems, ninguno de los a cuatro polinomios se hace nunca inferior a cero. De esta manera Q(t) es en realidad una media ponderada de los cuatro puntos de control. Esto signica que cada segmento curvo est completamente contenido en el convex hull3 a formado por los cuatro puntos de control. Esta propiedad garantiza que cualquier punto del segmento curvo estar a en el interior de dicho volumen, como resultado de la media ponderada. Esto
Me niego a traducir esta expresin. Si la curva es en 2D signica la envolo vente convexa del pol gono formado por los cuatro puntos de control. Queda claro?. Si la curva es en 3D, entonces sustituir pol gono por poliedro.
3

16

puede verse claramente en un caso de dos puntos (un segmento recto) o tres puntos (un tringulo). Cualquier suma ponderada de los puntos (siendo uno a la suma de los pesos y todos ellos positivos) cae siempre en el interior de la recta o del tringulo respectivamente (vase la gura anterior). a e Esta propiedad es muy util en la fase de recorte: en lugar de pasarle al algoritmo de recorte todos los segmentos de la curva para determinar su visibilidad, es mucho ms eciente aplicar primero el algoritmo a los convex hull a de cada uno. Si el convex hull est completamente dentro del volumen de a recorte, el segmento de la curva puede dibujarse enteramente. Si el convex hull est completamente fuera del volumen, el segmento ser totalmente ina a visible. Slo en aquellos casos en los que el convex hull intersecte al volumen o de recorte ser cuando pasemos la expresin del segmento al algoritmo del a o recorte. Obviamente es mucho ms rpido calcular el recorte de un pol a a gono o poliedro que el de una funcin cbica paramtrica. o u e Al igual que ocurr con las curvas de Hermite, entre dos segmentos a consecutivos debe garantizarse al menos la continuidad G1 . Para ello debe cumplirse que P3 P4 = k(P4 P5 ), siendo k > 0

Es decir, los tres puntos P3 , P4 y P5 deben ser distintos y colineales. Para cumplir C1 habr que hacer k = 1. En la gura 13 pueden verse dos segmentos a de Bezier consecutivos con continuidad G1 .Obsrvese como cada segmento e

Figure 11 queda siempre en el interior de su convex hull.

6.1.3 Subdivisin de curvas o Supongamos que tenemos creada una serie conectada de segmentos curvos para intentar aproximar una forma geomtrica que estamos diseando. Una e n vez hechos podemos manipular los puntos de control para variar la forma de la curva, pero probablemente no podamos obtener toda la exactitud que quisiramos. Probablemente, esto ser debido a que no hemos creado los e a sucientes puntos de control para lograr el efecto deseado. Para solucionar este problema existen dos soluciones.

17

La primera se conoce como elevacin del grado, es decir, incrementamos o el grado del polinomio de 3 a 4 o ms. Esta tcnicas se hace necesaria a veces, a e sobre todo si necesitamos garantizar continuidades de grado alto (C 2 C 3 ), o pero no es muy conveniente, debido a que se necesitan ms condiciones para a el segmento (al tener ms coecientes) y al coste computacional adicional a para evaluar la curva. La segunda solucin es mucho ms prctica, y consiste en subdividir uno o a a o ms segmentos de la curva en dos nuevos segmentos. Por ejemplo, un a segmento Bezier compuesto por cuatro puntos de control puede subdividirse en dos nuevos segmentos con un total de siete puntos de control (los nuevos segmentos tienen un punto en comn). Estos dos nuevos segmentos coinciden u perfectamente con el segmento original, hasta que movamos alguno de los puntos de control. Veamos cmo ser el algoritmo para un segmento Bezier. Sea Q(t) el o a segmento denido por los puntos P1 , P2 , P3 y P4 , y queremos encontrar una curva denida por los puntos L1 , L2 , L3 y L4 que coincida con la mitad izquierda de la curva original (left) y otra curva denida por los puntos R1 , R2 , R3 y R4 que coincida con la mitad derecha (right). Es decir, la curva izquierda ha de coincidir con Q(t) en el intervalo 0 t < 1/2, y la curva derecha ha de coincidir en el intervalo 1/2 t < 1. Para realizar la subdivisin vamos a usar una tcnica de construccin o e o geomtrica desarrollada por Casteljau para evaluar una curva de Bezier e para cualquier valor de t. En nuestro caso nos interesa usar t = 1/2, aunque ms adelante generalizaremos. El algoritmo es el siguiente. Los segmentos a rectos P1 P2 , P2 P3 y P3 P4 los dividimos por la mitad y nos quedamos con el punto medio de cada uno, los cuales llamaremos L2 , H y R3 respectivamente. A su vez, volvemos a tomar los nuevos segmentos L2 H y HR3 y de nuevo nos quedamos con el punto medio para obtener dos nuevos puntos: L3 y R2 . Por ultimo, este nuevo segmento L3 R2 lo volvemos a dividir y nos quedamos con su punto medio L4 (= R1 ). El resultado puede verse en la gura 14.

Figure 12

18

Haciendo L1 = P1 , el segmento Bezier formado por los puntos de control L1 , L2 , L3 y L4 coincide perfectamente con la mitad izquierda de Q(t). De forma similar, haciendo R4 = P4 , el otro segmento formado por los puntos R1 , R2 , R3 y R4 coincide con la mitad derecha. De esta forma, y retornando al ejemplo inicial, si estamos modelando una forma y nos interesa tener ms prea cisin en un segmento determinado, subdividiramos la curva con esta tcnica o e y obtendr amos el mismo dibujo inicialmente pero con dos segmentos en lugar de uno, es decir, con ms puntos de control. Adems esta tcnica se presta a a a e la recursividad. Si an con la subdivisin no logramos la precisin requerida, u o o los segmentos obtenidos pueden ser subdivididos nuevamente aplicando de nuevo la tcnica. e Como siempre, lo interesante es reorganizar los clculos en forma matria L cial. Nos interesar calcular por un lado la matriz DB que al mutiplicarla por a el vector de geometr del segmento original nos diera el vector de geometr a a R del nuevo segmento izquierdo, y otra matriz DB que nos diera el vector de geometr del derecho. Revisemos la expresiones para los puntos: a L1 = P1 ; R4 = P4 P2 + P3 P1 + P2 P3 + P4 ; H= ; R3 = L2 = 2 2 2 P1 + 2P2 + P3 P2 + 2P3 + P4 L2 + H H + R3 L3 = = ; R2 = = 2 4 2 4 P1 + 3P2 + 3P3 + P4 L3 + R2 L4 = R1 = = 2 8 con lo que ya podemos obtener la expresin matricial: o
L GL = DB GB = B

1 8 1 8

8 4 2 1 1 0 0 0

0 4 4 3 3 2 0 0

0 0 2 3 3 4 4 0

0 0 0 1 1 2 4 8

P1 P2 P3 P4 P1 P2 P3 P4

R GR = DB GB = B

F jense que cada uno de los nuevos puntos de control Li y Ri son una suma ponderada de los puntos Pi , con los pesos todos positivos y cuya suma es siempre 1. Por lo tanto, todos estos nuevos puntos se encuentran en el interior del convex hull. Esto signica que dichos puntos se hallan ms cerca a de la curva Q(t) que los puntos originales. Esta propiedad nos ser muy util a en la siguiente seccin. o Por otra parte, el hecho de dividir la curva en t = 1/2 suele ser la opcin o ms conveniente en la mayor de los casos, pero lo ideal ser que el proa a a pio usuario de forma interactiva indicara en qu punto de la curva hacer la e

19

subdivisin, aprovechando la tcnica de Casteljau. Esta tcnica ya hab o e e amos comentado que serv para evaluar la curva en un punto t cualquiera, no a necesariamente t = 1/2. Si quisiramos calcular cul es el punto de la curva e a para un cierto 0 < t1 < 1, la tcnica trabajar de forma similar, salvo que en e a lugar de dividir siempre por la mitad, dividiramos usando el ratio t1 : (1t1 ), es decir, si por ejemplo t1 = 1/3 dividir amos cada segmento dejando 1/3 a la izquierda y 2/3 a la derecha4 . El punto nal obtenido, L4 , es el punto perteneciente a la curva, que es igual a Q(t1 ), y adems, se sigue cumpliendo a que el segmento formado por los puntos Li coincide con el primer tercio de Q(t), y el formado por los puntos Ri coincide con los dos ultimos tercios de Q(t).

6.1.4 Dibujo de curvas Hay dos formas bsicas para dibujar una curva paramtrica. La primera es a e por evaluacin iterativa de x(t), y(t) y z(t) para pequeos incrementos de la o n variable t, y dibujando l neas rectas entre cada par de valores. Este mtodo ya e lo contamos anteriormente, y vimos que el coste computacional necesario era de 9 multiplicaciones y 10 sumas por cada punto 3D que queramos calcular. Una vez calculados, estos puntos se unen mediante segmentos rectos. Una observacin importante es la siguiente: si el nmero de puntos evalo u uados, n, es relativamente pequeo, la curva puede verse en pantalla como n una sucesin de segmentos rectos cortos, es decir, de forma similar a cuando o usamos listas de aristas. Sin embargo, hay una diferencia muy grande con respecto a este otro formato, y es que seguimos manteniendo la informacin o de la curva completa, y en cualquier momento, variando n, podemos tener la curva de forma ms exacta, cosa que se hace imposible si lo que tenemos a almacenado es un conjunto nito de aristas y puntos. La segunda manera se conoce como subdivisin recursiva, ya que usa o la tcnica de Casteljau para ir subdividiendo cada segmento hasta que los e nuevos segmentos sean lo sucientemente planos que puedan ser aproximados por una recta. El algoritmo general ser el siguiente: a Procedure DibujaCurvaRecursivo (curva, ) if TestPlanaridad (curva, ) then DibujaRecta (curva) else SubdivideCurva (curva, Lcurva, Rcurva) DibujaCurvaRecursivo (Lcurva, )
Atencin: ste es un error t o e pico. Para encontrar el punto C que divide un tramo AB con el ratio 1/3 : 2/3 se calcula haciendo C = A + BA , pero nunca de la forma C = A+B . 3 3 Est claro? a
4

20

DibujaCurvaRecursivo (Rcurva, ) end La representacin Bezier es muy apropiada para ser dibujada con este o mtodo. La subdivisin es rpida, pues ya vimos en la seccin anterior que e o a o se necesitaban 6 sumas y 6 divisiones. El test de planaridad para un segmento Bezier es bastante sencillo. Una posible medida de cuan plano es el segmento podr ser considerar la distancia de P2 y P3 al segmento P1 P4 , como se ve a en la gura 15. Si esta distancia es inferior al umbral podemos considerar que el segmento curvo es lo sucientemente plano. Si no es as seguir , amos subdividiendo, y como comentbamos antes, con cada nueva subdivisin, los a o nuevos puntos de control obtenidos se encontrarn ms cerca de la curva, por a a lo que los nuevos convex hulls formados van siendo cada vez ms pequeos y a n estrechos.

Figure 13 La gran ventaja de la subdivisin recursiva es que evita los clculos ino a necesarios en aquellas zonas donde la curva sea ms o menos plana. En estos a lugares, apenas habr que subdividir, mientras que en las zonas donde la a curvatura sea ms elevada se calcularn ms puntos para poder visualizarla. a a a En el metodo iterativo, al tener que elegir un incremento de t constante, deber amos coger un incremento pequeo para poder mostrar las zonas de n alta curvatura, pero este incremento es usado tambin en las zonas planas e perdiendo mucho tiempo de clculo innecesario. Por otro lado, la desventaja a es que el clculo para el test de planaridad es cmputo extra que no ten a o amos en el primer mtodo. e

6.2 SUPERFICIES BICUBICAS PARAMETRICAS


Las supercies bicbicas paramtricas son una generalizacin de las curvas u e o cbicas paramtricas. Recordemos que la expresin general de una curva era u e o Q(t) = T M G. donde G era el vector de geometr Este vector representaba a. los valores geomtricos de la curva (por ejemplo, las coordenadas de los puntos e extremos y de los vectores tangente) y por lo tanto era un vector constante independiente del parmetro t. a

21

Para realizar el paso a supercies renombremos la variable t por s, es decir, Q(s) = S M G. Una vez hecho esto, el truco consiste en considerar que ahora el vector G ya no es constante, sino que var en 3D a lo largo de a una cierta trayectoria parametrizada por t. Es decir, si antes ten un punto a P1 que indicaba el comienzo de la curva, ahora tendr P1 (t), que me va a e indicar el comienzo de la supercie. La expresin resultante es: o
Q(s, t) = S M G(t) = S M

G1 (t) G2 (t) G3 (t) G4 (t)

Ahora, para un cierto t1 jo, Q(s, t1 ) es una curva, ya que G(t1 ) es constante. Haciendo a continuacin t = t2 , siendo t2 t1 un valor muy pequeo, o n Q(s, t2 ) ser una nueva curva ligeramente distinta de la anterior. Repitiendo a este proceso para muchos valores distintos de t entre 0 y 1 obtendremos una familia completa de curvas muy pegadas entre s El conjunto de todas esas . curvas denir una supercie. Si G(t) son curvas cbicas, diremos que la a u supercie es bicbica (dos variables, tercer grado) paramtrica. u e La forma general de la curva vendr separada en sus tres componentes: a

Al igual que ocurr con las curvas, en donde exist varios tipos dea an pendiendo de la matriz base, aqu tambin existirn otros tantos tipos de e a supercies distintas. Veamos las de Hermite y las de Bezier.

x(s, t) = S M Gx (t) y(s, t) = S M Gy (t) z(s, t) = S M Gz (t)

6.2.1 Supercies de Hermite Para derivar la expresin para las supercies de Hermite partiremos de la o expresin de su curva. Voy a desarrollarlo slo para la componente x. Las o o otras dos componentes se realizar de la misma manera. Como hacamos an antes, renombremos la variable t por s y hagamos que el vector de geometr a de Hermite GH deje de ser constante y pase a depender del parmetro t : a
x(s, t) = S MH GHx (t) = S MH

P1x (t) P4x (t) R1x (t) R4x (t)

Las funciones P1x (t) y P4x (t) denen las componentes x de los puntos extremos de la curva de parmetro s. Similarmente, R1x (t) y R4x (t) son los a

22

vectores tangentes a esos puntos. Para cualquier valor de t, existen dos puntos extremos jos y dos vectores tangentes concretos. En la gura 16 se muestran las funciones P1 (t) y P4 (t), y las curvas cbicas en s denidas para los valores u de t = 0.0, 0.2, 0.4, 0.6, 0.8 y 1.0.

Figure 14 Desarrollemos ahora las expresiones para cada uno de los elementos de GHx (t) : g11x g 12x P1x (t) = T MH g13x g 14x g31x g R1x (t) = T MH 32x g33x g34x

g21x g 22x ; P4x (t) = T MH g23x g 24x g41x g 42x ; R4x (t) = T MH g43x g44x

donde g1ix y g2ix son las componentes x de los elementos i-simo del vector e de geometr para la curvas P1 (t) y P4 (t) respectivamente, y g3ix y g4ix son a las componentes x de los elementos i-simo del vector de geometr para la e a curvas R1 (t) y R4 (t). Es decir, g23 por ejemplo ser la componente x del a vector tangente inicial para la curva P4 (t). F jense bien adems en un detalle muy importante: para un cierto t1 jo, a Pi (t1 ) representan puntos concretos, mientras que Ri (t1 ) representan vectores. Por lo tanto, evaluando para muchos valores de t, Pi (t) puede verse como una sucesin de puntos pegados entre s formando una curva, mientras que Ri (t) o ser como una familia de vectores que van variando suavemente partiendo a de Ri (0) hasta llegar a Ri (1). Reescribiendo las cuatro expresiones anteriores en una unica ecuacin o

23

obtenemos:

P1x (t) P4x (t) R1x (t) R4x (t)


siendo

= T MH GT Hx g14x g24x g34x g44x


GHx =

g11x g21x g31x g41x

g12x g22x g32x g42x

g13x g23x g33x g43x

Ahora, realizamos la traspuesta en ambos lados y nos queda:


P1x (t) P4x (t) R1x (t) R4x (t)

g11x g21x g31x g41x

g12x g22x g32x g42x

g13x g23x g33x g43x

g14x g24x g34x g44x

T MH

T T T = GHx MH T T

Por ultimo sustituimos esta expresin en la que ten o amos al comienzo para x(s, t) (y(s, t) y z(s, t) se obtienen de forma similar):

T x(s, t) = S MH GHx MH T T T y(s, t) = S MH GHy MH T T T z(s, t) = S MH GHz MH T T

Las tres matrices 4x4 GHx , GHy y GHz juegan el mismo papel en las supercies de Hermite que la matriz GH para las curvas5 . El signicado de los 16 elementos de GH puede entenderse en funcin del desarrollo que hemos o hecho. El elemento g11x es en realidad x(0, 0), ya que es el punto inicial para P1x (t), que a su vez es el punto inicial para x(s, 0). Similarmente, g12x es x(0, 1) ya que es el punto nal de P1x (t), que a su vez es el punto inicial para x(s, 1). Por otro lado, g13x es x/t(0, 0) ya que representa el vector inicial para P1x (t), y g33x es 2 x/st(0, 0) ya que es el vector inicial de R1x (t), que a su vez representa la pendiente inicial de x(s, 0). Usando estas interpretaciones, podemos reescribir manera: x(0, 1) x(0, 0) x(0, 0) t x(1, 1) x(1, 0) x(1, 0) t 2 GHx = s x(0, 0) s x(0, 1) st x(0, 0) 2 x(1, 0) x(1, 1) x(1, 0) s s st
5

la matriz GHx de esta x(0, 1) t x(1, 1) t 2 x(0, 1) st 2 x(1, 1) st


Cuando digo matrices de 4x4 me reero a que cada elemento de la matriz es un punto 3D. En trminos de nmeros reales, la resolucin de las matrices ser de 4x4x3 (48 e u o a nmeros). u

24

Dividamos la matriz en cuatro submatrices de 2x2. La submatriz superior izquierda de GHx contiene las coordenadas x de las cuatro esquinas de la supercie. Las submatrices superior derecha e inferior izquierda indican las componentes x de los vectores tangentes a lo largo de cada direccin paramtrica de la supercie. La submatriz inferior derecha mueso e tra las derivadas parciales cruzadas en las cuatro esquinas. Estas cuatro derivadas son llamadas twists, ya que su valor mide, por as decirlo, el grado de ondulacin de la esquina. En la gura 17 se indican los 16 elementos de o la matriz en relacin con la supercie que denen. o

Figure 15 Dejemos a un lado la matriz GH y recordemos de nuevo la expresin de o un segmento curvo de Hermite. Una curva de Hermite era en realidad una sucesin de segmentos conectados entre s para formar la curva completa. La o expresin Q(t) = T M G para todo t [0, 1] era en realidad la expresin o o de cada segmento, y para cada uno exist un vector G espec a co. Ahora retornemos a la supercie. A la expresin que acabamos de obtener Q(s, t) = o S M G M T T T para todo s, t [0, 1] la llamaremos patch, y llamaremos supercie de Hermite a una coleccin de patches conectados entre s Cada o . uno de estos patches tendr su matriz G espec a ca. Adems, al igual que en las curvas hab que garantizar la continuidad G1 a a o C 1 entre segmentos consecutivos, de la misma forma hay que garantizarla entre los patches conectados. Aunque hay algunas diferencias. Antes, cada segmento manten la continuidad en los dos puntos extremos que compart a a con sus dos segmentos vecinos. Ahora, cada patch debe mantener la continuidad en sus cuatro bordes que a su vez son compartidos por sus cuatro

25

patches vecinos. As mantener la continuidad C 0 entre dos patches signica que ambos , estn pegados perfectamente por uno de sus bordes, es decir, el borde nal a de un patch y el borde inicial del vecino son idnticos. Esto adems implica e a que los puntos de control para los dos patches que identican el borde deben coincidir. Para mantener la continuidad C 1 es preciso que los puntos de control tanto de la curva que identica el borde en ambos patches, como los que identican los vectores tangentes perpendiculares a lo largo de ese borde sean idnticos. e Por ejemplo, supongamos que el patch A est conectado en s = 1 con el a patch B en s = 0, como muestra la gura 18.Para garantizar la continuidad

Figure 16 G1 entre ambos sus matrices deben ser de esta forma: g21 g22 g g g g A : 21 22 23 24 ; B : kg41 kg42 g41 g42 g43 g44 g23 kg43 g24 kg44

siendo k > 0. Por supuesto, con k = 1 garantizar amos C 1 . En una supercie completa, cada patch deber cumplir esta restriccin con cada uno de sus a o cuatro vecinos.

6.2.2 Supercies de Bezier La expresin para las supercies de Bezier se derivan exactamente de la misma o manera que hicimos para las de Hermite. El resultado es:

T x(s, t) = S MB GBx MB T T T y(s, t) = S MB GBy MB T T T z(s, t) = S MB GBz MB T T

26

La matriz de geometr de Bezier, GB , a diferencia de la de Hermite, a consiste de 16 puntos de control, como puede verse en la gura 19.

Figure 17 Las supercies de Bezier son muy usadas para el diseo interactivo por las n mismas que eran utilizadas las curvas: tenemos un control preciso del patch moviendo los puntos de control, se sigue cumpliendo la propiedad de estar incluido dentro de su convex-hull, y la subdivisin en patches ms pequeos o a n se hace de forma sencilla. En la gura 20 puede apreciarse el efecto que obtenemos en el patch cuando estiramos uno de sus puntos de control.

Figure 18 La continuidad C 0 entre dos patches vecinos se consigue haciendo coincidir los cuatro puntos de control que tienen en comn. La continuidad G1 ocurre u

27

cuando los dos conjuntos de puntos de control a cada lado del borde comn u entre ambos son colineales con los puntos del borde. En el ejemplo mostrado en la gura 21 se ven dos patches con continuidad G1 , y se aprecia cmo los o segmentos P13 P14 P15 , P23 P24 P25 , P33 P34 P35 y P43 P44 P45 son todos rectos, y adems tienen el mismo ratio k entre sus dos partes, es decir, la distancia a entre P43 y P44 es k veces la que existe entre P44 y P45 . Obviamente, la continuidad C 1 ocurrir para k = 1. a

Figure 19

6.2.3 Clculo de normales a una supercie a El clculo de normales a una supercie, sea sta del tipo que sea, es siempre a e necesario para calcular la iluminacin del objeto, para encontrar los objetos o ms cercanos, para calcular reexiones, etc. En el caso de las supercies a bicbicas paramtricas es bien sencillo calcularlas. u e Comenzemos calculando el vector tangente en la direccin s de la supero cie Q(s, t) : Q(s, t) = (S M G M T T T ) = (S) M G M T T T = s s s 2 3s 2s 1 0 M G M T T T = De igula manera calculamos el vector tangente en la direccin t : o Q(s, t) = (S M G M T T T ) = S M G M T T T = t t t = S M G MT

3t2 2t 1 0

28

Recordemos que Q(s, t) representa al punto (s, t) de la supercie Q, y que es por lo tanto una terna de valores reales (sus coordenadas x, y, z). Por lo tanto, estos vectores tambin nos salen como ternas de valores (las compoe nentes x, y, z del vector). Llamemos entonces xs , ys , zs a las tres componentes del vector tangente en s, y xt , yt , zt a las del vector tangente en t. Ambos vectores tangente son paralelos a la supercie en el punto (s, t), y por lo tanto, su producto vectorial es perpendicular a la supercie. La expresin para la o normal en dicho punto es por tanto (gura 22): N(s, t) =
Q(s, t) Q(s, t) = ys zt yt zs zs xt zt xs xs yt xt ys s t

Q (s,t) t s Q

Figure 20

6.2.4 Dibujo de supercies Al igual que ocurr para dibujar curvas, las supercies pueden dibujarse por a evaluacin iterativa de los polinomios bicbicos o por subdivisin, la cual es o u o esencialmente una evaluacin adaptativa (dependiendo de la planaridad del o patch) de los polinomios. La evaluacin iterativa consiste en dibujar varias curvas a lo largo de t o para valores de s concretos, y luego dibujar varias curvas a lo largo s para valores de t concretos. Cada una de estas curvas es una cbica por lo que u aprovecha el algoritmo de la seccin anterior. El resultado puede verse en la o gura 23. El algoritmo ser el siguiente: a Procedure DibujaPatch ()

29

Figure 21 =1/n incremento para dibujar cada curva s =1/(ns -1) incremento en s entre cada curva en t t =1/(nt -1) incremento en t entre cada curva en s For s=0 to 1 by s do dibujamos una curva para cada s For t=0 to n- by do pintamos la curva 0<t<1 DibujaRecta (t,t+) For t=0 to 1 by t do dibujamos una curva para cada t For s=0 to n- by do pintamos la curva 0<s<1 DibujaRecta (s,s+) Este algoritmo es an ms costoso que para las curvas, ya que la ecuacin u a o 2 de la supercie debe ser evaluada 2n veces. El segundo mtodo es una extensin del procedimiento para las curvas e o que vimos en la seccin anterior. Los patches son subdivididos en nuevos o patches hastas que stos sean similares a cuadrilteros cuasi planos, los cuales e a se dibujan como pol gonos planos. Para evaluar el test de planaridad, una posible solucin es hallar el plano que pasa por tres de las cuatro esquinas o del patch y encontrar la distancia de cada uno de los 13 puntos de control restantes a dicho plano. Si la mayor de esas distancias est por debajo de un a cierto umbral entonces el patch es lo sucientemente plano. El algoritmo se muestra a continuacin: o Procedure DibujaPatchRecursivo (patch, ) If TestPlanaridad (patch, ) then DibujaCuadriltero (patch) a else SubdividePatch (patch, patch11, patch12, patch21, patch22) DibujaPatchRecursivo (patch11, ) DibujaPatchRecursivo (patch12, ) DibujaPatchRecursivo (patch21, ) DibujaPatchRecursivo (patch22, ) end La subdivisin del patch se realiza partiendo por la mitad a lo largo de un o

30

parmetro, por ejemplo s, y entonces subdividir cada uno de los dos patches a resultantes por la mitad a lo largo del otro parmetro t. Para ello partimos a de los 16 puntos de control iniciales del patch, y aplicamos el mtodo de e subdivisin de curvas para cada conjunto de cuatro puntos de control en la o direccin del parmetro s, con lo que obtenemos un conjunto de 7x4 puntos o a (ya que el mtodo de subdivisin de curvas me pasaba de un segmento de 4 e o puntos de control a 2 nuevos segmentos de 4 puntos con uno en comn = 7 u puntos). A continuacin paso a subdividir los conjuntos de cuatro puntos de o control en la direccin t, obteniendo nalmente un conjunto de 7x7 puntos. o Estos 49 puntos, cogidos en cuatro grupos de 16 (los puntos del medio son compartidos) forman los cuatro nuevos patches. Este proceso puede verse en la gura 24.

Figure 22 El procedimiento para dibujar el cuadriltero debe pintarlo como un a pol gono sombreado. El problema es si el valor no es lo sucientemente pequeo, porque en ese caso los cuatro esquinas del patch no ser coplanares. n an La mejor forma de hacerlo para evitar problemas es calcular el punto promedio de las esquinas y usarlo para pintar cuatro tringulos, tal y como se a muestra en la gura 25. La ventaja de los tringulos es que stos s que son a e siempre planos.

6.3 SUPERFICIES CUADRICAS


Las supercies cudricas naturales (esferas, conos, cilindros, paraboloides, a etc.) juegan un importante papel en la fabricacin de partes mecnicas, o a as como en la descripcin de supercies manufacturadas. Por ejemplo, los o balones de ftbol y baloncesto son esfricos, los embudos son cnicos, las latas u e o de cerveza son cil ndricas, y las antenas parablicas no lo son. Las cudricas o a son tambin importantes en la descripcin de supercies ms complejas. En e o a general, siempre que dispongamos de la expresin anal o tica de la supercie, lo mejor es usar una supercie cudrica. a

31

P C

Figure 23 La familia de supercies cudricas viene denida por las funciones de la a forma f (x, y, z) = ax2 + by 2 + cz 2 + 2dxy + 2eyz + 2f xz + 2gx + 2hy + 2jz + k = 0 Por ejemplo, si a = b = c = k = 1 y los restantes coecientes son cero, tendr amos la esfera unidad denida en el origen; si a = ... = f = 0, la ecuacin representa un plano; y as muchos ejemplos ms. Todos ellos o a diremos que pertenecen a la familia de las supercies cudricas. a Aparte de ser usadas en la mayor de los procesos de fabricacin de piezas a o se usan tambin en aplicaciones especializadas como el modelado molecular. e Entre sus ventajas cabe destacar lo fcil que es clcular la normal, testear a a de si un punto pertenece o no a la supercie, calcular la componente z para una x e y ja (muy importante para el clculo de las supercies ocultas) y a calcular intersecciones entre varias supercies. Como siempre, vamos a intentar expresar la ecuacin anterior en forma o matricial: PT Q P = 0
siendo Q =

a d f g

d b e h

f e c j

g h j k

yP =

x y z 1

La ventaja de tenerla as expresada es que podemos aplicarle a Q cualquier transformacin af y obtener la expresin de la cudrica transformada. Sea o n o a M la matriz de dicha transformacin, la nueva cudrica transformada nos o a quedar a: Q0 = (M 1 )T Q M 1 La expresin para el vector normal a la supercie cudrica f (x, y, z) = 0 o a

32

en cualquier punto ser a N(x, y, z) =

df dx

df dy

df dz

Esto es mucho ms fcil que en el caso de las supercies bicbicas, ya que aqu a a u podemos calcular la expresin general para la normal, cosa que no pod o amos hacer con stas, sino slamente calcular para puntos jos. e o

También podría gustarte