investigación gráficacion 3d

83
Si la normal al plano de proyecciones es (dx, dy, dz), requerimos que |dx|ǀ = |dy| = |dz| o ±dx = ±dy ± dz. Sólo hay ocho direcciones (una en cada octante) que satisfacen esta condición. En la figura 6.8 se muestra la construcción de tina proyección isométrica a lo largo de una de estas direcciones, (1, -1, -1), Plano de proyección Normal al plano de proyección Proyector y x z Fig. 3.43.Construcción de una proyección isométrica de un cubo. La proyección isométrica tiene una útil propiedad: los tres ejes principales tienen la misma reducción frontal, lo que permite que las mediciones sobre los ejes se realicen con la misma escala ( de aquí proviene el nombre: iso, que quiere decir “igual” y métrico de medición). Además, las proyecciones de los ejes principales forman ángulos iguales de 120° entre sí. Identificación de superficies y línea visible También es posible aclarar las relaciones de profundidad en un despliegue de armazón al identificar de alguna manera las líneas visibles. el método más sencillo consiste en realzar las líneas visibles o desplegarlas en un color diferente. Otra técnica que se utiliza en forma común para los diseños de ingeniería, es el despliegue de áreas no visibles como líneas de rayas. Otro planteamiento consiste en eliminar no sólo las líneas visibles, como en las figuras 3.44 (b) y 3.44 (c). Pero al eliminar las líneas ocultas también se elimina la información Instituto Tecnológico de Morelia Capítulo 3: Modelado Geométrico Graficación 179

Upload: paco-reyes

Post on 24-Sep-2015

10 views

Category:

Documents


0 download

DESCRIPTION

información de transformaciones tridimensionales

TRANSCRIPT

  • Si la normal al plano de proyecciones es (dx, dy, dz), requerimos que |dx| = |dy| = |dz| o dx = dy dz. Slo hay ocho direcciones (una en cada octante) que satisfacen esta

    condicin. En la figura 6.8 se muestra la construccin de tina proyeccin isomtrica a lo largo de una de estas direcciones, (1, -1, -1),

    Plano de!

    proyeccin

    Normal al!

    plano de !

    proyeccin

    Proyector

    y

    x

    z

    Fig. 3.43.Construccin de una proyeccin isomtrica de un cubo.

    La proyeccin isomtrica tiene una til propiedad: los tres ejes principales tienen la

    misma reduccin frontal, lo que permite que las mediciones sobre los ejes se realicen con la misma escala ( de aqu proviene el nombre: iso, que quiere decir igual y mtrico de medicin). Adems, las proyecciones de los ejes principales forman ngulos iguales de 120 entre s.

    Identificacin de superficies y lnea visible

    Tambin es posible aclarar las relaciones de profundidad en un despliegue de armazn

    al identificar de alguna manera las lneas visibles. el mtodo ms sencillo consiste en realzar las lneas visibles o desplegarlas en un color diferente. Otra tcnica que se utiliza en forma comn para los diseos de ingeniera, es el despliegue de reas no visibles como lneas de rayas.

    Otro planteamiento consiste en eliminar no slo las lneas visibles, como en las figuras

    3.44 (b) y 3.44 (c). Pero al eliminar las lneas ocultas tambin se elimina la informacin

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    179

  • acerca de la forma de las superficies traseras de un objeto. Estos mtodos de lnea visible tambin identifican alas superficies visibles de los objetos.

    (a) (b) (c)

    Fig. 3.44.Las representacin en armazn de la pirmide en la

    parte (a) no contiene informacin de profundidad para indicar si la direccin de la vista es (b) hacia abajo desde una

    posicin sobre el pice o (c) hacia arriba desde una posicin

    abajo de la base.

    Cuando se deben desplegar objetos con color o superficie sombreadas, aplicamos

    procedimientos de representacin de superficie para las superficies visibles, de modo que se oscurezcan las superficies ocultas. Algunos algoritmos de superficie visible establecen la visibilidad pixel por pixel a lo largo del plano de vista; otros algoritmos determinan la visibilidad para las superficies de un objeto como un todo.

    3.3.Representacin tridimensional de objetos

    Superficies de polgonos

    La representacin de frontera que ms se utiliza para un objeto grfico tridimensional es un conjunto de polgonos de superficie que encierran el interior del objeto. Muchos sistemas grficos almacenan todas las descripciones de objetos como conjuntos de polgonos de superficie. Esto facilita y acelera la representacin de superficie y el despliegue

    de objetos, ya que todas las superficies se describen con ecuaciones lineales. Por esta razn, con frecuencia nos referimos a las descripciones de polgonos como objetos grficos estndar.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    180

  • En algunos casos, una representacin de polgonos es la nica disponible, pero muchos paquetes permiten que los objetos se describan como otros esquemas, como superficies de

    spline, que se convierten en representaciones de polgonos para el procesamiento.

    Una representacin de polgono para un poliedro define con precisin las caractersticas de superficie del objeto. Pero para otros objetos, las superficies se teselan (o tejan) para producir la aproximacin del enlace polgonos. En la figura 3.45, la superficie de un cilindro se representa como un enlace de polgonos. Tales representaciones son

    comunes en las aplicaciones de diseo y modelado de slidos, ya que el contorno de armazn se puede desplegar con rapidez para dar una indicacin general de la estructura de la superficie.

    Fig. 3.45.Representacin de estructura de alambre de un cilindro

    con eliminacin de las lineas posteriores (ocultas).

    Las representaciones realistas se producen al interpolar los patrones de sombreado a

    lo ancho de las superficies de los polgonos para eliminar o reducir la presencia de fronteras de aristas de polgonos. Y la aproximacin del enlace de polgonos a una superficie curva se puede mejorar al dividir la superficie en facetas de polgonos ms pequeos.

    Tablas de polgono

    Especificamos una superficie de polgono con un conjunto de coordenadas de vrtice y parmetros de atributos asociados. Conforme se da entrada a la informacin para cada

    polgono, los datos se colocan en tablas que se van a utilizar en el subsecuente procesamiento, despliegue y manipulacin de objetos en una escena.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    181

  • Las tablas de datos de polgonos se pueden organizar en dos grupos: tablas geomtricas y tablas de atributos. Las tablas geomtricas de datos contienen las

    coordenadas de vrtices y los parmetros para identificar a orientacin espacial de las superficies del polgono.

    La informacin de los atributos para un objeto incluye los parmetros que especifican el grado de transparencia del objeto y las caractersticas de reflectividad y textura de su superficie.

    Una organizacin conveniente para almacenar los datos geomtricos es crear tres listas: una tabla de vrtices, una tabla de aristas y una tabla de polgonos. Los valores de las coordenadas para cada vrtice en el objeto se almacenan en la tabla de vrtices. La tabla de aristas contiene indicadores en la tabla de vrtices para identificar los vrtices para cada arista del polgono.

    La tabla de polgonos contiene indicadores en la tabla de aristas para identificar las aristas para cada polgono. Este esquema se ilustra en la figura 3.46 para dos polgonos adyacentes sobre la superficie de un objeto. Adems, a los objetos individuales y sus caras de polgonos componentes se pueden asignar identificadores de objeto y de faceta para una referencia fcil.

    V1

    V2

    V3

    V4

    V5

    E1

    E2

    E4

    E5

    E6

    E3S1

    S2

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    182

  • TABLA DE VRTICES

    TABLA DE ARISTAS TABLA DE SUPERFIC IE DE POLGONOS

    V1: x1, y1, z1 E1: V1, V2 S1: E1, E2, E3V2: x2, y2, z2 E2: V2, V3 S1: E3, E4, E5, E6V3: x3, y3, z3 E3: V3, V1V4: x4, y4, z4 E4: V3, V4V5: x5, y5, z5 E5: V4, V5

    E6: V5, V1

    Fig. 3.46.Superficies de polgonos adyacentes, que se forman con

    seis aristas y cinco vrtice y su representacin de tabla de datos geomtricos.

    Al listar los datos geomtricos en tres tablas, como en la figura anterior, se

    proporciona una referencia conveniente a los componentes individuales (vrtices, aristas y polgonos) de cada objeto. Tambin, el objeto se puede desplegar de manera eficiente al utilizar los datos de la tabla de aristas para trazar las lneas de los componentes. Un orden posible es emplear solo dos tablas: una de vrtices y una de polgonos. Pero este sistema es menos conveniente y algunos aristas se pueden trazar dos veces.

    Otra posibilidad es utilizar solo una tabla de polgonos pero esto duplica la informacin sobre las coordenadas, ya que los valores explcitos de las coordenadas se listan para cada vrtice en cada polgono. Tambin la informacin sobre las aristas se tendran que reconstruir de las listas de vrtices en las tabla de polgonos

    Podemos agregar informacin adicional a las tablas de datos de la figura anterior para

    una extraccin ms rpida de la informacin Por ejemplo, podramos ampliar la tabla de aristas para incluir ms indicadores en la tabla de polgonos de modo que las aristas comunes entre los polgonos se pudieran identificar con mayor rapidez (figura 3.47). Esto es en particular til para los procedimientos de representacin que deben variar con suavidad el sombreado de la superficie a travs de las aristas de un polgono al siguiente. En

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    183

  • forma similar, la tabla de vrtices se podra- expandir de manera que se haga una referencia cruzada de los vrtices con las aristas correspondientes.

    E1: V1, V2, S1

    E2: V2, V3, S1

    E3: V3, V1, S1, S2

    E4: V3, V4, S2

    E5: V4, V5, S2

    E6: V5, V1, S2

    Fig. 3.47.Tabla de aristas para las superficies de la figura anterior

    expandidas para incluir apuntadores a la tabla de polgonos

    La informacin geomtrica adicional que por lo general se almacena en las tablas de

    datos incluye la inclinacin para cada arista y las extensiones de las coordenadas para cada polgonos Al dar entrada a los vrtices podemos calcular las inclinaciones de las aristas y rastrear los valores de las coordenadas para identificar los valores mnimo y mximo de x, y y z para los polgonos individuales. Las inclinaciones de las aristas y la informacin sobre el recuadro de entrelazado para los polgonos se necesitan en el procesamiento subsecuente,

    por ejemplo, en la representacin de superficies. Las extensiones de las coordenadas tambin se utilizan en algunos algoritmos de determinacin de superficie visible.

    Ya que las tablas geomtricas de datos pueden contener extensas listas de vrtices y aristas para los objetos complejos, es importante que se verifique la consistencia y la totalidad de los datos. Cuando se especifican las definiciones de los vrtices,arista y

    polgonos es posible, sobre todo en las aplicaciones interactivas, que se cometan ciertos errores de captura que distorsionaran el despliegue del objeto. Mientras ms informacin se incluya en las tablas de datos, ser ms fcil verificar los errores. Por tanto, la verificacin de los errores es ms fcil cuando se utilizan tres tablas de datos (vrtices aristas y polgonos) ya que este esquema proporciona la mayor cantidad de informacin. Algunas de

    las pruebas que se pueden llevar a cabo mediante un paquete de graficacin son (1) que

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    184

  • cada vrtice se lista como un extremo para dos aristas por lo menos, (2) que cada arista es parte de un polgono por lo menos, (3) que cada polgono est cerrado, (4) que cada

    polgono tiene por lo menos una arista compartida y (5) que si la tabla de aristas contiene indicadores para los polgonos cada arista a la que se hace referencia mediante un indicador de polgono tiene un indicador recproco hacia el polgono.

    Ecuaciones de plano

    Para producir un despliegue de un objeto tridimensional, debemos procesar la representacin de los datos de entrada para el objeto a travs de varios procedimientos.

    Estos pasos del procesamiento incluyen la transformacin de las descripciones de modelado y de coordenadas mundiales a coordenadas de vista, despus a coordenadas de dispositivo; la identificacin de las superficies visibles; y la aplicacin de los procedimientos de representacin de superficie. Para algunos de estos procesos, necesitamos la informacin acerca de la orientacin espacial de los componentes individuales de superficie del objeto.

    Esta informacin se obtiene de los valores de las coordenadas de los vrtices y las ecuaciones que describen los planos de los polgonos.

    3.27. Ax + By + Cz + D = 0

    La ecuacin para una superficie de plano se puede expresar en la forma donde (x, y, z) es cualquier punto en el plano y los coeficientes A, B, C y D son constantes que describen las propiedades espaciales del plano. Podemos obtener los valores de A, B, C y D al resolver

    un conjunto de tres ecuaciones de plano al utilizar los valores de las coordenadas para tres puntos no colineales en el plano. Para este propsito podemos seleccionar tres vrtices

    sucesivos de polgono (x1, y1, z1), (x2, y2, z2) y (x3, y3, z3) y resolver el siguiente conjunto de ecuaciones lineales del plano simultneas para las relaciones A/D, B/D y C/D:

    3.28.

    (A / D)xk + (B / D)yk + (C / D)zk = 1k = 1,2,3

    La solucin para este conjunto de ecuaciones se puede obtener en forma de

    determinante, utilizando la regla de Cramer, como

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    185

  • 3.29.

    A =1 y1 z11 y2 z21 y3 z3

    C =x1 y1 1x2 y2 1x3 y3 1

    B =x1 1 z1x2 1 z2x3 1 z3

    D =x1 y1 z1x2 y2 z2x3 y3 z3

    Al ampliar los determinantes, podemos escribirlos clculos para los coeficientes del

    plano en la forma

    3.30.

    A = y1(z2 z3) + y2 (z3 z1) + y3(z1 z2 )B = z1(x2 x3) + z2 (x3 x1) + z3(x1 x2 )C = x1(y2 y3) + x2 (y3 y1) + x3(y1 y2 )D = x1(y2z3 y3z2 ) x2 (y3z1 y1z3) x3(y1z2 y2z1)

    Conforme se da entrada en la estructura de datos del polgono a los valores de los vrtices y otra informacin los valores para A, B, C y D se calculan para cada polgono y se almacenan con los dems datos del polgono.

    La orientacin en el espacio de la superficie de un plano se puede describir con el vector normal para el plano,como se muestra en la figura anterior. Este vector normal de

    superficie tiene los componentes cartesianos (A, B, C) donde los parmetros A, B y C son los coeficientes de plano que se calculan en las ecuaciones 3.30.

    Ya que por lo general manejamos superficies de polgonos que encierran el interior de un objeto, necesitamos distinguir entre los dos lados de la superficie. El lado del plano que da al interior del objeto se llama cara "interna" y el lado visible o de afuera es la cara

    "externa". Si los vrtices del polgono se especifican en una

    direccin opuesta a la de las manecillas del reloj cuando se ve el lado externo del plano en un sistema de coordenadas del lado derecho, la direccin del vector normal ser de adentro hacia afuera. Esto se demuestra para un plano de un cubo de unidad en la figura siguiente.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    186

  • ZY

    X

    1

    1

    1

    Fig. 3.48.La superficie sombreada de polgono del cubo unitario

    tiene la ecuacin de plano x -1 = 0 y el vector normal N = (1, 0, 0)

    Para determinar los componentes del vector normal para la superficie sombreada que

    se muestra en la figura anterior, seleccionamos tres de los cuatro vrtices a lo largo de la frontera del polgono. Estos puntos se seleccionan en direccin opuesta a las manecillas del reloj al ver desde afuera el cubo hacia el origen. Las coordenadas para estos vrtices en el orden seleccionado, se pueden utilizar en las ecuaciones 3.30 para obtener los coeficientes del plano: A = 1, B =O, C = O, D = -1. De esta forma, el vector normal para este plano est

    en la direccin del eje positivo de x.

    Los elementos de la normal del plano tambin se pueden obtener al utilizar un clculo

    vectorial de producto cruz. Una vez ms seleccionamos tres posiciones de vrtice VI, V2 y

    V3, que se toman en orden opuesto a la direccin de las manecillas del reloj cuando se ve la

    superficie de afuera hacia adentro en un sistema cartesiano del lado derecho. Al formar dos

    vectores, uno de V1 a V2 y el otro de V1, a V3, calculamos N como el producto cruz de los

    vectores:

    3.31. N = (v2 v1) (v3 v1)

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    187

  • Esto genera valores para los parmetros de plano A, B y C. De esta manera podemos obtener el valor para el parmetro D al sustituir estos valores y las coordenadas para uno de

    los vrtices del polgono en la ecuacin del plano 3.21 y despejar D. La ecuacin del plano se puede expresar en la forma vectorial utilizando la normal N y la posicin P de cualquier punto en el plano como

    3.32. N P = D

    Las ecuaciones del plano se utilizan tambin para identificar la posicin de los puntos espaciales con respecto de las superficies planas de un objeto. Para cualquier punto (x, y, z) que no se encuentra en un plano con parmetro A, B, C, D, tenemos

    Ax + By + Cz + D 0

    Podemos identificar el punto como adentro o afuera de la superficie del plano de acuerdo con el signo (negativo o positivo) de Ax + By + Cz + D:

    si Ax + By + Cz + D < O, el punto (x, y, z) est adentro de la superficie

    si Ax + By + Cz + D > O, el punto (x, y, z) est afuera de la superficie

    Estas pruebas de desigualdad son vlidas en un sistema cartesiano del lado derecho, siempre y cuando los parmetros del plano A, B, C y D se calculen utilizando los vrtices seleccionados en un orden contrario al sentido de las manecillas del reloj cuando se ve la superficie en una direccin de afuera hacia adentro. Por ejemplo, en la figura 3.48,cualquier

    punto afuera del plano sombreado satisface la desigualdad x - 1 > O, en tanto que cualquier punto adentro del plano tiene un valor de coordenada de x menor que 1,

    Enlaces de polgono

    Algunos paquetes de grficos proporcionan varias funciones de polgonos para el modelado de objetos. Una superficie de plano sencilla se puede especificar con una funcin como fillArea. Pero cuando las superficies de los objetos se deben tejer, es ms conveniente

    especificar las facetas de la superficie con una funcin de enlace. Un tipo de enlace de

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    188

  • polgonos es la secuencia de tringulos Esta funcin produce n - 2 tringulos conectados, como se muestra en la figura siguiente, dadas las coordenadas para n vrtices.

    Fig. 3.49.Hilera de tringulos que se forma con 11 tringulos, los

    cuales conectan 13 vrtices.

    Otra funcin similar es el enlace cuadriteral que genera un enlace de (n -1) por (m -1) cuadrilaterales, dadas las coordenadas para una matriz, de vrtices de n por m. La figura 3.50 muestra 20 vrtices que forman un enlace de 12 cuadrilteros.

    Fig. 3.50.Enlace cuadriteral que contiene 12 cuadriterales que se

    construyen partir de una matriz de entrada de vrtices de 5

    por 4.

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    189

  • Cuando los polgono se especifican con ms de tres vrtices, es posible que no todos los vrtices caigan en un plano. Esto se puede deber a errores numricos o a errores al

    seleccionar las posiciones de las coordenadas para los vrtices. Una manera de controlar esta situacin es simplemente dividir los polgono en tringulos. Otra estrategia que en ocasiones se sigue es aproximar los parmetros de los planos A, B y C. Podemos realizar esta operacin al promediar los mtodos o podemos proyectar el polgono en los planos de las coordenadas. Al utilizar el mtodo de la proyeccin, tomamos A proporcional al rea de

    la proyeccin del polgono en el plano de yz, B proporcional al rea de proyeccin en el plano de xz y C proporcional al rea de proyeccin en el plano xy.

    Los sistemas de graficacin de alta calidad por lo general modelan objetos con enlaces de polgono y establecen una base de datos de informacin geomtrica y de atributos para facilitar el procesamiento de las facetas del polgono. Los sistemas de presentacin de

    polgonos implementados con hardware rpido se incorporan en esos sistemas con la capacidad de desplegar desde cientos de miles hasta un milln o ms de polgonos sombreados por segundo(por lo general tringulos), incluyendo la aplicacin de la textura de superficies y los efectos especiales de iluminacin.

    Lneas y superficies curvas

    Los despliegues de lneas y superficies curvas tridimensionales se pueden generar a

    partir de un conjunto de entrada de funciones matemticas que definen los objetos o de un conjunto de puntos de datos especficos para el usuario. Cuando las funciones se especifican, un paquete puede proyectar las ecuaciones de definicin para una curva hacia el plano de despliegue y trazar las posiciones de pixel a lo largo de la trayectoria de la funcin proyectada Para las superficies, con frecuencia se tesela una descripcin funcional

    para producir una aproximacin de enlace de polgonos a la superficie. Por lo general, esto se realiza con parches de polgono triangulares para asegurar que todos los vrtices de cualquier polgono estn en un solo plano. Los polgonos especficos con cuatro o ms vrtices tal vez no tengan todos stos en el mismo plano. Algunos ejemplos de superficies de despliegue que se generan a partir de descripciones funcionales incluyen los cudricos y

    supercudricos.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    190

  • Cuando un conjunto de puntos de coordenadas discretos se utiliza para especificar la forma de un objeto, se obtiene una descripcin funcional que se adapte mejor a los puntos

    designados de acuerdo con las restricciones de la aplicacin. Las representaciones de spline son ejemplos de esta clase de curvas y superficies. Estos mtodos se utilizan por lo general para disear formas nuevas de objetos, para digitalizar trazos y describir trayectorias de animacin. Los mtodos de adaptacin de las curvas se utilizan tambin para desplegar grficas de valores de datos al adaptar funciones especficas de curva al conjunto discreto

    de datos, empleando tcnicas de regresin como el mtodo de mnimos cuadrados.

    Las ecuaciones de curva y superficie se pueden expresar ya sea en forma paramtrica o no paramtrica Para las aplicaciones de las grficas por computadora, por lo general, las representaciones paramtricas son ms convenientes.

    Superficies cuadrticas (cudricas)

    Una clase de objetos que se utiliza con frecuencia son las superficies cudricas, que se

    describen con ecuaciones de segundo grado (cuadrticas). Incluyen esferas, elipsoides, toros, paraboloides e hiperboloides. Las superficies cudricas en particular las esferas y elipsoides, son elementos comunes de las escenas grficas y es frecuente que estn disponibles en los paquetes de grficos como primitivos de los cuales se pueden elaborar objetos ms complejos.

    Esfera

    En las coordenadas cartesianas, una superficie esfrica con radio r que se centra en el origen de las coordenadas se define como el conjunto de puntos (x, y, z) que satisfacen la ecuacin

    3.33. x2 + y2 + z2 = r2

    Tambin podemos describir la superficie esfrica en forma paramtrica al utilizar los ngulos de latitud y longitud:

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    191

  • eje de las z

    eje de las y

    eje de las x

    P = (x, y, z)

    r

    !

    "

    Fig. 3.51.Posicin de las coordenadas paramtricas (r, , ) sobre la superficie de una esfera con radio r.

    3.34.

    x = r cos cos, 2 2

    y = r cos sin, z = r sin

    La representacin paramtrica en las ecuaciones 3.34 proporciona un rango simtrico para los parmetros angulares y . En forma alternativa, podramos despejar las ecuaciones paramtricas al utilizar coordenadas esfricas estndar, donde el ngulo se especifica como la colatitud (figura 3.52). Entonces, se define sobre el rango 0 , y con frecuencia se toma en el rango 0 < < 2 . Tambin podramos establecer la representacin al utilizar los parmetros u y v definidos sobre el rango de 0 a 1 al sustituir ()=u y = 2 u.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    192

  • eje de las z

    eje de las y

    eje de las x

    P

    !

    Fig. 3.52.Parmetros de coordenadas esfricas (r, , ), al utilizar la colatitud para el ngulo .

    Elipsoide

    Una superficie elipsoide se puede describir como una extensin de una superficie

    esfrica donde los radios en tres direcciones mutuamente perpendiculares pueden tener diferentes valores (figura 3.53). La representacin cartesiana para los puntos sobre la superficie de un elipsoide que se centra en el origen es

    Z

    Y

    X

    r

    r

    y

    x

    rz

    Fig. 3.53.Elipsoide con radios rx, ry, rx que se centra en el origen

    de las coordenadas

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    193

  • 3.35.

    xrx

    2

    +yry

    2

    +zrz

    2

    = 1

    Y una representacin paramtrica ara la elipsoide en trminos del ngulo de latitud () y el ngulo de longitud en la figura 3.53 es

    3.36.

    x = rx cos cos,2

    2

    y = ry cos sin, z = rz sin

    Toro

    Un toro es un objeto en forma de dona, como se ilustra en la figura 3.37. Se puede generar al girar una circunferencia u otro cnico alrededor de un eje especfico. La representacin cartesiana para los puntos sobre la superficie de un toro se pueden expresar en la forma

    3.37.

    r xrx

    2

    +yry

    2

    2

    +zrz

    2

    = 1

    donde r es cualquier valor de compensacin o descentrado especfico. Las

    representaciones paramtricas para un toro son similares a las de una elipse, excepto que el ngulo se extiende a lo largo de 360. Al utilizar ngulos de latitud y longitud y ,podemos describir la superficie del toro como el conjunto de puntos que satisfacen

    3.38.

    x = rx (r + cos)cos,2

    2

    y = ry (r + cos)sin, z = rz sin

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    194

  • eje de las z

    eje de las x

    eje de las y

    plano xy

    (x, y, z)

    0

    0

    r = rx y

    rz

    (x, y, z)

    !

    "

    Fig. 3.54.Toro con corte transversal circular que se entra en el

    origen de las coordenadas

    Representaciones de Spline

    En la terminologa del dibujo mecnico una spline es una banda flexible que se utiliza

    para producir una curva suave a travs de un conjunto de puntos designados. Varios pesos pequeos se distribuyen a lo largo de la banda para mantenerla en posicin sobre la mesa de dibujo mientras se traza la curva. El trmino curva de spline al principio se refera a una curva que se traza de esta manera. Podemos describir esa curva en forma matemtica con una funcin cbica polinmica cuyas primera y segunda derivadas son continuas a travs de

    las distintas secciones de la curva.

    En las grficas por computadora, el trmino curva de spline ahora se refiere a cualquier curva compuesta que se forma con secciones polinmicas que satisfacen condiciones especficas de continuidad en la frontera de las piezas. Una superficie de spline se puede

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    195

  • describir con dos conjuntos de curvas ortogonales de spline. Existen varias clases de especificaciones de spline que se utilizan en las aplicaciones grficas. Cada especificacin

    individual se refiere slo a un tipo particular de polinomio con ciertas condiciones especficas de frontera.

    Las splines se utilizan en las aplicaciones grficas para diseo formas curvas y de superficie, para digitalizar trazos para el almacenamiento en la computadora y especificar trayectorias de animacin para los objetos o la cmara en una escena. Las aplicaciones de

    CAD tpicas para las splines incluyen el diseo de carrocera de automviles, superficies de aeronaves y naves espaciales, as como cascos de embarcaciones.

    Interpolacin y aproximacin de splines

    Especificamos una curva de spline al proporcionar un conjunto de posiciones de coordenadas, que se conocen como puntos de control, que indican la forma general de la curva. Estos puntos de control se ajustan despus con funciones polinmicas paramtricas

    continuas en el sentido de la pieza en una de dos maneras.

    Fig. 3.55.Conjunto de sis puntos de control que se interpolan con

    secciones polinmicas continuas en el sentido de la pieza.

    Cuando las secciones polinmicas se ajustan de modo que la curva pasa a travs de

    cada punto de control, como en la figura 3.55, se dice que la curva que resulta realiza la interpolacin del conjunto de puntos de control. Por otra parte, cuando los polinomios se ajustan a la trayectoria general del punto de control sin pasar necesariamente a travs de ningn punto de control,se dice que la curva que resulta se aproxima al conjunto de puntos de control (figura 3.56).

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    196

  • Fig. 3.56.Conjunto de seis puntos de control que se aproximan

    con secciones polinmicas continuas en el sentido de la pieza.

    Las curvas de interpolacin se utilizan por lo general para digitalizar trazos o

    especificar trayectorias de animacin. Las curvas de aproximacin se utilizan sobre todo como herramientas de diseo para estructurar las superficies de los objetos.

    Una curva de spline se define, modifica y manipula con operaciones en los puntos de control. Al seleccionar en forma interactiva las posiciones espaciales para los puntos de control, un diseador puede establecer una curva inicial. Despus de que se despliega el

    ajuste polinomial para un conjunto determinado de puntos de control, el diseador puede cambiar de posicin todos o algunos de los puntos de control para reestructurar la forma de la curva. Ademas, la curva se puede trasladar, girar o escalar con las transformaciones que se aplican a los puntos de control. Los paquetes de CAD tambin pueden insertar los puntos de control adicionales para ayudar a un diseador a ajustar las formas de la curva.

    La frontera de polgono convexo que encierra un conjunto de puntos de control se conoce como casco convexo. Una forma de imaginar la forma de un casco convexo considera una banda de hule que se estira alrededor de las posiciones de los puntos de control de modo que cada uno de stos se encuentra ya sea en el permetro del casco o adentro de ste (figura 3.57).

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    197

  • (a)

    p

    p

    p

    p

    0

    1

    2

    3

    (b)

    p0

    p1

    p2

    p3

    Fig. 3.57.Formas de casco convexo (lneas de rayas) para dos

    conjuntos de puntos de control.

    Los cascos convexos proporcionan una medida para la desviacin de una curva o

    superficie desde la regin que limita los puntos de control. Algunas splines estn limitadas por el casco convexo, que asegura que los polinomios sigan con suavidad los puntos de control sin oscilaciones errticas. Tambin la regin de polgono adentro del casco convexo es til en algunos algoritmos como una regin de recorte.

    Por lo general, una polilnea que conecta la secuencia de puntos de control para una

    spline de aproximacin se despliega para recordar a un diseador el orden de los puntos de

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    198

  • control. Con frecuencia,este conjunto de segmentos de la lnea conectados se conoce como la grfica de control de la curva.

    (a)

    (b)

    p0

    p1

    p2

    p3

    p0

    p1

    p2

    p3

    Fig. 3.58.Formas de grfica de control (lneas de rayas) para dos

    conjuntos diferentes de puntos de control

    Otros nombres para la serie de secciones de la lnea recta que conectan los puntos de

    control en el orden especfico son polgono de control y polgono caracterstico. La figura 3.58 ilustra la forma de la grfica de control para las secuencias del punto de control en la figura 3.57.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    199

  • Condiciones de continuidad paramtrica

    Para asegurar una transicin suave de una seccin de una curva paramtrica alrededor de una pieza a la siguiente, podemos imponer varias condiciones de continuidad en los

    puntos de conexin. Si se describe cada seccin de una spline como un conjunto de funciones de coordenadas paramtricas de la forma

    3.39.

    x = x(u),y = y(u),z = z(u)u1 u u2

    establecemos la continuidad paramtrica al comparar las derivadas de secciones curvas adyacentes en su frontera comn.

    La continuidad paramtrica de orden cero, que se describe como continuidad C0, slo

    implica que las curvas se unen. Es decir, los valores de x, y y z que se evalan en u para la primera seccin de la curva son iguales, de modo respectivo, a los valores x, y y z que se

    evalan en u1 para la siguiente seccin de la curva.

    La continuidad paramtrica de primer orden, que se denomina continuidad C1, significa

    que las primeras derivadas paramtricas (lnea de tangente) de las funciones de

    coordenadas en la ecuacin 3.39 para dos secciones curvas sucesivas son iguales en su

    punto de unin. La continuidad paramtrica de segundo orden, o continuidad C2, implica que

    tanto la primera como la segunda derivada paramtrica de las dos secciones curvas son las mismas en la interseccin.

    Las condiciones de continuidad parametrica de orden superior se definen de manera

    similar. En la figura 3.59 se presentan ejemplos de la continuidad C0, C1 y C2.

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    200

  • (a)

    (b)

    (c)

    Fig. 3.59.Construccin por piezas de una curva al unir dos segmentos de

    curva utilizando distintos rdenes de continuidad: (a) slo continuidad de orden cero; (b) continuidad de primer orden y (c) continuidad de

    segundo orden.

    Con la continuidad de segundo orden, los ndices de cambio de los vectores de

    tangente para las secciones que se conectan son equivalentes en su interseccin. As la lnea de tangente realiza una transicin suave de una seccin de la curva a la siguiente (figura 3.59(c)).

    Pero con la continuidad de primer orden, los ndices de cambio de los vectores de tangente para las dos secciones son muy diferentes (figura 3.59(b)), de modo que es

    posible que las formas generales de las dos secciones adyacentes presenten un cambio abrupto.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    201

  • Con frecuencia, la continuidad de primer orden es suficiente para digitalizar trazos y algunas aplicaciones de diseo,en tanto que la continuidad de segundo orden es til para

    establecer trayectorias de animacin par a el movimiento de la cmara y para muchos requerimientos de precisin del CAD.

    Una cmara que se desplaza a lo largo de la trayectoria de la curva que aparece en la figura 3.59 con pasos iguales en el parmetro u experimentar un cambio brusco en la aceleracin en la frontera de las dos secciones y provocar una discontinuidad en la

    secuencia del movimiento. No obstante, si la cmara se desplazara a lo largo de la trayectoria de la figura 3.59(c), la secuencia de marco para el movimiento efectuar una transicin suave a travs de la frontera.

    Condiciones de continuidad geomtrica

    Un mtodo alternativo para unir dos secciones curvas sucesivas consiste en especificar condiciones para la continuidad geomtrica. En este caso, slo necesitamos que

    las derivadas paramtricas de las dos secciones sean proporcionales entre s en su frontera comn en vez de ser equivalentes.

    La continuidad geomtrica de orden cero, que se describe como continuidad G0, es la

    misma que la continuidad paramtrica de orden cero. Es decir, las dos secciones curvas deben tener la misma posicin de coordenadas en el punto de la frontera. La continuidad

    geomtrica de primer orden, o continuidad G1, implica que las primeras derivadas

    paramtricas son proporcionales en la interseccin de dos secciones sucesivas.

    Si expresamos la posicin paramtrica en la curva como P(u), la direccin del vector de tangente P(u), pero no necesariamente su magnitud, ser la misma para dos secciones

    curvas sucesivas en su punto de unin de acuerdo con la continuidad G1. La continuidad

    geomtrica de segundo orden,o continuidad G2, implica que tanto la primera como la

    segunda derivada paramtrica de las dos secciones curvas son proporcionales en su

    frontera. De acuerdo con la continuidad G2, las curvaturas de la segunda curva se ajustarn

    en la posicin de unin.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    202

  • (a)

    P

    C

    P

    C

    P

    (b)

    0

    1

    1

    2

    2

    P0

    C1

    P1

    C2

    P2

    Fig. 3.60.Tres puntos de control que se ajustan con dos secciones curvas

    unidas con (a) continuidad paramtrica y (b) continuidad geomtrica

    donde el vector tangente de la curva C3 en el punto P1 tiene una

    magnitud mayor que el vector tangente de la curva C1 en P1.

    Una curva que se genera con condiciones de continuidad geomtrica es similar a una

    que se genera con continuidad paramtrica pero con leves diferencias en la forma de la curva. La figura 3.60 ilustra una comparacin de continuidad geomtrica y paramtrica. Con la continuidad geomtrica la curva se jala hacia la seccin que tiene el vector de tangente ms alto.

    Especificaciones de spline

    Existen tres mtodos equivalentes para especificar una representacin de spline

    particular: (1) podemos establecer el conjunto de condiciones de frontera que se imponen en la spline; (2) podemos establecer la matriz que caracteriza la spline; o (3) podemos establecer el conjunto de funciones de combinacin (o funciones base) que determinan la manera en que se combinan las restricciones geomtricas en la curva para calcular posiciones a lo largo de la trayectoria de la curva.

    A fin de ilustrar estas tres especificaciones equivalentes, suponga que tenemos la siguiente representacin polinmica cbica paramtrica para la coordenada de x a lo largo de la trayectoria de una seccin de la spline:

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    203

  • 3.40.

    x(u) = axu3 + bxu2 + cxu + dx ,0 u 1

    Por ejemplo, se podr establecer las condiciones de frontera para esta curva, en las

    coordenadas de extremo x(0) y x(1) y en las primeras derivadas paramtricas en los extremos x(0) y x(1). Estas cuatro condiciones de frontera son suficientes para determinar

    los valores para los cuatro coeficientes ax, bx. cx y dx.

    A partir de las condiciones de frontera, obtenemos la matriz que caracteriza esta

    curva de spline al volver a expresar de nuevo la ecuacin 3.40 como el producto matricial

    3.41.

    x(u) = u3u2u

    axbxcxdx

    =U C

    donde U es la matriz rengln de potencia del parmetro u y C es la matriz columna de coeficientes. Al utilizar la ecuacin 3.41, es posible expresar las condiciones de frontera en forma de matriz y despejar la matriz de coeficientes C como

    3.42. C = MsplineiMgeom

    donde Mgeom es una matriz de columnas de cuatro elementos que contiene los valores

    de restriccin geomtrica (condiciones de frontera) en la spline y Mspline es la matriz de 4

    por 4 que transforma los valores de restriccin geomtrica a los coeficientes polinmicos y ofrece una caracterizacin para la curva de spline.

    La matriz Mgeom contiene los valores de coordenadas del punto de control y otras

    restricciones geomtricas que se han especificado. Por tanto, podemos sustituir la representacin de matriz para C en la ecuacin 3.42 para obtener

    3.43. x(u) =UiMsplineiMgeom

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    204

  • La matriz Mspline que caracteriza la representacin de una spline, en ocasiones llamada

    matriz base,es de particular utilidad para transformar de una representacin de spline a otra.

    Por ltimo podemos ampliar la ecuacin 3.43 con el propsito de obtener una representacin polinmica para la coordenada de x en trmino de parmetro de restriccin geomtrica

    3.44. x(u) = gk iBFk

    k=0

    3

    (u)

    donde gk son los parmetros de restriccin como las coordenadas del punto de control

    y la pendiente de la curva en los puntos de control, y BFk(u) son las funciones de

    combinacin polinmica. En las secciones siguientes, analizamos algunas splines que se

    utilizan en forma comn as como su matriz y especificaciones de funciones de combinacin.

    Curvas y Superficies de Bezier

    Pierre Bzier, ingeniero francs desarroll este mtodo de aproximacin de splines para utilizarlo en el diseo de las carroceras de los automviles Renault. Las splines de Bzier tienen varias propiedades que hacen que sean muy tiles y convenientes para el diseo de curvas y superficies. Asimismo, es fcil implementarlas. Por estos motivos, las splines de Bzier estn disponibles en forma comn en varios sistemas de CAD, en paquetes generales

    de grficas y en paquetes seleccionados de dibujo y pintura.

    Curvas de Bzier

    En general, es posible ajustar una curva de Bzier para cualquier nmero de puntos de control. El nmero de puntos de control que se debe aproximar y su posicin relativa determinan el grado del polinomio de Bzier. Del mismo modo que con las splines de interpolacin se puede especificar una curva de Bzier con condiciones de frontera con una

    matriz caracterstica o con funciones de combinacin.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    205

  • Para curvas generales de Bzier la especificacin ms conveniente es la funcin de combinacin.

    Suponga que tenemos n + 1 posiciones de puntos de control: pk = (xk, yk, zk) con k en

    el rango de O a n. Es posible combinar estos puntos de coordenadas para producir el siguiente vector de posicin P(u), que describe la trayectoria de una funcin polinmica de

    Bzier aproximada entre p0 y pn.

    3.45.

    P(u) = pkBEZk ,n (u)k=0

    n

    (0 u 1)

    Las funciones de combinacin de Bzier BEZk,n (u) son los polinomios de Bernstein:

    3.46. BEZk ,n (u) = C(n,k)uk (1 u)n k

    donde C(n, k) son los coeficientes del binomio:

    3.47.C(n,k) = n!k! n k( )!

    De la misma manera, podemos definir las funciones de combinacin de Bzier con

    el clculo recursivo

    3.48.

    BEZk ,n (u) = (1 u)BEZk ,n1(u) + uBEZk1,n1(u),

    n k 1

    con BEZk,k = uk y BEZ0,k = (1 - u)

    k. La ecuacin vectorial 10-40 representa un conjunto

    de tres ecuaciones paramtrica para las coordenadas individuales de la curva:

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    206

  • 3.49.

    x(u) = xkk=0

    n

    BEZk ,n (u)

    y(u) = ykk=0

    n

    BEZk ,n (u)

    z(u) = zkk=0

    n

    BEZk ,n (u)

    Como una regla, una curva de Bzier es un polinomio de grado uno menos el nmero de puntos de control que se utilizan: tres puntos generan una parbola, cuatro puntos una

    curva cbica y as en forma sucesiva. La figura 3.61 demuestra la apariencia de algunas curvas de Bzier para varias selecciones de puntos de control en el plano xy(z = 0). Sin embargo, con ciertas posiciones de los puntos de control obtenemos polinomios de Bzier degenerados. Por ejemplo, una curva de Bezier que se genera con tres puntos de control colineales es un segmento de lnea recta. Y un conjunto de puntos de control que se

    encuentran en su totalidad en la misma posicin de coordenadas produce una curva de Bzier que es un solo punto.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    207

  • (a) (b)

    (c) (d)

    (e)

    p

    p

    p

    0

    1

    2

    p0

    p1

    p2

    p3

    p0

    p1

    p2

    p3

    p0

    p1

    p2

    p3

    p0

    p1

    p2

    p3

    p4

    Fig. 3.61.Ejemplos de dos curvas de Bezier bidimensionales que

    se generaron a partir de tres, cuatro y cinco posiciones de punto de control.

    Las curvas de Bzier se encuentran de manera regular en paquetes de pintura y dibujo,

    as como en sistemas de CAD, puesto que su implementacin es fcil y su capacidad es considerable en el diseo de curvas. Se pueden establecer mtodo eficientes para determinar las posiciones de coordenadas a lo largo de una curva de Bzier al utilizar

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    208

  • clculos recursivos. Por ejemplo, los coeficientes del binomio sucesivos se pueden calcular como

    3.50.C(n,k) = n k +1k C(n,k 1)

    paran nk.

    Propiedades de las curvas de Bzier

    Una propiedad muy til de una curva de Bzier es que siempre pasa a travs del primero y el ltimo puntos de control. Es decir, las condiciones de frontera en los dos extremos de la curva son

    3.51.

    P(0) = p0P(1) = pn

    Los valores de las primeras derivadas paramtricas de una curva de Bzier los extremos se pueden calcular a partir de las coordenadas del punto de control como

    3.52.

    P '(0) = np0 + np1P '(1) = npn1 + npn

    Por tanto, la pendiente en el principio de la curva es a lo largo de la lnea que une los

    dos ltimos extremos. De modo similar, las segundas derivadas paramtrica de una curva de Bzier en los extremos se calculan como

    3.53.

    P ''(0) = n(n 1) (p2 p1 ) (p1 + p0 ) P ''(1) = n(n 1) (pn2 pn1) (pn1 + pn )

    Otra propiedad importante de cualquier curva de Bzier es que cae adentro del casco convexo (frontera de polgono convexo) de los puntos de control. Esto se desprende de las propiedades de las funciones de combinacin de Bzier: todas son positivas y su suma

    siempre es 1,

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    209

  • 3.54.

    P(0) = p0P(1) = pn

    de manera que cualquier posicin de la curva slo es la suma ponderada de las posiciones de punto de control. La propiedad de casco convexo para una curva de Bzier

    garantiza que el polinomio siga con suavidad los puntos de control sin oscilaciones errticas.

    Tcnicas de diseo utilizando curvas de Bzier

    Las curvas cerradas de Bzier se generan al especificar el primero y el ltimo punto de control en la misma posicin, como en el ejemplo que aparece en la figura 3.62.

    p1 p

    0

    p2

    p3

    p4

    p3

    =

    Fig. 3.62.Curva de Bzier cerrada que se genera al especificar el

    primero y el ltimo punto de control en la misma posicin.

    Asimismo, al especificar mltiples puntos de control en una sola posicin de

    coordenadas se obtiene ms peso para esa posicin.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    210

  • p0

    p3

    p4

    p1

    p2

    =

    Fig. 3.63.Se puede lograr que una curva de Bzier pase ms cerca

    de una posicin de coordenadas determinada al asignar mltiples puntos de control a esa posicin.

    En la figura 3.63 se da entrada a una sola posicin de coordenadas como dos puntos

    de control y se jala la curva resultante ms cerca de esta posicin.

    Podemos ajustar una curva de Bzier para cualquier nmero de puntos de control, pero esta operacin requiere el clculo de funciones polinmicas de grado superior. Cuando se deben generar curvas complicadas, se pueden formar al unir varias secciones de Bzier de grado inferior. Unir secciones ms pequeas tambin nos ofrece un mejor control sobre la

    forma de la curva en regiones pequeas.

    Dado que las curvas de Bzier pasan a travs de los extremos, es fcil comparar secciones curvas (continuidad de orden cero). Asimismo, las curvas de Bzier presentan la propiedad importante de que la tangente para la curva en el extremo est a lo largo de la lnea que une ese extremo al punto de control adyacente. Por tanto, a fin de obtener una

    continuidad de primer orden entre secciones curvas, podemos elegir que los puntos de

    control p0 y p1 de una seccin nueva est a lo largo de la misma lnea recta que los

    puntos de control pn-1 y p1 de la seccin anterior (figura 3.64).

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    211

  • p1

    p2

    p'3

    p0

    p'0

    p'1

    p'2

    Fig. 3.64.Curva con continuidad de primer orden

    Cuando las dos secciones curvas tienen el mismo nmero de puntos de control,

    obtenemos una continuidad C1 al seleccionar el primer punto de control de la nueva seccin

    como el ltimo punto de control de la seccin previa al colocar el segundo punto de la seccin nueva en la posicin

    pn + (pn pn1)

    As los tres puntos de control son colineales y tienen el mismo espaciado.

    Obtenemos una continuidad C2 entre dos secciones de Bzier al calcular la posicin del

    tercer punto de control en una seccin nueva en trminos de las posiciones de los tres ltimos puntos de control de la seccin anterior como

    pn2 + 4(pn pn1)

    Requerir una continuidad de segundo orden entre dos secciones curvas de Bzier puede ser una restriccin innecesaria. Esto es cierto, en especial, con curvas cbicas que slo tienen cuatro puntos de control por seccin. En este caso, la continuidad de segundo orden fija la posicin de los tres primeros puntos de control y nos deja slo un punto que podemos utilizar para ajustar la forma del segmento de curva.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    212

  • Curvas cbicas de Bzier

    Muchos paquetes de grficas slo ofrecen funciones de spline cbica Esto da una flexibilidad de diseo considerable en tanto que se evitan los dems clculos necesarios con

    polinomios de orden superior. Las curvas cbicas de Bzier se generan con cuatro puntos de control. Las cuatro funciones de combinacin para curvas cbicas de Bezier que se obtienen al sustituir n = 3 en la ecuacin de curvas Bezier con polinomios Bernstein, son

    3.55.

    BEZ0,3(u) = (1 u)3

    BEZ1,3(u) = 3u(1 u)2

    BEZ2,3(u) = 3u2 (1 u)BEZ3,3(u) = u3

    En la figura 3.65 se ilustran los trazos de las cuatro funciones cbicas de combinacin de Bzier. La forma de las funciones de combinacin determina la manera en que los puntos

    de control influyen sobre la forma de la curva para los valores del parmetro u en el rango

    de 0 a 1.En u =O, la nica funcin de combinacin no cero es BEZ0,3 que tiene el valor 1. En

    u = 1, la nica funcin no cero es BEZ3,3 con un valor de 1 en ese punto. De esta manera

    la curva cbica de Bzier siempre pasar a travs de los puntos de control p1, y p2.

    Las otras funciones, BEZ1,3 y BEZ2,3 influyen en la forma de la curva en valores

    intermedios del parmetro u, de modo que la curva resultante se inclina hacia los puntos p1,

    y p2. La funcin de combinacin BEZ1,3 es el mximo en u = 1/3 y BEZ2,3 es el mximo en u

    = 2/3.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    213

  • 0.2

    0.4

    0.6

    0.8

    1

    0 0.2 0.4 0.6 0.8 1

    (a)

    u

    BEZ (u)0,3

    (b)

    0.2

    0.4

    0.6

    0.8

    1

    0 0.2 0.4 0.6 0.8 1u

    BEZ (u)1,3

    0.2

    0.4

    0.6

    0.8

    1

    0 0.2 0.4 0.6 0.8 1u

    (c)

    BEZ (u)2,3

    0.2

    0.4

    0.6

    0.8

    1

    0 0.2 0.4 0.6 0.8 1u

    (d)

    BEZ (u)3,3

    Fig. 3.65.Las cuatro funciones de combinacin de Bzier para las

    curvas cbicas (n = 3)

    Ntese en la figura 3.65, que cada una de las cuatro funciones de combinacin es no cero en el rango entero del parmetro u. Por tanto, las curvas de Bzier no permiten un control local de la forma de la curva. Si decidimos cambiar la posicin de cualquiera de los puntos de control, se afectar la curva completa.

    En las posiciones finales de la curva cbica de Bezier, las primeras derivadas paramtrica (pendientes) son

    P '(0) = 3(p1 2p0 ),P '(1) = (3p3 p2 )

    Y las segundas derivadas paramtricas son

    pn2 + 4(pn pn1)

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    214

  • Al extender las expresiones polinmicas para la s funciones de combinacin, podemos escribir la funcin de punto cbico de Bzier en la forma matricial

    P(u) = u3u2u1 iMBEZ

    p0p1p2p3

    donde la matriz de Bzier es

    MBEZ =

    1 3 3 13 6 3 03 3 0 01 0 0 0

    Tambin podramos introducir parmetros adicionales con el propsito de permitir el ajuste de la tensin y el sesgo de la curva, como lo realizamos con las splines de interpolacin.

    Superficies de Bzier

    Se pueden utilizar dos conjuntos de curvas de Bzier ortogonales para disear la superficie de un objeto al especificar un entrelazado de entrada de los puntos de control. La

    funcin del vector paramtrico para la superficie de Bzier se forma como el producto cartesiano de las funciones de combinacin de Bzier :

    P(u,v) = pj ,kBEZ j ,m (v)BEZk ,nk=0

    n

    (u)j=0

    m

    con pj,k especificando la ubicacin de los puntos de control (m + 1) por (u + 1).

    La figura 3.66 ilustra dos trazos de superficie de Bzier. Los puntos de control se conectan por medio de lneas de rayas y las lneas slidas muestran curvas de constante u y

    constante v. Cada curva de constante u se traza al variar v sobre el intervalo de 0 a 1, con

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    215

  • u fija en uno de los valores en su intervalo de unidad. Las curvas de la constante v se trazan en forma similar.

    (a)

    (b)

    Fig. 3.66.Las superficies de Bzier que se construyen para la

    parte (a) m = 3, n = 3 y en la parte (b) m = 4. Los puntos de control se conectan con lneas de rayas.

    Las superficies de Bzier tienen las mismas propiedades que las curvas de Bzier y

    proporcionan un mtodo conveniente para las aplicaciones de diseo interactivo. Para cada parche de superficie, podemos seleccionar un entrelazado de puntos de control en el plano de terreno xy, as elegimos elevaciones sobre el plano de terreno para los valores de las coordenadas z de los puntos de control. De esta manera los parches se pueden unir al utilizar las restricciones de frontera.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    216

  • Lnea de frontera

    L L1 2

    Fig. 3.67.Superficie de Bzier compuesta que se cre con dos secciones de Bzier que se

    unen en la lnea de frontera que se indica. Las lneas de rayas conectan puntos de control especficos. Se establece la continuidad de primer orden al determinar la razn

    de longitud L1 con respecto de la longitud L2 constante para cada lnea colineal de

    puntos de control a lo largo de la frontera entre las secciones de la superficie

    La figura 3.67 ilustra una superficie que se forma con dos secciones de Bzier. Al igual

    que con las curvas, se asegura una transicin suave de una seccin a la otra al establecer tanto la continuidad de orden cero como la de primer orden en la frontera. La continuidad de orden cero se obtiene al elegir puntos de control a lo largo de una lnea recta a travs de la frontera y al mantener una relacin constante de segmentos de lnea colineales para cada conjunto de puntos de control especfico a travs de las fronteras de la seccin.

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    217

  • Resumen

    Se han desarrollado mucha representaciones para modelar la amplia variedad de objetos y materiales, que podramos querer visualizar en una escena de grficas por computadora. En la mayora de los casos, una representacin tridimensional de un objeto se crea mediante un paquete de software como un objeto grfico estndar cuyas superficies

    se muestran como una malla poligonal.

    La representacin de frontera que ms se utiliza para un objeto grfico tridimensional es un conjunto de polgonos de superficie que encierran el interior del objeto. Muchos sistemas grficos almacenan todas las descripciones de objetos como conjuntos de polgonos de superficie.

    Una clase de objetos que se utiliza con frecuencia son las superficies cudricas, que se describen con ecuaciones de segundo grado (cuadrticas). Incluyen esferas, elipsoides, toros, paraboloides e hiperboloides.

    Una spline es una banda flexible que se utiliza para producir una curva suave a travs de un conjunto de puntos designados. Varios pesos pequeos se distribuyen a lo largo de la

    banda para mantenerla en posicin sobre la mesa de dibujo mientras se traza la curva.

    En las grficas por computadora, el trmino curva de spline ahora se refiere a cualquier curva compuesta que se forma con secciones polinmicas que satisfacen condiciones especficas de continuidad en la frontera de las piezas.

    Pierre Bzier, ingeniero francs desarroll el mtodo de aproximacin de splines ahora

    conocido como Curvas Bezier. Las splines de Bzier tienen varias propiedades que hacen que sean muy tiles y convenientes para el diseo de curvas y superficies.

    Las superficies spline son una extensin bidimensional de las curvas spline. Las superficies spline se pueden entender como una curva spline en la que el lugar cada punto de control es sustituido por una curva spline del mismo tipo de la curva inicial.

    El modelado slido insiste en crear solamente modelos completos de slidos, modelos que son adecuados para responder algoritmicamente a cualquier pregunta geomtrica que se formule.

    I ns t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    218

  • Los principales esquemas de modelado de slido son el de representacin de fronteras (Boundary representation o B-Rep) y el de geometra constructiva de slidos (Constructive

    Solid Geometry o CSG).

    La representacin de fronteras describe el objeto en funcin de sus fronteras superficiales: vrtices, reas y caras. En la geometra slida constructiva un objeto se almacena como un rbol con operadores en los nodos internos y primitivas simples en las hojas.

    En general, las proyecciones transforman puntos en un sistema de coordenadas de dimensin n a puntos en un sistema de coordenadas con dimensin menos que n.

    La proyeccin de objetos tridimensionales es definida por rayos de proyeccin rectos, llamados proyectores que emanan de un centro de proyeccin, pasan por cada punto del objeto e intersecan un plano de proyeccin para formar la proyeccin.

    Por lo general, el centro de proyeccin se encuentra a una distancia finita del plano de proyeccin. En algunos tipos de proyecciones es conveniente pensar en funcin de un centro de proyeccin que tienda a estar infinitamente lejos.

    Las proyecciones de perspectiva de cualquier conjunto de lneas paralelas que no sean paralelas al plano de conversin convergen en un punto de fuga. En el espacio tridimensional

    elpunto de fuga se puede considerar como la proyeccin de un punto en el infinito.

    Las proyecciones de perspectiva se clasifican de acuerdo con el nmero de puntos de fuga principales y por ende, con respecto al numero de ejes que corta el plano de proyeccin.

    Las proyecciones paralelas se clasifican en dos tipos, dependiendo de la relacin etre la

    direccin de la proyeccin y la normal al plano de proyeccin. En las proyecciones paralelas ortogrficas, estas direcciones son las mismas (o en sentido contrario): de manera que la direccin de la proyeccin es normal al plano de proyeccin.

    Los tipos ms comunes de proyecciones ortogrficas son la de relacin frontal, elevacin superior o elevacin de plano y la de elevacin lateral. En todas ellas, el plano de

    proyeccin es perpendicular al eje principal, que por lo tanto es la direccin de la proyeccin

    Ins t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    219

  • Las proyecciones ortogrficas axonomtricas usan planos de proyeccin que no son normales a un eje principal y que por ende muestran varias caras de un objeto al mismo

    tiempo.

    Las proyecciones oblicuas, la segunda clase de proyecciones paralelas, difieren de las proyecciones ortogrficas en que Ia normal al plano de proyeccin y la direccin de la proyeccin son diferentes. Las proyecciones oblicuas combinan las propiedades de las proyecciones ortogrficas frontal, superior y lateral con las de una proyeccin

    axonomtrica: el plano de proyeccin es normal a un eje principal, de manera que la proyeccin de la cara del objeto paralela a este plano permite medir ngulos y distancias.

    La proyeccin isomtrica es una proyeccin axonomtrica de uso comn. La normal al plano de proyeccin (y por consiguiente la direccin de la proyeccin) forma ngulos iguales con respecto a cada eje principal.

    I n s t i t u to Tecno lg i co de Mo re l i a Cap tu l o 3 : Mode l ado Geomt r i co

    G ra f i c ac i n

    220

  • BibliografaBuss, Samuel R. 3-D computer Graphics. California, USA. Cambridge University Press.

    Demel , John T./ Michael J. Miller. Grficas por computadora. Mxico, D.F. Ed. Mc. Graw Hill.

    Foley , James D./ Andries Van Dam. Introduccin a la graficacin por computadora. Mxico, D.F. Ed. Addison Wesley Iberoamericana.

    Hearn, Donald / Baker, M. Pauline. Graficas por computadora 2a edicin. Mxico, D.F. Ed. Prentice Hall Hispanoamericana.

    Hill, F. S. Jr. Computer Graphics Using Open Gl. USA. Ed. Prentice-Hall.

    Paluszny Marco et. al. Mtodos de Bzier y B-Splines. USA. Ed. Springer-Verlag.

    Parent, Richard. Computer Animation: Algorithms and Techniques. Ed. Morgan Kauffman.

    Pavlidis, Theo. Algorithms for Graphics and Image processing. USA. Computer Science Press.

    Preparata, Franco P. Computational Geometry. USA. Ed. Springer-Verlag

    Ramos, Ricardo. Informtica Grfica. Universidad de Oviedo. Oviedo, Espaa.

    Rogers , David .F. Procedural Elements of Computer Graphics. 2a edicin. USA. Ed. Mc Graw Hill.

    Shneider, Philip / Eberly, David H. Geometric tools for computer graphics. California, USA., Morgan Kaufmann Publishers.

    Torres, J.C., Diseo asistido por ordenador. Granada, Espaa. Universidad de Granada.

    Universidad de Valencia. Informtica Grfica. Valencia, Espaa.

    Ins t i t u to Tecno lg i co de Mo re l i a B ib l i og ra f a

    G ra f i c ac i n

    221

  • Universidad de Vigo. Introduccin a las grficas por computadora. Vigo, Espaa.

    Universitat Jaume I de Castell. Diseo y Fabricacin Asistido por Ordenador. Valencia,

    Espaa.

    Universidad Politcnica de Valencia. Tecnicas Grficas. Valencia, Espaa.

    Vince, John. Mathematics for computer graphics. 2a edicin. USA. Springer - Verlag.

    Wikipedia. Formatos Grficos. http://es.wikipedia.org. Enero de 2007.

    Wright, Richard S. OpenGLOrg. OpenGL SuperBible. Estados Unidos.

    Ins t i t u to Tecno lg i co de Mo re l i a B ib l i og ra f a

    G ra f i c ac i n

    222

  • Apndice A Introduccin a OpenGL

    En OpenGL se proporciona una biblioteca bsica de funciones para especificar

    primitivas grficas, atributos, transformaciones geomtricas, transformaciones de visualizacin y muchas otras operaciones. Est diseada para ser independiente del hardware, por lo tanto, muchas operaciones como las subrutinas de entrada y salida, no estn incluidas en la biblioteca bsica.

    Sin embargo, las subrutinas de entrada y salida y muchas funciones adicionales estn

    disponibles en bibliotecas auxiliares que se han desarrollado para programas OpenGL.

    A.1. Sintaxis bsica de OpenGL

    Los nombres de las funciones de la biblioteca bsica de OpenGL (tambin llamada de

    biblioteca del ncleo de OpenGL utilizan como prefijo GL y cada palabra que forma parte del nombre de una funcin tiene su primera letra en mayscula. Los siguientes ejemplos ilustran este convenio de denominacin.

    glBegin, glClear, glCopyPixels, glPolygonMode

    Algunas funciones requieren que a uno (o ms) de sus argumentos se les asigne una constante simblica al especificar por ejemplo. un nombre de parmetro, un valor para un parmetro o un modo particular. Todas estas constantes comienzan con las letras GL en

    maysculas. Adems, las palabras que forman parte de una constante con nombres se escriben en maysculas y el guin bajo (_) se utiliza como separador entre todas estas palabras del nombre. Los siguientes son unos pocos ejemplos de los varios cientos de constantes simblicas disponibles para uso con las funciones de OpenGL.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    223

  • GL_2D, GL_RGB, GL_CCW, GL_POLYGON, GL_AMBIENT AND DIFFUSE

    Las funciones de Openl tambin esperan tipos de datos especficos. Por ejemplo, un parametro de una funcin de OpenGL podra esperar un valor que se especifica como un

    entero de 32 bits. Pero el tamao de la especificacin de un entero puede ser diferente en las distintas mquinas. OpenGL tiene incorporada una serie de nombres para tipos de datos especficos tales como

    Glbyte, GLshort, GLint, GLfloat, GLdouble, GLboolean

    Cada nombre de tipo de datos comienza con las letras maysculas GL y, a continuacin, un identificador de tipo de datos estndar, escrito con letras minsculas.

    A algunos argumentos de funciones de OpenGL se les puede asignar valores

    empleando una matriz que enumera un conjunto de valores de datos, Esta opcin se utiliza para especificar una lista de valores como un puntero a una matriz, en lugar de especificar cada elemento de la lista explcitamente como un argumento, Un ejemplo tpico del uso de esta opcin es la especificacin de los valores de las coordenadas xyz.

    A.2. Bibliotecas relacionadas

    Existe un gran nmero de bibliotecas relacionadas para la realizacin de operaciones especiales, adems de la biblioteca bsica de OpenGL. La utilidad GLU (OpenGL Utility) proporciona subrutinas para la configuracin de las matrices de visualizacin y proyeccin,

    descripcin de objetos complejos mediante lneas y aproximaciones poligonales, visualizacin de cudricas y splines B empleando aproximaciones lineales, procesamiento de operaciones de representacin de superficies y otras tareas complejas. Toda implementacin de OpenGL incluye la biblioteca GLU. Todos los nombres de las funciones GLU comienzan con el prefijo glu.

    Tambin existe un conjunto de herramientas orientadas a objetos basado en OpenGL llamado Open Inventor que proporciona subrutinas y formas de objetos predefinidos para su uso en aplicaciones tridimensionales interactivas. Este conjunto de herramientas est escrito en C++.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    224

  • Para crear grficos utilizando OpenGL, necesitamos en primer lugar configurar una ventana de visualizacin en nuestra pantalla de vdeo. Se trata simplemente de la zona

    rectangular de la pantalla en la nuestra imagen se mostrar. No podemos crear directamente la ventana de visualizacin con las funciones de OpenGL bsicas, ya que esta biblioteca contiene unicamente funciones grficas independientes del dispositivo, y las operaciones de gestin de ventanas dependen de la computadora que estemos utilizando. Sin embargo, existen varias bilbiotecas de sistema de ventanas que soportan las funciones

    de OpenGL en una gran variedad de mquinas.

    La ampliacin de OpenGL al sistema de ventanas X (GLX, OpenGL Extension to the X Window System) proporciona un conjunto de subrutinas que utilizan como prefijo las letras glx. Los sistemas Apple pueden utilizar la interfaz para operaciones de gestin de ventanas Apple GL (AGL). Los nombres de las funciones de esta biblioteca utilizan como prefijo agl.

    En los sistemas que utilizan Microsoft Windows, las subrutinas WGL proporcionan una interfaz de Windows a OpenGL. Estas subrutinas utilizan como prefijo las letras wgl. El gestor PGL (Presentation Manager to OpenGL) es una interfaz para el sistema operativo 0S/2 de IBM, que utiliza el prefijo pgl en las subrutinas de la biblioteca. Y el kit de herramientas GLUT (OpenGL Utility Toolkit) proporciona una biblioteca de funciones para interactuar con

    cualquier sistema de ventanas. Las funciones de la biblioteca GLUT utilizan como prefijo glut. Esta biblioteca tambin contiene mtodos para describir y representar superficies y curvas cudricas.

    Ya que GLUT es una interfaz con otros sistemas de ventanas dependientes del dispositivo, podemos utilizar GLUT para que nuestros programas sean independientes del

    dispositivo.

    A.3. Archivos de cabecera

    En todos nuestros programas grficos, necesitaremos incluir el archivo de cabecera

    para la biblioteca del ncleo de OpenGL. En la mayora e las aplicaciones tambin necesitaremos GLU. Y necesitaremos incluir el archivo de cabecera para el sistema de ventanas. Por ejemplo, en Microsoft Windows, el archivo de cabecera para acceder a las subrutinas de WGL es windows.h. Este archivo de cabecera se debe indicar antes de los

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    225

  • archivos de cabecera de OpenGL y GLU, ya que contiene macros que se necesitan en la versin de la biblioteca de OpenGL para Microsoft Windows. Por tanto, el archivo fuente en

    este caso debera comenzar con

    #include #include #include

    Sin embargo si utilizamos GLUT para gestionar las operaciones de gestin de ventanas, no necesitaremos incluir gl.h y glu.h, porque GLUT garantiza que estos archivos se incluirn correctamente. Por tanto, podemos reemplazar los archivos de cabecera de OpenGL y GLU por

    #include

    Tambin podramos incluir gl.h y glu.h, pero al hacerlo seramos redundantes y se podra ver afectada la portabilidad del programa.

    Adems, a menudo necesitaremos incluir archivos de cabecera que eel cdigo C++ requiere. Por ejemplo,

    #include #include #include

    Con el nuevo estndar ISO/ANSI para C++, estos archivos de cabecera se denominan cstudio, cstdlib y cmath.

    A.4. Gestin de la ventana de visualizacin empleando GLUT

    Para comenzar, podemos considerar un nmero mnimo y simplificado de operaciones para mostrar una imagen. Ya que estamos empleando la utilidad GLUT (OpenGL Utility

    Toolkit), nuestro primer paso consiste en inicializar GLUT. Esta funcin de inicializacin podra tambin procesar argumentos cualesquiera de la lnea de comandos, pero no necesitaremos utilizar estos parmetros en nuestro primer ejemplo de programa.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    226

  • Realizamos la inicializacin de GLUT con la siguiente lnea:

    glutInit(&argc, &argv);

    A continuacin, podemos indicar que se cree una ventana de visualizacin en la

    pantalla con un ttulo en su barra de ttulo. Esto se realiza con la funcin

    glutCreateWindow(Un programa de ejemplo con OpenGL);

    Donde el nico argumento de esta funcin puede ser cualquier cadena de caracteres que queramos utilizar como ttulo de la ventana de visualizacin.

    Ahora hay que especificar que va a contener la ventana de visualizacin. Para ello, creamos una imagen empleando las funciones de OpenGL y se pasa la definicin de la imagen a la subrutina llamada glutDisplayFunc, que asigna nuestra imagen a la ventana

    de visualizacin. Como ejemplo, suponga que disponemos del cdigo de OpenGL para describir un segmento en un procedimiento llamado lineSegment. Entonces la siguiente llama a funcin pasa la descripcin del segmento a la ventana de visualizacin.

    glutDisplayFunc(lineSegment);

    Pero la ventana de visualizacin no est an en la pantalla. Necesita una funcin ms de GLUT para completar las operaciones de procesamiento de ventana. Despus de la

    ejecucin de la siguiente lnea, todas las ventanas de visualizacin que hayas creado, incluyendo su contenido grfico, se activarn.

    glutMainLoop();

    Esta funcin debe ser la ltima en nuestro programa. sta muestra los grficos iniciales y pone el programa en un bucle infinito que comprueba la entrada procedente de dispositivos, tales como un ratn o un teclado. Nuestro primer ejemplo no ser interactivo, por lo que el programa nicamente continuar mostrando la imagen hasta que cerremos la

    ventana de visualizacin.

    Aunque la ventana de visualizacin que creamos tendr una posicin y un tamao predeterminados, podemos establecer estos parmetros empleando funciones adicionales del kit de herramientas GLUT. Utilizamos la funcin glutInitWindowPosition para porporcionar una posicin inicial para la esquina superior izquierda de la ventana de visualizacin. Esta

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    227

  • posicin se especifica en coordenadas enteras de pantalla, cuyo origen est en la esquina superior izquierda de la pantalla.

    Por ejemplo, la siguiente lnea especifica que la esquina superior izquierda de la ventana de visualizacin se debera colocar 50 pixeles a la derecha del borde izquierdo de la pantalla y 100 pixeles hacia abajo desde el borde superior de la pantalla.

    glutInitWindwPosition(50,100);

    Anlogamente, la funcin glutInitWindowsSize se utiliza para establecer la anchura y la altura en pixeles de la ventana de visualizacin. Por tanto, especificamos una ventana de

    visualizacin con una anchura inicial de 400 pixeles y una altura de 300 pixeles con la lnea siguiente,

    glutInitWindowsSize(400,300);

    Despus de que la ventana de visualizacin est en pantalla, podemos volver a cambiar tanto su posicin como su tamao.

    Tambin podemos establecer otras opciones de la ventana de visualizacin, tales como los bferes y una opcin de los modos de color, con la funcin glutInitDisplayMode.

    Los argumentos de esta subrutina se asignan mediante constantes simblicas GLUT. Por ejemplo, la siguiente orden especifica que se utilice un nico buffer de refresco en la ventana de visualizacin y que se utilice el modo de color RGB (rojo, verde, azul) para seleccionar los valores de los colores.

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    Los valores de las constantes que se pasan a esta funcin se combinan empleando la

    operacin lgica or. En realidad, el buffer nico y el modo de color RGB son opciones predeterminadas. Pero usaremos esta funcin para recordar que se han establecido para nuestra visualizacin.

    A.5. Un programa OpenGL completo

    Todava hay que realizar algunas tareas antes de que tengamos todas las partes necesarias para un programa completo. En la ventana de visualizacin podemos elegir un

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    228

  • color de fondo. Y necesitamos construir un procedimiento que contenga las funciones apropiadas de OpenGL para la imagen que queremos mostrar en pantalla.

    Mediante el empleo de valores de color RGB, establecemos que el color de la ventana de visualizacin sea blanco con la funcin de OpenGL

    glClearColor(1.0, 1.0, 1.0, 1.0, 0.0);

    Los tres primeros argumentos de esta funcin establecen cada una de las componentes de color roja, verde y azul en el valor de 1.0. Por tanto, obtenemos el color blanco en la ventana de visualizacin. Si, en lugar de 1.0, establecemos cada una de las

    componentes de color en 0.0, obtendramos el color negro como color de fondo. Y si a cada una de las componentes rojs, verde y azul se les asigna un valor intermedio entre 0.0 y 1.0 obtendramos algn nivel de gris.

    El cuarto parmetro de la funcin glClearColor se denomina valor alfa del color especificado. Un uso del valor alfa es el parmetro de > (blending). Cuando

    activamos las operaciones de fundido de OpenGL, los valores alfa se pueden utilizar para calcular el valor resultante de dos objetos que se superponen. Un valor alfa de 0.0 indica que el objeto es totalmente transparente, mientras que el valor alfa de 1.0 indica que el objeto es opaco. Por ahora, establecemos simplemente el valor alfa en 0.0.

    Aunque la orden glClearColor asigna un color a la ventana de visualizacin, sta no

    muestra la ventana de visualizacin en la pantalla. Para conseguir que el color asignado a la ventana se visualice, necesitamos invocar la siguiente funcin de OpenGL.

    glClear(GL_COLOR_BUFFER_BIT);

    El argumento GL_COLOR_BUFFER_BIT es una constante simblica que especifica que son los valore de los bits del buffer de color (buffer de refresco) los que se deben asignar a los valores indicados en la funcin glClearColor.

    Adems de establecer el color de fondo de la ventana de visualizacin, podemos elegir

    entre una gran variedad de esquemas de color para los objetos que queremos mostrar en una escena. En nuestro ejemplo inicial de programacin, establecemos simplemente el color del objeto en rojo.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    229

  • glColor3f(1.0, 0.0, 0.0);

    El sufijo 3f de la funcin glColor indica que especificamos las tes componentes de color RGB mediante el empleo de valores de punto flotante (f). Estos valores se deben

    encontrar dentro del rango comprendido entre 0.0 y 1.0, y hemos establecido la componente roja en 1.0 y las componentes verde y azul en 0.0

    En nuestro primer programa, simplemente mostramos un segmento bidimensional. Para ello, necesitamos decir a OpenGL como queremos proyectar nuestra imagen en la ventana de visualizacin, porque la generacin de una imagen bidimensional se trata en OpenGL

    como un caso especial de la visualizacin tridimensional. Por lo que, aunque solo queramos producir una lnea muy simple bidimensional, OpenGL procesa a imagen mediante todas las operaciones de visualizacin tridimensional. Podemos establecer que el tipo de proyeccin (modo) y otros parmetros de visualizacin que necesitemos con las dos funciones siguientes:

    glMatrizMode(GL_PROJECTION);gluORTHO2D(0.0, 200.0, 0.0, 150.0);

    Esto especifica que se debe utilizar una proyeccin ortogonal para mapear los

    contenidos de una zona rectangular bidimensional (2D) de las coordenadas universales a la pantalla, y que los valores de la coordenada x dentro de este rectngulo varan desde 0.0 hasta 200.0 y que los valores de la coordenada y varan desde 0.0 hasta 150.0.

    Objetos cualesquiera que definamos dentro de este rectngulo de coordenadas universales se mostrarn dentro de la pantalla de visualizacin. Cualquier cosa fuera de este

    rango de coordenadas universales se mostrarn dentro de la ventana de visualizacin. Cualquier cosa fuera de este rango de coordenadas no se visualizar. Por tanto, la funcin de GLU gluOrtho2D establece que el sistema de coordenadas de referencia dentro de la ventana de visualizacin deber tener las coordenadas (0.0 , 0.0) en la esquina inferior izquierda de la ventana de visualizacin y (200.0 y 150.0) en la esquina superior izquierda

    de la ventana.

    Ya que solo describimos un objeto bidimensional, el nico efecto que tiene la proyeccin ortogonal es pegar nuestra imagen en la ventana de visualizacin definida anteriormente. Por ahora utilizaremos un rectngulo de coordenadas universales con la

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    230

  • misma relacin de aspecto que la ventana de visualizacin, para que no haya distorsin en nuestra imagen.

    Finalmente, necesitamos llamar las subrutinas apropiadas de OpenGL para crear nuestro segmento. El cdigo siguiente define un segmento bidimensional definiendo sus extremos con coordenadas cartesianas enteras de valores (180, 15) y (10, 145).

    glBegin (GL_LINES)

    glVertex2i(180,15);

    glVertex2i(10, 145);glEnd();

    Ahora es el momento e reunir todas las piezas. El siguiente programa de OpenGl est organizado en tres procedimientos. Colocamos todas las inicializaciones y los parmetros de configuracin relacionados en el procedimiento init. Nuestra descripcin geomtrica de la imagen que queremos visualizar est en el procedimiento lineSegment, que es el

    procedimiento que ser referenciado por la funcin de GLUT glutDisplayFunc. Y el procedimiento main contiene las funciones de GLUT que configuran la ventana de visualizacin y que muestran nuestro segmento en la pantalla.

    A continuacin se muestra la ventana de visualizacin y el segmento generado por este programa.

    #include //u otras lneas dependiendo del sistema que usemos

    void init(void){

    glClearColor(1.0, 1.0, 1.0, 0.0); //Establece el color de la ventana

    // de visualizacin en blanco

    glMatrixMode(GL_PROJECTION);//Establece los parmetros de proyeccin

    gluOrtho2D(0.0, 200.0, 0.0, 15.0);}

    void lineSegment(void){

    glClear(GL_COLOR_BUFFER_BIT); //Borra la ventana de visualizacin

    glColor3f(1.0, 0.0, 0.0); //Establece el color del segmento de lnea

    //en rojo

    glBegin(GL_LINES)

    glVertex2i(180, 15); //Especifica la geometra del segmento

    I n s t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    231

  • // de lnea

    glVertex2i(10, 145);

    glEnd();

    glFlush();

    //Procesa todas subrutinas de OpenGL tan rpidamente como

    //sea posible}

    void main(int argc, char ** argv){

    glitInit(&argc, argv); //Inicializa GLUT

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    //Establece el modo de

    // visualizacin

    glutInitWindowPosition(50,100); // Establece la posicin de la esquina

    //superior izquierda de la ventana de visualizacin

    glutInitWindowSize(400,300);

    //Establece el ancho y la altura de la

    //ventana de visualizacin

    glutCreateWindow(Ejemplo de programa en OpenGL) //Crea la ventana

    init();

    //Ejecuta el procedimiento de inicializacin

    glutDisplayFunc(lineSegment);

    //Enva los grficos a la ventana de

    //visualizacin

    glutMainLoop();

    //Muestra todo y espera}

    Al final del procedimiento lineSegment hay una funcin, glFlush, que todava no se ha mencionado. Es simplemente una subrutina que fuerza la ejecucin de nuestras funciones

    de OpenGL, las cuales almacenan las computadoreas en buffers en diferente posiciones, dependiendo de cmo est implementada OpenGL. En una red ocupada, por ejemplo, podra haber retrasos en el procesamiento de algunos buffers. Pero la llamada a glFlush fuerza a que todos estos buffers se vacen y que las funciones de OpenGL se procesen.

    El procedimiento lineSegment que hemos creado para descrbiir nuestra imagen se

    denomina funcin de respuesta a la visualizacin (display callback function). Este procedimiento lo registra glutDisplayFunc como la subrutina que se invoca siempre que sea preciso mostrar la ventana de visualizacin de nuevo. Esto puede ocurrir, por ejemplo, si se mueve la ventana de visualizacin. Por lo general, los programas que utilizan OpenGL se organizan como un conjunto de funciones de respuesta que se invocan cuando ocurren

    determinadas acciones.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    232

  • A.6. Instalacin de OpenGL

    Es recomendable que una vez terminada la prctica se examine el Apndice A, el cual contiene una introduccin a la programacin en OpenGL.

    OpengGL en Windows

    Las libreras de OpenGL para Windows fueron implementadas en un inicio para Windows NT y posteriormente en otras versiones del sistema operativo. Existen problemas de seguridad, errores de compilacin, de tiempo de ejecucin y fallos en el sistema los cuales no han sido documentados, por lo tanto el usuario es responsable del uso que se le de al software. Las siguientes instrucciones no funcionaran en Windows Vista.

    Es conveniente sealar que los ejemplos, ejercicios y prcticas sealadas en este texto han sido probadas nicamente en sistemas UNIX, LINUX, BSD y Mac OS X.

    Para comenzar la programacin es necesario instalar GLUT (vase Apndice A). GLUT puede usarse con Visual C++ as como con algunos productos de Borland.

    Paso 1: Instalar GLUT

    El primer paso es descargar GLUT, puede hacerse desde la siguiente pgina:

    http://www.opengl.org/resources/libraries/glut/glut_downloads.php#windows

    Los detalles de la instalacin y compilacin pueden observarse en el Lame o Readme disponible en la siguiente pgina:

    http://www.xmission.com/~nate/glut.html

    Despus de instalar, se deben mover algunos archivos como a continuacin se indica:

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    233

  • Archivo Ubicacin

    glut32.dll Windows XP | Server 2003: C:\WINDOWS\system\

    Windows 2000: C:\WINNT\system\

    glut32.lib C:\Program Files\Microsoft Visual Studio NET 2003\Vc7\PlatformSDK\Lib

    glut.h C:\Program Files\Microsoft Visual Studio NET 2003\Vc7\PlatformSDK\Include\gl

    Si se desea utilizar cualquier aplicacin o programa creado con OpenGL en una

    computadora diferente a la que fue compilado, deber incluirse el archivo glut32.dll en la ruta indicada arriba, de lo contrario no funcionar.

    Paso 2: Crear un proyecto de Visual Studio

    Debido a que GLUT est diseado para ser independiente del sistema de ventanas, GLUT debe correr como una aplicacin de consola en vez de correr como una aplicacin nativa de Windows.

    4. Crea un proyecto nuevo (Archivo -> Nuevo -> Proyecto). Aparecer un cuadro de dilogo.

    5. En el panel Tipos de Proyecto (Project Types) selecciona Proyectos Visual C++ (Visual C++ Projects). Luego en el panel de plantillas selecciona Proyecto de Consola Win32 (Win32 Console Project). Dale nombre al proyecto y dale clic en Aceptar. Aparecer el Wizard de aplicaciones Win32.

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    234

  • En la parte izquierda de la pantalla da clic en el tab Propiedades de la aplicacin (Application Settings), y marca el checkbox Proyecto vaco y da clic en Terminar.

    I n s t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    235

  • Paso 3. Aadir cdigo fuente

    Se asume que ya se poseen conocimientos previos de Visual Studio, as que se no es necesario dar una explicacin detallada sobre la adicin de cdigo fuente.

    Cuando se incluye GLUT en un programa, automticamente se incluyen otros archivos cabecera de Open GL. Escribir explcitamente:

    #include #include

    No es necesario, solamente se debe escribir:

    #include

    No debe utilizarse la diagonal invertida (\). Visual Studio compilara el programa pero los

    Ins t i t u to Tecno lg i co de Mo re l i a Apnd i ce A

    Gra f i c ac i n

    236

  • compiladores estndar no lo harn.

    Paso 4: Modificar las propiedades del proyecto

    Antes de compilar el proyecto, se le debe hacer un link en visu