Índice - cgisutic.files.wordpress.com · • fabricación asistida por computadoras (cam) •...

222
i

Upload: vanngoc

Post on 26-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

i

ii

Índice

Introducción...........................................................................................................................1 Breve reseña histórica...................................................................................................1 Aplicaciones de la gráfica por computadoras............................................................2 Estructura de un sistema gráfico.................................................................................2

Capitulo 1: Entidades geométricas ...................................................................................5 Modelado Geométrico .....................................................................................................5 Modelos de Alambre ......................................................................................................6 Superficies de Contorno ...............................................................................................8 Modelos Sólidos ...........................................................................................................10

Geometría Constructiva de Sólido. Primitivas Parametrizadas ......................11 Modelos de frontera ...............................................................................................13 Modelos de Barrido................................................................................................15 Particionamiento espacial.....................................................................................17

Sistema de coordenadas ..............................................................................................18 Clasificación del Sistema de Coordenadas .............................................................18

Proceso de Interacción .................................................................................................20 Entidades geométricas..................................................................................................24 El punto ..........................................................................................................................24 Segmentos de rectas...................................................................................................30 Polilíneas.......................................................................................................................34 Polígonos.......................................................................................................................37

Clasificación de los polígonos ..............................................................................38 Círculo, Elipse y Arco ..................................................................................................45 Curvas............................................................................................................................48 Método de interpolación..............................................................................................49

Polinomios de Hermite o Hermitianos ................................................................50 Spline .......................................................................................................................56 Spline Local.............................................................................................................57

Método de aproximación. ...........................................................................................59 Curvas de Bézier....................................................................................................59

Construcción de sólidos ..............................................................................................62 Cuerpos geométricos ..................................................................................................66

Capitulo 2: Posición relativa .............................................................................................69 Posición relativa entre entidades geométricas..........................................................69 Posición del punto con otras entidades....................................................................69

Punto........................................................................................................................69 Segmento de recta en el plano ............................................................................71 Plano geométrico ...................................................................................................75 Segmento de recta en el espacio........................................................................76 Polígono...................................................................................................................81 Cuerpo prismático ..................................................................................................85

iii

Cuerpo geométrico ................................................................................................89 Posición del Segmento de Recta con otras entidades ..........................................93

Segmento de recta .................................................................................................93 Plano geométrico ................................................................................................ 101 Polígono................................................................................................................ 104 Cuerpo geométrico ............................................................................................. 106

Posición del Polígono con otras entidades ........................................................... 108 Entre polígonos en el espacio........................................................................... 109 Entre polígonos en el plano ............................................................................... 110

Proceso de selección de entidades ....................................................................... 113 Lista de selección................................................................................................ 113 Selección por ratón............................................................................................. 114

Capitulo 3: Proyección ................................................................................................... 117 Tipos de proyección.................................................................................................. 118

Proyección paralela ............................................................................................ 118 Proyección perspectiva o centrada .................................................................. 122 Anomalías de la perspectiva ............................................................................. 123

Matrices de proyección............................................................................................ 130 Plano de proyección ................................................................................................. 133

Determinación de los ejes del sistema de normalización............................. 133 Relación entre las coordenadas del sistema global y el de normalización137

Capitulo 4: Transformaciones ....................................................................................... 143 Transformaciones de instancias............................................................................... 143 Traslación................................................................................................................... 144 Cambio de escala ..................................................................................................... 147 Rotación...................................................................................................................... 148

Transformaciones compuestas. Concatenación. ........................................... 152 Transformaciones de vista ........................................................................................ 161 Volumen de vista y canónico. ................................................................................. 163 Normalización Paralela ............................................................................................ 166 Normalización Perspectiva ...................................................................................... 172

Recorte ......................................................................................................................... 175 Recorte de segmento de recta ................................................................................ 176 Recorte de polígono ................................................................................................. 180

Transformación de Dispositivo .................................................................................. 184 Transformación de la ventana al sistema de coordenadas normalizado ......... 185 Transformación del sistema de coordenadas normalizado a la pantalla ......... 187

Capitulo 5: Realismo Virtual.......................................................................................... 191 Eliminación de partes ocultas ................................................................................... 192 Tipos de algoritmos de eliminación........................................................................ 193 Coherencia ................................................................................................................. 195 Visibilidad de las caras............................................................................................. 195 Visibilidad de aristas ................................................................................................. 198 Descripción de Algunos Algoritmos ....................................................................... 200

iv

Iluminación................................................................................................................... 204 Modelo de Iluminación Simple ................................................................................ 205

Iluminación Ambiente ......................................................................................... 206 Reflexión............................................................................................................... 207

Luz difusa ......................................................................................................... 207 Reflexión especular........................................................................................ 208

Atenuación de la luz del foco con la distancia...................................................... 209 Modelo para una fuente de luz ............................................................................... 209

Coloreado..................................................................................................................... 210 Modelos de Color ...................................................................................................... 211

Modelo CMY ........................................................................................................ 211 Modelo RGB ........................................................................................................ 212

Modelos de coloreado de polígonos ...................................................................... 212 Coloreado constante .......................................................................................... 212 Coloreado por interpolación.............................................................................. 212 Coloreado de mallas de polígonos ................................................................... 213 Coloreado de Gouraud (Interpolación de la intensidad)............................... 213 Coloreado de Phong (Interpolación de la normal) ......................................... 214

Bibliografía ....................................................................................................................... 217 Otras publicaciones .................................................................................................... 218

1

Introducción La grafica por computadoras consiste en la síntesis pictórica de objetos reales e imaginarios a partir de modelos representados en la computadora. Es uno de los medios de comunicación con una computadora más naturales, teniendo en cuenta nuestra gran capacidad para el reconocimiento de patrones de bits y tridimensionales, para procesar rápida y eficientemente datos pictóricos. La visualización gráfica de datos para científicos e ingenieros ha ganado espacio, pues es prácticamente imposible interpretar las enormes cantidades de datos ofrecidas por computadoras sin procesarlos y destacar tendencias y distintos fenómenos por vía gráfica. La gráfica por computadora interactiva es el más importante medio gráfico desde la invención de la fotografía y la televisión al añadir la ventaja de poder lograr representaciones de objetos abstractos y de datos que no poseen una geometría propia. También nos ofrece la posibilidad de mostrar imágenes dinámicamente variables, reales como el aterrizaje de un avión, o abstractas como el incremento del uso de la energía nuclear en el mundo, o fluctuaciones poblacionales en determinadas regiones. El uso de esta dinámica es especialmente efectivo cuando el usuario puede controlar la animación: la velocidad, la porción de la escena total en la vista, el nivel de detalle, las relaciones geométricas entre los objetos en escena y otras características. La gráfica por computadoras tiene en la realidad virtual una de sus aplicaciones más recientes y potentes. La tecnología de gráfica por computadoras cuenta con hardware y software para moción y modificación dinámica controlada por el usuario. En la moción dinámica los objetos se mueven alrededor del observador o se mantienen fijos con respecto a un observador en movimiento o se combinan ambas posibilidades.

Breve reseña histórica La grafica por computadoras surgió en la presentación de datos en trazadores de copia dura y pantallas de tubos de rayos catódicos. Se ha desarrollado hasta la manipulación de objetos y modelos de diversos campos de la física, la matemática, ingeniería, arquitectura, de la naturaleza y otros. La grafica por computadoras de hoy es altamente interactiva: el usuario controla el contenido, la estructura y apariencia de los objetos a través de diferentes periféricos de entrada. Hasta el comienzo de la década de los 80, la grafica por computadora era un campo pequeño y especializado, fundamentalmente debido al alto costo del hardware que se necesitaba entonces, las computadoras personales con display grafico de barrido: primeramente la Xerox Star y posteriormente la Apple Macintosh y las IBM PC, popularizaron el uso de la grafica de mapas de bits para la interacción con el usuario provocando una explosión de las aplicaciones basadas en grafica, hasta llegar a las modernas interfaces graficas basadas en los

2

manipuladores de ventanas (“Windows Manager”), el concepto de escritorio que incluye la utilización de iconos para la manipulación de diferentes objetos. Aún aquellos que no utilizan la computadora, encuentran la grafica por computadoras aplicada en esferas tan populares como la televisión y el cine. Fenómenos tan diversos como la educación, la ciencia, la ingeniería, la medicina, el comercio, el militar, la información y el entretenimiento utilizan fuertemente la grafica por computadoras. Hasta en los cursos de programación de computadoras de primeros niveles se trata hoy el uso de la grafica bidimensional como una materia de rutina.

Aplicaciones de la gráfica por computadoras La GC es altamente utilizada en la industria, comercio, gobierno, educación, entretenimiento y más recientemente en las casas. La lista de las aplicaciones es enorme y continúa creciendo rápidamente con el aumento de las posibilidades ofrecidas por el nuevo Hardware. Observe algunas de las áreas de aplicación: • Interfaces de usuarios de aplicaciones basadas en el concepto de mesa de

trabajo con ventanas simultaneas y en la facilidad de seleccionar por apunte y opresión (point and click) de un menú iconos y objetos en la pantalla, siendo necesario teclear solamente para entrar textos o manipular.

• Gráficos interactivos para negocios, ciencia y tecnología: creación en 2D y 3D de gráficas de funciones matemáticas, físicas, económicas, histogramas, barras y pies.

• Automatización de oficinas y publicación de electrónica: el incremento de la gráfica para la transferencia de la información y la utilización de la computadora en la impresión de materiales “en casa”. Proliferan los documentos basados en las técnicas de hipermedia con textos, tablas, imágenes, gráficos, etc. Entrelazados en una red a transitar o navegar.

• Dibujo y diseño asistido por computadoras (CADD): utilización de la gráfica interactiva en el diseño de componentes y sistemas mecánicos, eléctricos, electrónicos, etc.

• Simulación y animación para visualización científica y entretenimiento: utilización de simulación y animación para el estudio de fenómenos reales o abstractos.

• Fabricación asistida por computadoras (CAM) • Control de procesos y Ingeniería Asistida por computadoras (CAE): mientras

simuladores de vuelo o juegos permiten al usuario interactuar con una simulación del mundo real o con un mundo artificial, muchas otras aplicaciones permiten interactuar con algunos aspectos del mundo real. Tales sistemas son utilizados en el control de estados en refinerías, en el control del tráfico aéreo, control de industrias de generación de electricidad, industria militar, etc.

Estructura de un sistema gráfico La estructura de un sistema gráfico interactivo tiene tres componentes: el programa de aplicación; el modelo de aplicación y el sistema gráfico. El programa de aplicación crea, almacena en el modelo de aplicación la estructura de los objetos a representar, y de allí la recupera cuando es necesario. El modelo de

3

aplicación contiene entonces la estructura de los objetos a representar en datos, procedimientos o en ambos según sea necesario. El programa de aplicación manipula las entradas recibidas desde el usuario y produce las vistas enviándolas al sistema gráfico, mediante el envío de comandos que contienen tanto la información geométrica, como la de los atributos a utilizar. El sistema gráfico es responsable de producir la representación gráfica a partir de la información detallada que recibe y de pasar la entrada recibida del usuario al programa de aplicación para su procesamiento. El sistema gráfico es entonces el intermediario entre el programa de aplicación y el periférico de salida, realizando la transformación de salida, y simétricamente efectúa una transformación en las entradas del usuario para enviarlas al programa de aplicación para la modificación del modelo y/o de la representación en el display. Los sistemas gráficos tienen entre sus objetos principales el desarrollo de aplicaciones independientes de los periféricos de salida. Estos sistemas pueden manejar una gran cantidad de periféricos de salida (impresoras, plotters, displays, etc.). Esta independencia de los programas de aplicación es la base principal para la portabilidad de los mismos. A mediado de los 70 surgió la necesidad de estandarización de los sistemas gráficos, desarrollándose para 1977 y refinándose para 1979 la especificación del 3D Core Graphics System (Core). En 1985 aparece el General Kernel System (GKS), una versión elaborada del Core restringida a 2D. En 1988se convierten en estadares oficiales el GKS-3D y un sistema gráfico más complejo conocido como Programer’s Hierarchical Graphics System (PHIGS), el cual a sido extendido a un sistema más sofisticado para la representación en displays gráficos de barrido mediante técnicas modernas PHIGS+; cuyas implementaciones ejecutan bien con hardware especializado. El programa de aplicación realiza la descripción para el sistema gráfico a través de primitivas. Estas primitivas típicamente se corresponden con aquellas utilizadas en el almacenamiento de modelos geométricos: Líneas, rectángulos, polígonos, círculos, elipses y textos en 2D, poliedros, y textos en 3D. Sistemas gráficos avanzados como PHIGS+ soportan primitivas adicionales incluyendo curvas y superficies definidas por polinomios de grado superior. Los atributos de apariencia soportados por el paquete gráfico también se corresponden generalmente con aquellos que aparecen en el modelo, tales como color, estilo de líneas, ancho de líneas, etc. Sistemas como PHIGS soportan, además de las primitivas y atributos señalados, facilidades para especificar transformaciones geométricas tales como cambios de escala, rotaciones y traslaciones, para especificar como serán vistos los componentes en 3D.

4

5

Capitulo 1: Entidades geométricas

Modelado Geométrico El hombre, a través de los años, ha intentado modelar los objetos que crea mentalmente. Desde la época prehistórica, los cavernícolas, grababan en las rústicas paredes de la cueva las imágenes de los animales como forma de comunicación o simple expresión de acciones deseadas o futuras. Con el desarrollo de las matemáticas los modelos en pinturas, gravados y esculturas pasaron a representarse a través de ecuaciones que hasta hoy son utilizadas para modelar desde objetos simples hasta los más complejos. El término modelado geométrico se refiere a la colección de métodos usados para definir la forma y otras características geométricas del modelo que reproduce un objeto. Esto permite el trabajo con los objetos a partir de su dominio geométrico. Los métodos de modelado geométrico son usados para construir con precisión matemática la descripción de la forma de un objeto real o para simular algunos procesos físicos y tecnológicos. El modelado geométrico se usa para crear y comunicarse información de la forma. Esto abarca la creación y mantenimiento del modelo del sólido para análisis y accesos futuros, por consiguiente el modelado del sólido constituye un aspecto importante en la simulación de fenómenos. Estos métodos son síntesis de técnicas de algunos campos del saber: Geometría analítica y descriptiva; Topología; Teoría de conjunto; Análisis numérico; Cálculo vectorial y Métodos matriciales. Todos ellos se colapsa con dos disciplinas vinculadas al campo de la Informática: Lenguaje de programación y Lógica. La modelación geométrica abarca un área frecuentemente llamada geometría computacional y se extiende a través de ella a nuevos campos del modelado creando sólidos con elegante síntesis geométrica y de computación. El uso de la computadora es, en efecto, el centro del proceso entero del modelado geométrico. Se identifican tres aspectos distintos en la modelación geométrica: • Representación: La forma física de un objeto. Se representa matemáticamente

una aproximación del mismo. • Diseño: Creación y manipulación de formas a través de variables definidas • Rendering: Proceso que transforma un modelo en una imagen real para su

interpretación. En él intervienen tres aspectos, coloreado, iluminación y punto de vista

Uno de los principales aspectos que trata la Gráfica por Computadoras es la representación de objetos, lo que implica poder visualizar un objeto real a través

6

de un dispositivo de salida gráfica. Una forma de hacerlo consiste en emplear un conjunto de primitivas o formas geométricas que son suficientemente simples para implantarse con facilidad en la computadora, y que poseen la suficiente flexibilidad para representar el modelo de un objeto. Uno de los principales conceptos en las gráficas por computadora es el modelado de objetos. Las formas geométricas que pueden utilizarse como primitivas incluyen, en orden de complejidad, puntos, segmentos de rectas, polilíneas, polígonos y poliedros. Las formas geométricas mas complejas incluyen segmentos curvados, parches de superficies curvadas, y superficies cuadráticas. Los bloques básicos de la construcción gráfica son el Punto y Recta. La forma de tratarlos tanto en el hardware como en el software es bastante simple. Un punto se puede determinar por sus coordenadas en el plano P (x, y) o espacio P (x, y, z); y un segmento de recta se especifica al proporcionar sus puntos extremos P1 (x1, y1, z1) y P2 (x2, y2, z2). No obstante existir las formas geométricas para la designación de objetos, se puede apreciar tres tipos de expresión del Modelado Geométrico que constituyen las formas principales utilizadas hasta hoy en la Gráfica por Computadoras: • Modelado de alambre (wireframe) • Superficies de contorno (boundary surface) • Modelos Sólidos (solid)

Modelos de Alambre Los modelos de alambre representan los objetos a través de las aristas que delimitan sus superficies. Por consiguiente el modelo queda constituido por puntos, líneas y curvas, según muestra la figura 1. El modelo representa un sistema de alambre, el cual fue desarrollado en la década del 1960 para automatizar el dibujo utilizando la computadora.

Figura 1: Representación de un objeto en modelo a alambre

El primer sistema fue solamente de dos dimensiones este se usaba para construir modelos punto a punto y línea a línea. Los elementos básicos de este sistema fueron: Puntos, Líneas Rectas, Arcos de círculos y algunas Curvas Cónicas. El

7

sistema más sofisticado perteneciente a esta generación fue el sistema CADD (Computer Aided Drafting and Design) desarrollado por Douglas McDonnell, el cual permitía que el modelo respondiera con propiedades geométricas elementales por ejemplo área y perímetro. Estos modelos de alambre no representan sólidos analíticamente. El primer paso hacia el modelo sólido de alambre fue la introducción de las construcciones tridimensionales. El sistema de alambres todavía estaba limitado a los mismos elementos, Punto, Líneas y Curvas del sistema de dos dimensiones, pero el modelo fue aumentado al proporcionarle transformaciones tridimensionales de instancia tales como traslación y rotación, con lo cual era fácil crear una ilusión de solidez. Algunos sistemas introducían planos y otras superficies simples como esferas y cilindros. Los sistemas CADD que usaban curvas bicúbicas fueron los primeros en adicionar la capacidad de modelar superficies esculturales. Dentro de sus limitaciones, estos sistemas podían modelar y resolver algunos problemas de geometría descriptiva que se presentaban en el diseño y la construcción. El modelo de alambre tridimensional fue el formato ideal de entrada para el análisis del comportamiento empleando el método de los Elementos Finitos. La representación pura por alambre de un modelo sólido tridimensional posee cuatro inconvenientes: • Posibilita crear modelos ambiguos y objetos absurdos • La carencia de recursos gráficos o coherencia visual (línea de perfil o silueta

que no son usualmente obtenidas desde el modelo) • La posibilidad de que el modelo de alambre se aproxime al sólido en forma

difusa. La figura 2, representa en la proyección ortogonal de un cubo empleando el modelo de alambre. Esta forma no proporciona una idea exacta de cómo se encuentra el cubo en realidad. Se puede observar en las figuras 2b y 2c las formas que puede adquirir el cubo si se eliminan las aristas no visibles según la posición del observador. Esto demuestra la posibilidad de crear modelos ambiguos.

a) b) c)

Figura 2: Representación ambigua de un cubo y sus posibles posiciones

La figura 3, representa un objeto absurdo ya que a pesar se presentarse aristas conectadas entre si por puntos, los polígonos que definen sus caras no son reales. La falta de coherencia visual se puede apreciar a través del ejemplo que ilustra la figura 4, ya que la superficie lateral del cono truncado está representada por las

8

cuatro aristas que unen la base inferior y superior no permitiendo delimitar la verdadera silueta del mismo.

Figura 3: Objeto absurdo Figura 4: Cono truncado

Investigaciones han demostrado que no solamente existen estos cuatro problemas sino que también existe dificultad en; Aplicaciones para el cálculo de las propiedades de masa; Corte de secciones; Eliminación de líneas ocultas; Generación de malla de elemento finito; Asociación y almacenamiento de atributo de superficie y; Herramientas multiejes para la generación y verificación de caminos. En todas estas áreas cuando se emplea el modelado de alambre este se muestra débil o inadecuado. No obstante, la representación del modelo de alambre puede ser provechosa para entender aspectos que se trataran más adelante relacionados con los modelos sólidos.

Superficies de Contorno

Muchas técnicas de modelado geométrico de objetos son imperfectas porque ellas no representan el interior del sólido, no representan las propiedades internas ni ofrecen vías para representar el comportamiento interior, o sea, estos modelos asumen homogeneidad total en el interior. Quizás la forma más simple y directa de denominar este tipo de modelo es a través de las superficies de contorno (hyperpatch). Las superficies de contorno está determinada por una colección de puntos del contorno cuyas coordenadas son tomadas como continuas, con tres parámetros independientes en una función matemática evaluada como sigue:

X = x (t, u, v); Y = y (t, u, v); Z = z (t, u, v) (1) Las variables paramétricas t, u y v están restringidas en el intervalo t, u, v ∈ [0, 1] Las superficies de contorno y los sólidos paramétricos son usados indistintamente a través de la historia. La superficie de contorno tiene un sentido mas restringido, a través de las ecuaciones que se representan, no solamente se tienen todos los puntos de los elementos de contorno, sino también todos los puntos de su interior. El análisis de los objetos mediante este tipo de modelo lleva a formular los sólidos

9

paramétricos tricúbicos, ya que una ecuación polinomial que describe un objeto será dada como:

∑∑∑= = =

=3

0

3

0

3

0

),,(i j k

kjiijk vutavutp [ ]1,0,, ∈vut (2)

Donde: p(t, u, v); representa un punto cualquiera del objeto aijk; son los coeficientes algebraicos del polinomio t, u, v; son las variables independientes

Observe que al presentarse un polinomio cúbico cada una de las tres variables paramétricas puede aparecer como una variable cúbica. Esto es lo que da la terminología de tricúbico. Aunque la literatura de modelos tricúbicos sea poco densa especialmente cuando se compara con otras formas de funciones de interpolación multivariable, constituye un área muy fértil para el desarrollo donde la generación potencial analítica es requerida en el modelo del sólido. Esto fue ampliamente demostrado por Stanton (1974) y Timmer (1970) en las áreas de mecánica estructural y en aplicaciones termodinámicas y aerodinámicas. La figura 5, muestra como se presenta un cubo a través de la Superficie de Contorno.

Figura 5: Superficie de Contorno

El control geométrico del cubo descrito en la figura 5 se realiza a través de los Coeficientes Geométricos, los cuales están constituidos por los puntos extremos de cada curva que forma la arista y las tangentes de la curva en dichos puntos. Este aspecto se profundizará cuando se estudie lo relacionado con las curvas paramétricas. Allí se explicará como se obtienen los coeficientes algebraicos a partir de los coeficentes geométricos y viceversa. Por el momento deben prestar atención a que la forma del control geométrico de estos modelos se establece a través de coeficientes geométricos y la representación se hace utilizando los coeficientes algebraicos que describe la ecuación 2.

P110

t = 0

t = 1 u = 0

u = 1

v = 0

v = 1

P000

P111

P011

P100

P001

P101

10

Modelos Sólidos En los finales de la década de 1970 la situación de la representación de modelos geométricos comenzó a cambiar, largos esfuerzos de Voelckec, Requicha y otros en la Universidad de Rochester reconocieron la necesidad de un criterio formal de modelado. Ellos comenzaron a unificar y hacer más rigurosos y variados los conceptos de modelado, lo que constituyó un verdadero primer paso hacia la teoría del modelado geométrico. El proceso de normalización no esta completo todavía y existe mucho camino por recorrer sobre todo si nos adentramos en los métodos y algoritmos que se llevan a cabo para la representación de entidades en un mundo virtual. No obstante, es necesario entender algunos aspectos iniciales que determinaron el criterio formal de un modelo. Desde un comienzo surgió la necesidad de que los modelos fueran autoverificables sin la intervención del ser humano. La autoverificabilidad se expresa a través de la validez, conectividad y unicidad del modelo. En tal sentido surgen algunos algoritmos y métodos entre los que se encuentra la ecuación de Euler.

C + V – A = 2 + R – 2H (3) Donde:

C: número de caras V: número de vértices A: números de aristas R: número de anillos interiores H: número de huecos

La oportunidad de verificación del modelo está disminuyendo inversamente a lo sofisticado del proceso total de modelado que aumenta. Los sistemas de modelado de sólido deben brindar información para el análisis y la fabricación, o sea, deben tener en consideración características físicas y geométricas tales como: • Propiedades volumétricas del objeto • Representación del objeto mediante proyecciones bidimensionales • Conexión del objeto con otros elementos de una base de datos (jerárquico) • Generación de información para el control numérico Se puede decir que A es un modelo de B si A puede responder preguntas acerca de B. En el modelado de sólidos las principales preguntas y respuestas son relacionadas con las propiedades volumétricas del objeto como son el peso y momentos de inercia y acerca de las propiedades topológicas como son: conectividad y las relaciones de contacto. Es por ello que las superficies de los objetos deben satisfacer ciertas condiciones: • Cerradas • Orientables

11

• No se intercepten en sí misma • Limitadas • Conectadas. A. A. G. Requicha (1977) y otros asignaron para la abstracción de modelos sólidos propiedades adicionales que fueron: • Rigidez • Homogeneidad tridimensional • Cerradura bajo movimiento y trabajo con operadores booleanos • Descrito en forma finita • Determinación de contornos Todos estos aspectos provocaron la aparición de diferentes normas para establecer los modelos geométricos que se expresan a través de los formatos de archivo. Luego, si alguna vez se debe elaborar un archivo propietario para la gestión de entidades geométricas es importante cumplir con cada aspecto de los tratados y profundizar en otros aspectos que estudiaremos más adelante para obtener un sistema que no caduque sin haber empezado. Con los modelos sólidos el hombre intenta reproducir cualquier objeto de la realidad por tal motivo, existen varias formas de obtención que pueden cumplirse por separado o que para la obtención de un modelo pueden intervenir más de una. Para el estudio, se presenta las formas principales de obtención de modelos sólidos por separado: • Geometría constructiva de sólidos (CSG siglas del inglés) • Modelos de frontera • Modelos de barrido • Particionamiento espacial Geometría Constructiva de Sólido. Primitivas Parametrizadas. Esta forma de obtención de los modelos sólidos se fundamenta en el estudio científico de las formas de los objetos que nos rodean, para limitar estos estudios, los investigadores se centrados en las piezas que eran producidas en talleres de maquinado. Los resultados obtenidos demostraron que el 95 % de las piezas están construidas por operaciones geométricas y booleanas de Prismas, Cilindros y Conos. De ellos el 80 % están formados por Prismas y Cilindros. Por tal motivo, aseguraron que el establecimiento de Entidades geométricas primitivas del tipo volumétricas podía garantizar la construcción de modelos sólidos complejos con rapidez y eficacia. De los expresado se puede concluir que la Geometría Constructiva de Sólido es un proceso de dos etapas la primera conocer o definir los objetos primitivos y la segunda establecer las operaciones geométricas y booleanas que se deben ejecutar. Los objetos primitivos son simples de representar porque están compuestos por funciones cuadráticas naturales por ejemplo:

12

• Prismas ? cuadrática degenerada • Cilindro ? cuadrática incompleta • Esferas ? cuadráticas completa

Se estableció además que los prismas, cilindros, conos, esferas, etc. pueden estar parametrizados para la obtención de distintas formas primitivas a partir de la manipulación de los parámetros . Por ejemplo: si como parámetros de un cilindro se tiene el diámetro de la base, la altura y el diámetro superior, se puede obtener no sólo un cilindro, sino también un cono truncado o un cono, según se puede observar en la figura 6.

Figura 6: Formas geométricas de la primitiva de un cilindro

Las formas de parametrización de los objetos, depende de la necesidad que posea cada desarrollador de aplicaciones, mientras mayor sea el número de parámetros mayor será la cantidad de formas que se pueda obtener. No obstante, siempre surgen soluciones de compromiso entre las posibilidades de la aplicación y los usuarios que tendrá la misma. Una aplicación con gestión de entidades destinada a la enseñanza primaria no puede poseer el mismo nivel que otra destinada a los profesionales de un sector empresarial como lo es la construcción. La segunda etapa del proceso de formación de modelos sólidos empleando la GCS se refiere a la definición de un grupo de operaciones de instancia y booleanas. Estas operaciones se efectúan entre sólidos primitivos representables produciendo otros sólidos más complejos representables. Entre las operaciones de instancias tenemos: Traslación, escalado, rotación y entre las booleanas: Unión, intersección, diferencia o sustracción. Un proceso de formación de un objeto a través de la GCS se muestra en la figura 7. El objetivo del proceso es llegar a obtener el objeto E. Este objeto representa un cubo perforado que boquilla cilíndrica en los extremos salientes. La formación de este objeto para del cubo A y el cilindro B, después de trasladar los cuerpos hasta colocarlos en la posición descrita por el cuerpo C, se realiza una operación booleana de unión con lo cual queda el cuerpo como una entidad única. Al cuerpo C se le extrae en cuerpo D, cilindro que posee menor diámetro que el cilindro del cuerpo D y una longitud mayor. Al realizar las transformaciones de instancias necesario y la operación boleana de sustracción del cuerpo C con la primitiva D se obtiene finalmente el cuerpo E.

13

Figura 7: Representación de la Geometría Constructiva de un Sólido

La solución presentada para obtener el cuerpo E de la figura 7 no es la única. Aplicando diferentes primitivas y operaciones se puede llegar a obtener el mismo. Se ha mostrado un ejemplo para la compresión de esta forma de construcción de sólidos. La información almacenada o guardada sobre los sólidos construidos bajo esta forma se encuentran las dimensiones de las primitivas , su localización espacial y el árbol de operaciones que se llevado a cabo. Esta información permite recobrar algún proceso anterior si se ha incurrido en un error o se ha obtenido su sólido no deseado. Modelos de frontera El modelado de frontera posee la siguiente filosofía: • La topología y la geometría del objeto pueden ser definidas separadamente. • La topología del objeto describe como se conectan las superficies (que caras

comparten una arista, cuantas caras se interceptan en un vértice, etc.) pero no las dimensiones de las caras.

• La geometría del objeto fija estos detalles en el espacio. Los modelos de frontera asumen varias alternativas para almacenar la información correspondiente a la topología y geometría del objeto. La composición más simple es la que asume Vértices, Aristas y Caras la más compleja es aquella que posee una geometría dada a través de patches bi-cúbicos y contornos de intersección.

A B

C D

E

14

La composición de vértices, aristas y caras posee una relación entre estos elementos caracterizada por que los vértices están dados por puntos (coordenadas) , las aristas están dadas por dos vértices y las caras están formadas por polígonos o varios polígonos que están constituidos a su vez por un conjunto de aristas que se cierran. Sobre este concepto de cara se volverá a insistir en el epígrafe de polígonos y figuras plana. Observe el ejemplo que ilustra la figura 8.

Figura 8: Representación de un cubo

La descripción del cubo dado en la figura 8 se muestra a seguir: 8 Vértices : A, B, C, D, E, F, G, H. 12 Aristas : AB, BC, CD, DA, EF, FG, GH, HE, AE, BF, CG, DH. 6 Caras : AEFBA, BFGCB, ABCDA, CGHDC, ADHEA, EHGFE.

Las caras están constituidas por polígonos con una orientación tal que las normales de los mismos se encuentran saliendo del sólido. Este convencionalismo es seguido por muchas aplicaciones luego constituye un requisito indispensable a cumplir en la descripsión topológica del objeto a modelar. La geometría dada a través de patches bi-cúbicos y contornos de intersección presenta otras características las cuales serán descritas a través del ejemplo que muestra la figura 9. El objeto obtenido por la intersección de dos cilindros como se observa en Fig. 9a, se puede descomponer en varias superficies definidas por los contornos y líneas de intersección Fig. 9b. Estas superficies pueden ser descritas por líneas separadas a una magnitud constante que a su vez estarán representadas por polígonos cúbicos generándose una superficie bicúbica Fig. 9c. Las superficies bi-cúbicas quedarán limitadas por los contornos de las superficies que definen las regiones del modelo de forma matemática, observe en la Fig. 9d que mientras menor sea la separación entre las líneas que describe la superficie, mayor será la presión geométrica obtenida sobre el modelo. Los modelos de frontera poseen algunas ventajas importantes de señalar; contiene toda la información tridimensional del objeto, no poseen un comportamiento ambiguo, permite almacenar un gran número de sólidos en un pequeño espacio de memoria, la presentación de objetos empleando las aristas proporciona un método rápido y eficiente de visualización y posibilita representaciones realistas del sólido toda vez que define las superficies dada por regiones matemáticamente controladas.

A B

C D

E G

F H

15

Figura 9: Cuerpo geométrico dado a través de patches bi-cúbicos

Modelos de Barrido Los modelos de barrido o recorrido como también suele llamárseles construyen los objetos a través de la descripción geométrica de sus contornos. Existen tres formas de comportamiento de estos modelos:

a) Extrucción a lo largo de un eje o barrido lineal. Sólido con grosor constante. b) Barrido alrededor de un eje. Sólido con simetría axial. Rotación alrededor de un

eje. c) Barrido a través de una curva cualquiera. Sólido complejo. Los modelos sólidos con grosor constante se pueden construir a través de la extrucción de una curva cerrada a lo largo de una línea que debe estar contenida en un plano diferente a la curva de forma tal que lo corte. La figura 10 representa dos ejemplos de figuras obtenidas aplicando este método.

Figura 10: Extrusión a lo largo de un eje o barrido lineal

El cilindro descrito en la figura 10b se obtiene a través del barrido de una circunferencia dada por la Curva 1 de la figura 10a que se desarrolla a través de la línea dada por la curva 2. La figura 10d presenta un cuerpo más complejo obtenido a través del desplazamiento de la Curva 1 de la figura 10c y la línea descrita por la Curva 2. Observe que la curva 1 siempre debe ser cerrada y que no se intercepte a si misma para poder ser un modelo sólido.

a) b)

d)

c)

Curva 1

Curva 2

Curva 2

Curva 1

a)

b) c) d)

16

Los sólidos con simetría axial son generados por la rotación de una entidad cerrada alrededor de un eje . Se ha planteado que sea una entidad cerrada, ya que la misma puede estar compuesta por curvas y segmentos de rectas o descrita por una ecuación matemática con la única característica de que tiene que estar cerrada sin presentar auto intersecciones, al igual que ocurría con la curva 1 de la figura 10. A estos tipos de sólidos también se les conoce como modelos de barrido alrededor de un eje. La figura 11B presenta un sólido o cuerpo de revolución obtenido a través de la rotación de la entidad sobre el eje según muestra la figura 11A.

Figura 11: Sólido con simetría axial

Existen algunos programas que permiten obtener sólidos de revolución cura rotación de la entidad sobre el eje no sea de 360 grados, lo cual hace que se obtengan porciones en forma de cuñas. Una variante de obtención de modelos complejos utilizando el método de barrido lo constituye la generación de un sólido a partir de una curva 1 cualquiera que se desarrolla sobre una curva 2 que esté contenida en un plano que se corte con respecto al dado por la curva 1, figura 12.

Figura 12: Barrido a través de una curva cualquiera

El modelo obtenido en la figura 12B es producto del desarrollo de la curva 1 sobre la curva 2 manteniendo constante la relación entre las dos normales de las curvas descritas.

Curva 1

Curva 2

A B

Entidad

Eje

A B

17

Se ha descrito la forma de obtener sólidos empleando el modelo de barrido, no obstante es importante destacar que por estos mismos métodos se desarrollan superficies las cuales en momentos determinados satisfacen las demandas de diseñadores y proyectistas toda vez que no se necesite el comportamiento interior del modelo, sólo su forma exterior.

Particionamiento espacial La forma de expresión del Modelado Geométrico conocida como Particionamiento Espacial es muy utilizada para la simulación de procesos complejos termodinámicos y aerodinámicos donde la forma geométrica no posee un peso importante y se puede incurrir en errores geométricos que garantizan los resultados deseados en un entorno probalístico aceptable. Existen algunos tipos de modelos de particionamiento espacial entre los que encontramos la Descomposición Celular, el Octree y los Poliédricos. A pesar de que el Octree se puede colocar en los métodos poliédricos se ha querido separarlo por la forma de obtención. La descomposición celular regularmente es usada en análisis estructural y es la base de la modelación de elementos finitos. Se fundamenta en que cualquier sólido puede ser representado como la suma o unión de un conjunto de células en la cual el puede ser dividido. Muchos autores le denominan célula a las primitivas descritas por sus aplicaciones. En este sentido se toma como primitiva a objetos que se encuentran parametrizados sean considerados complejos o no. Este método surge debido a que puede un objeto no ser fácil de representarlo en su totalidad pero a través de las células que lo componen sí, lo cual permite un ahorro de recursos y tiempo para su visualización. Algunos autores señalan que el método Octree constituye un caso especial de descomposición celular, sólo que las células son cúbicas y colocadas en un lugar fijo del espacio. El tamaño de las células o cubos decrece en la medida que se comienza el análisis del modelo, este método muestra la representación de un cuerpo sólido como un conjunto de puntos continuos del espacio. La representación Octree del objeto puede ser analizada o estudiada también en forma de árbol. La representación en este tipo de modelo esta fundamentada en 2n x 2n x 2n donde n es la altura del árbol de subdivisión. Los métodos poliédricos intentan discretizar los modelos hasta elementos básicos que pueden ser cubos o tetraedros según las necesidades. La característica más importante es que no siempre se obtienen cuerpos de igual tamaño y es un poco más difícil controlar el error geométrico entre el modelo y el objeto real. Un ejemplo de este método se puede apreciar en la figura 13.

18

Figura 13: Contrapeso de un velero.

Observe que en la imagen de la figura 13 se observan elementos básicos en forma de cubo que han sido divididos a su vez en tetraedros. Los cubos no poseen los mismos tamaños lo que determina mayores densidades donde el modelo es menor pe3rmitiendo un estudio detallado de estas partes donde se concentran las mayores tensiones y esfuerzos aspectos determinantes para diseñadores u proyectistas.

Sistema de coordenadas La representación de cuerpos y entidades geométricas requiere de la utilización de un sistema que permita ubicar su lugar en el espacio y determinar las características geométricas. En el transcurso de los estudios realizados hasta el momento se han podido familiarizar con diferentes tipos de sistemas espaciales y planos. Entre los sistemas planos se pueden mencionar el Cartesiano y el Polar, entre los espaciales al Cartesiano, Cilíndrico y Esférico. Durante el desarrollo del manual se trabajará con el Sistema de Coordenadas Cartesiano. Se conoce que el sistema espacial está compuesto por tres coordenadas que comúnmente se denominan, X, Y y Z. Estas coordenadas espaciales determinan tres planos principales de proyección constituidos por dos coordenadas pudiendo quedar como sigue: [X, Y], [Y, Z] y [Z, X], ha dichos planos se les conoce por la geometría como planos principales de proyección. El sistema de Coordenadas Cartesiano también es conocido como Sistema Rectangular ya que los ejes se encuentran dispuestos a 90 grados o perpendiculares entre si. A partir de este instante se hará referencia al sistema de coordenadas conociendo que se trata del Cartesiano.

Clasificación del Sistema de Coordenadas Existen varias formas de clasificar el sistema de coordenadas. Se estudiaran las que se asocian al mundo real y a la visualización en los dispositivos de exhibición. Cuando se estudia la representación de cuerpos en Geometría Descriptiva o Dibujo Técnico y se describe el cuerpo por los vértices se utiliza un Sistema de Coordenadas derecho. La figura 14A muestra la forma típica de observar el

19

sistema cartesiano que semeja la esquina inferior izquierda del aula o salón donde reciben sus clases. De esta forma el plano horizontal está descrito por las coordenadas [X, Y], el plano frontal por las coordenadas [Y, Z] y el plano lateral izquierdo por [Z, X].

Figura 14: Sistema de Coordenadas Cartesiano Derecho

Los sistemas representados en la figura 14 son sistemas derecho ya que al situar los dedos de la mano derecha en la dirección del eje X y cerrar la mano en la dirección del eje Y, el pulgar nos queda apuntando en la dirección del eje Z. Matemáticamente se puede demostrar que el producto vectorial de X y Y obtiene como resultado Z.

X × Y = Z (4) La figura 14B representa el sistema derecho pero después de haber realizado transformaciones de instancia al representado en la figura 14A. Esto permitirá establecer comparación con el sistema izquierdo. En las computadoras se define la pantalla por PIXELS con las coordenadas enteras [x, y]. Existen diferentes formas de colocar este sistema en las computadoras las cuales se encuentran sustentadas por algunos criterios físicos. Se utilizará el sistema de coordenadas según se muestra en la figura 15A.

Figura 15: Sistema de Coordenadas Cartesiano Izquierdo

Se ha establecido por la gráfica que la coordenada Z se encuentra entrando en la pantalla, o sea, el usuario siempre se encuentra en el semiespacio negativo del

X

Y

O

Z

X

Y

O

A B

X

Y

O

Z X Y

O

Z

A B

20

vector z (– Z). Esto provoca que al aplicar la regla de la mano derecha al nuevo sistema se obtenga – z lo cual determina que es Izquierdo. Es este caso:

X × Y = – Z (5) La diferencia entre estos dos sistemas, real o derecho, e imaginario o izquierdo hacen que la transformación de vista para visualizar los objetos en los dispositivos de salida tengan en cuenta cambio de la reflexión. El sistema de coordenadas puede clasificarse también en Absoluto y Relativo. Se conoce como sistema Absoluto al sistema general del cual dependen todos los objetos situados en una escena. Tomando como escenario el aula se puede decir que el sistema situado en le extremo inferior izquierdo será el absoluto o global desde el cual podemos medir la localización de cada cuerpo u objeto incluso si se encuentra fuera del recinto. En algunos libros y dentro de este manual también se referirá a este sistema como Mundial. El sistema Relativo es un subsistema dentro del sistema global. Cada objeto puede poseer uno para su construcción pero su ubicación estará referida al sistema global. Cuando se trabaja en un ambiente virtual y el usuario introduce valores en la computadora, se establecen diferencias para determinar cuando se ha introducido un valor relativo o absoluto. Por ejemplo; al responder a una orden de “Introduzca un punto:” se escribe “25.0, 14.5” se estará dando un punto en coordenadas absolutas pero si se escribe “R 25.0, 14.5” se estará introduciendo un punto en coordenadas relativas. Una vez conocido como se caracterizan los modelos y los sistemas de coordenadas sobre los que se trabaja se hace necesario explicar el proceso de interacción que ocurre entre una aplicación gráfica, el usuario, la pantalla y el almacenamiento de la información.

Proceso de Interacción Una aplicación gráfica dedicada al diseño de entidades geométricas presenta varias partes. Las básicas son: Gestión de Archivo, Gestión de Entidades, Gestión de Visualización y Gestión de Bases de Datos. Cada una a su vez, posee etapas y sub-etapas según las características y necesidades de la aplicación. Por las características de la materia tratada en este manual centrará la atención en la Gestión de Entidades y algunos aspectos de la Gestión de Visualización. La gestión de entidades posee tres procesos:

• Dibujar • Modificar • Herramientas

21

El proceso denominado Dibujar se dedica a establecer la interfase con el usuario para crear la base de datos culminando con su trazado en el área de trabajo. Una forma de presentación que puede tener una aplicación gráfica se muestra en la figura 16.

Figura 16: Ejemplo didáctico de una interfase para una aplicación gráfica.

La aplicación gráfica presenta 5 partes fundamentales que pueden estar dispuestas de forma permanente al usuario o en diferentes Ventanas que se visualizarían según las necesidades del usuario. En este ejemplo se visualizan las cinco partes: Menú Principal, Barras de Herramientas, Área de Trabajo, Área de Estado y Área de Órdenes. Una aplicación destinada al uso profesional debe permitir la entrada de Órdenes al programa por varias vías, por ejemplo a través del Menú Principal, Barra de Herramientas y por el Área de Órdenes. La aparición del Menú Contextual al presionar el Clic derecho del Ratón (Mouse) proporciona una ventaja mayor que beneficia la rapidez del trabajo. Además siempre existe la posibilidad de introducir valores de coordenadas al hacer clic con el Ratón siempre que se encuentre en el área contextual. A pesar de todas estas alternativas, un programador es capaz de coordinar todas estas entradas si conoce o desarrolla una de ella. Los ejercicios que se desarrolla ran en este manual realizaran las entradas de las Órdenes a través del Área de Órdenes, en esta área la interfase de la figura 16 tiene la palabra “Entrada:” a continuación de ella se escribirán las órdenes que se desee realice la aplicación y esta nos contestará con órdenes que debemos cumplir a través de oraciones imperativas cuyo cumplimiento es inviolable.

Archivo Dibujar Modificar Herramientas …

X.0; Y.0; Z.0

Entrada:

Barras de Herramientas

Menú Principal

Área de Trabajo

Área de Estado

Área de Órdenes

22

Tomando como ejemplo la interfase mostrada en la figura 16 se explicará el proceso de Dibujar dentro de la gestión de entidades. Una vez introducida una orden válida para el trazado de una entidad, la aplicación comienza a pedir los datos necesarios para realizar el trazado en el área de trabajo. En la medida que los datos se van introduciendo se va llenado la estructura de la información que se almacenará, se asumirá durante el desarrollo de este material que se utilizarán lista para esta tarea. La estructura de información puede contener aspectos que solo interesen al programador para hacer más ágil el proceso de exhibición. Utilizando las funciones establecidas en cada lenguaje de programación el programador puede orientar al programa que realice la tarea de trazar, en el dispositivo de salida especificado, la entidad deseada. En el esquema que muestra la figura 17 se puede apreciar cuales son las dos vías utilizadas para realizar el trazado de una entidad geométrica. Este proceso puede desarrollarse en cualquiera de las gestiones explicadas, o sea, tanto para el Dibujo, la Modificación o la utilización de Herramientas. Existe dos tipos de procesos internos que realizan las ordenes dedicadas al trazado de entidades, en la figura se muestra una en línea discontinua y el otro proceso en línea continua. El esquema muestra los distintos periféricos que se utilizan para llevar a cabo el proceso interno del trazado de una entidad. La entrada de datos se realiza a través del teclado o ratón esta va formando o transformando, según sea el caso, la estructura determinada por el programador a través del algoritmo creado para estos efectos. A partir de aquí, existen dos recorridos que se pueden seguir, siempre eligiendo uno de ellos. El primero es que una vez que esté creada la estructura de datos se almacenan los valores necesarios, se crea la lista de exhibición y se traza en la pantalla mostrando la entidad, la otra es, en la medida que se va creando la estructura se muestra al usuario los resultados creándose al final la estructura.

Figura 17: Proceso interno de una orden para Dibujar entidades geométricas

Entrada de datos

Lista de exhibición

Trazado

Estructura de datos

Mouse Teclado etc.

Memoria Disco

Algoritmo

Display Ploter etc.

23

Ambos procesos poseen sus ventajas y desventajas, el primero trabaja sobre la estructura antes de la visualización lo cual es beneficioso para el trabajo con la Gestión de Modificación y Herramientas, el segundo es el más empleado en la Gestión de Dibujo ya que sólo almacena la estructura cuando el usuario ha desarrollado satisfactoriamente la orden deseada. Sobre este aspecto se trabajarán los ejercicios en este manual de forma tal que se aprecien en cada momento los resultados que se esperan. Hasta el momento se ha explicado el proceso interno sin entrar en detalles sobre los aspectos del trazado propiamente. El trazado de una entidad está asociado al encendido a apagado de los píxeles de la pantalla. Luego los algoritmos de trazado son procedimientos internos que gobiernan el hardware determinando no sólo cuando se enciende o apaga un píxel sino además cual será la intensidad y el color asociado a este fenómeno. No es menester adentrarnos en los diferentes algoritmos destinados a ello, se recomienda que consulten varias literaturas que traten sobre los algoritmos de Bressenham y el algoritmo del Punto Medio para que conozcan los aspectos que aún faltan por resolver en cuanto al trazado. El trazado de las entidades se realizará como se explicó, utilizando las funciones en cada lenguaje de programación. Por tal motivo, les sugiero que estudien a profundidad el lenguaje que conocen haciendo hincapié en las funciones gráficas que se utilizan para dibujar un punto, una línea, un arco, una elipse, etc. Deben observar que tipos de datos utilizan para el trazado, les adelanto que sólo se trabaja con valores enteros que corresponden con los píxeles de pantalla. De lo anterior se deriva que no se pueden dar valores reales a las funciones gráficas, por tal motivo, se debe trabajar el valor real para ofrecer un valor entero a la función tal que no exista distorsión en la representación y se mantenga la coherencia de la entidad. En la representación bidimensional de entidades geométricas se puede hacer uso de estas funciones aunque el trabajo para lograr una buena coherencia sea grande, pero el trabajo de representación tridimensional es prácticamente imposible para que una sola persona llegue a resultados satisfactorios en un período corto de tiempo. Esto determina que se utilicen las bibliotecas gráficas disponibles en el mercado entre las que se encuentra la OpenGL y la DirectX. Para usar estas bibliotecas se hace necesario preparar a cada aplicación según sea el lenguaje de programación utilizado. Las funciones gráficas que poseen estas bibliotecas permiten el uso de valores reales ya que resuelven el problema de la coherencia visual, la visualización y la iluminación del píxel, entre otros problemas que se irán tratando en la medida que avancemos en la Gráfica por Computadoras. Para tener una idea de cuan poderosa llega a ser una función gráfica de estas bibliotecas observe el esquema de la figura 18. La función gráfica de la biblioteca contiene los aspectos relacionados con la Gestión de visualización. Realiza las transformaciones Windows-View Port

24

(Ventana – Área de Exhibición), calcula los intervalos discretos para la representación de curvas abiertas y cerradas y permite una coherencia para cualquier transformación de instancia que se realice, entre otras cosas. Con estos procesos obtienen un valor de píxel que se le asigna a un algoritmo para que se encargue de iluminarlo según corresponda.

Figura 18: Aspectos que trata la función gráfica de una biblioteca.

La materia tratada en este manual permitirá conocer algunos aspectos que ofrecen las funciones de las bibliotecas gráficas sin que constituya con ello un manual para la utilización de las mismas.

Entidades geométricas Los prismas, cilindros, conos, esferas, etc. pueden estar parametrizados para la obtención de distintas primitivas. Los objetos primitivos simples son entidades geométricas volumétricas y se forman geométricamente por entidades simples que pueden ser expresadas a través de las funciones cuadráticas naturales. Las entidades geométricas simples tales como el punto, la recta y los polígonos constituyen la base sobre la cual se edifican los cuerpos complejos. En este capitulo se estudiarán distintos tipos de entidades geométricas partiendo desde la más simple el punto hasta la más compleja, los objetos poliédricos.

El punto Es un lugar geométrico abstracto caracterizado por sus coordenadas y color. Cuando ocupa un lugar en el espacio su posición se obtiene por las coordenadas x, y, z. Cuando se trabaje en el plano será x, y. El color del punto determina la forma en que se visualizará en la pantalla del computador. El trazado de un punto en pantalla es muy difícil de visualizar, ya que sólo se iluminará un píxel. Por tal motivo algunas aplicaciones utilizan trucos para que su trazado pueda ser observado con facilidad. Esta entidad es utilizada para determinar puntos relativos, para construir herramientas que permitan conocer el valor del color de un píxel o herramientas

Valores reales Píxel

Algoritmo de Bressenham, Punto Medio,

etc. Transformación Windows-View Port

Función gráfica de una biblioteca

25

que permitan realizar Rejillas como soporte al trazado. En cualquier caso, es necesario conocer en el lenguaje de programación que se trabaje o en la biblioteca gráfica empleada la forma en que se puede representar. Por consiguiente toda aplicación gráfica debe tener una orden que permita el trazado de puntos. Les propongo desarrollar un ejemplo que permitirá un acercamiento mayor a la realización de ejercicios para adquirir la habilidad deseada en esta asignatura. Los ejemplos que se desarrollarán serán la guía para la realización de ejercicios propuestos que en cada capitulo se presentarán. Ejemplo: Realizar el algoritmo de una orden que permita el trazado de puntos en una aplicación gráfica en forma de seudo código. Solución: Antes de comenzar a escribir un algoritmo es necesario hacer consideraciones que permitan ser eficaces en nuestro trabajo. Del enunciado del ejemplo se debe inferir que se posee la interfase de la aplicación gráfica que para nuestros fines será la que demostró en la figura 16. A partir de este instante esta consideración no se realizará ya que todos los ejercicios resueltos tomar como aplicación gráfica la interfase de la figura 16. La segunda consideración es dar un nombre a la orden, o sea, se debe buscar una palabra que identifique correctamente la entidad. Esta palabra se escribirá por el usuario al lado de la palabra entrada siendo de esta forma una orden que le damos a la aplicación. Se toma como nombre de la orden la palabra: “Punto”. Después de escribirla se dará un “enter” para que se ejecute la orden. La tercera consideración se refiere a la estructura de datos que le se asignará al punto. La estructura es un aspecto que solo atañe al programador y cada uno tiene su propio estilo. La propuesta que se presenta será colocada en un fichero de texto y se muestra a continuación:

010 x.x y.y z.z color El identificador 010 indica que los datos almacenados pertenecen a un punto, después se colocará de forma separada los valores reales de las coordenadas (x, y, z) y posteriormente el valor del color asignado. El valor del color será determinado por una variable global de la aplicación. Este solo cambiará si se introduce un nuevo valor antes de declarar la orden Punto. La estructura puede servir tanto para un punto en el espacio como para un punto en el plano, tratándose de un plano principal será cero una de las tres coordenadas. La cuarta consideración es sobre la salida de la orden Punto. Siempre que se introduce una orden en una aplicación gráfica se hace necesario detener su ejecución sin provocar en el usuario demora. El usuario entrará puntos hasta tanto accione las teclas “enter” o “escape”. La oración que se utilizará para solicitarle los puntos al usuario será: “Introduzca un punto”.

26

La quinta consideración esta relacionada con mejorar la forma de visualización del punto cuando se trace. Se colocará una cruz que posibilitará observar con facilidad el lugar que los mismos ocupan.

1 Nombre de la orden: PUNTO 2 Hacer 3 Escribir en el área de órdenes, Introduzca un punto: posicionar el

cursor al lado hasta que el usuario introduzca un valor. Tomar el VALOR esperado

4 Si VALOR es un Punto entonces 5 Dibujar una cruz en la pantalla con 5 píxel en la dirección de los

4 puntos cardinales 6 Construir la estructura de datos y almacenarla 7 Enviar la estructura para la lista de exhibición 8 Continuar 9 Sino 10 Evaluaciones sucesivas 11 Enter entonces SALIR 12 Escape entonces SALIR 13 Por defecto es 14 ERROR1 15 Continuar 16 Mientras Continuar 17 Escribir en el área de diálogo: Entrada: posicionar el cursor al lado

Algoritmo 1: Solución en seudo código para la Orden Punto

Comentarios: Antes de dar por finalizado el ejercicio se comentará algunos detalles del seudo código propuesto. Se ha enumerado cada aspecto tratado para la mejor comprensión del mismo. Tan pronto se introduce la orden Punto, se elimina la palabra “Entrada:” del área de órdenes y se coloca la oración “Introduzca un punto:”. Esto se repetirá ya que se encuentra dentro de un lazo dado por las palabras “Hacer – Mientras Continuar” correspondientes a las líneas 2 y 16 respectivamente. Las únicas formas de salir de este lazo se muestran en las líneas 11 y 12. El funcionamiento de este seudo código radica en que al responden a la oración “Introduzca un punto:” el usuario debe introducir un valor. El mismo será ana lizado para saber si es un punto, la tecla espace o enter. Observe que si es un punto la secuencia de instrucciones, la primera orienta el dibujo de la cruz que no forma parte de la estructura propuesta, después se realiza el llenado de la estructura y la lista de exhibición con lo cual se garantiza que se muestre en el área de trabajo el punto. Para mostrar el punto debe existir una función que leyendo la lista de exhibición determine que es un punto y oriente a las funciones gráficas el trazado en el área

27

de trabajo. Este aspecto no es tratado en este texto ya que constituyen aspectos tratados en la disciplina Programación. Al comprobar que el valor introducido no es un punto entonces se pasa a la secuencia de instrucciones de la línea 10. Observe que si en valor no corresponde con las teclas de salida se ejecutará un error denominado ERROR1, el mismo debe encontrarse en un fichero del tipo texto que contienen la oración “El valor introducido no es un punto”. Esto se escribirá en el área de órdenes sin afectar el proceso de entrada de datos ni proporcionarle al usuario ventanas modales que distraerían la atención de su objetivo principal que es el trazado de puntos. Para una mejor comprensión sobre lo que estará observando el usuario se muestra la secuencia de líneas que aparecerían en el área de órdenes. Se ha destacado en negritas lo que la función coloca y con el símbolo (↵) la acción de la tecla “enter”. Se ha enumerado al extremo derecho para sobre las mismas hacer los comentarios necesarios.

Entrada: Punto ↵ 1 Introduzca un punto: 25, 46 ↵ 2 Introduzca un punto: 24.9, 58.2 ↵ 3 Introduzca un punto: R 14.4, 78.7, 5 ↵ 4 Introduzca un punto: punto ↵ 5 El valor introducido no es un punto Introduzca un punto: 25, 46 ↵ 6 Introduzca un punto: ↵ 7 Entrada: 8

Secuencia 1: Interfase usuario aplicación para la Orden Punto

Observe que el usuario al dar la orden de punto desaparece la palabra entrada la cual debe ser restaurada una vez que se sale, por esta razón aparece la línea 17 en el seudo código propuesto. Además se han introducido varias formas de puntos, absolutos, relativos, bidimensional y tridimensional, al introducir la palabra punto en la línea 5, el algoritmo le presentó el error pero no le invalidó la orden continuando con el lazo de oraciones. Cuando se introdujo la tecla “enter” se finalizó la ejecución del algoritmo devolviendo el control a la aplicación. Situaciones problémicas: La solución de este ejemplo introduce algunas situaciones no resueltas en las cuales deben reflexionar, por ejemplo; El usuario al entrar un punto por el teclado puede estar fuera del área de trabajo de la aplicación. ¿Se reajusta el área, se muestra un mensaje en el área de órdenes o no se hace nada? La definición de una estructura provoca que sin importar el tipo de punto introducido siempre se obtenga un punto tridimensional en coordenadas absolutas. Ejercicios propuestos: 1. Realizar el algoritmo de una función que determine cuando un VALOR entrado

es un punto en forma de seudo código.

28

2. Hacer el algoritmo de una función en seudo código que construya la estructura de datos y la almacene en un fichero de texto.

3. Realizar el algoritmo de una orden que proporciones el color de un pixel al hacer clic con el ratón en el área de trabajo.

Hasta el momento se ha trabajado con el punto como entidad geométrica para el trazado. Sin embargo, también se puede utilizar el punto como una herramienta que ayude al usuario. Suponga que el usuario realizará el trazado de entidades cuyo menor valor es 5 unidades, sería beneficioso proporcionarle una herramienta que presente una rejilla separada 5 unidades entre los puntos como muestra la figura 19. La realización de esta herramienta constituye el segundo ejemplo. Ejemplo: Realizar el algoritmo de una herramienta que permita el trazado de una rejilla a una distancia dada por el usuario en una aplicación gráfica en forma de seudo código.

Figura 19: Visualización en el área de trabajo de la herramienta Rejilla Solución: La primera consideración sobre este ejercicio es que no se hace necesaria la realización de una estructura ya que no se almacenará como una entidad geométrica más. El trazado se realiza en el área de trabajo luego la orden debe activar una función que se encuentra en esta área para que se ejecute. Se puede ofrecer al usuario la posibilidad de establecer una dimensión entre las distancias horizontales y verticales. Luego en la entrada deben aparecer las oraciones correspondientes a las entradas de valor. Antes de continuar exponiendo las consideraciones se presentará el Algoritmo 2 propuesto. 1 Nombre de la herramienta: Rejilla 2 Hacer 3 No continuar

Archivo Dibujar Modificar Herramientas …

X.0; Y.0; Z.0

Entrada:

29

4 Escribir en el área de órdenes, Distancia horizontal <1>: posicionar el cursor al lado hasta que el usuario introduzca un valor.

5 Si VALOR es un entero DH = VALOR sino 6 Si VALOR es “enter” DH = 1 sino 7 ERROR2 8 Continuar 9 Mientras Continuar 10 Hacer 11 No continuar 12 Escribir en el área de órdenes, Distancia vertical <DH>: posicionar el

cursor al lado hasta que el usuario introduzca un valor 13 Si VALOR es un entero DV = VALOR sino 14 Si VALOR es “enter” DV = DH sino 15 ERROR2 16 Continuar 17 Mientras Continuar 18 Desde i = 0 hasta i = ancho del área de trabajo con incremento DH 19 Desde j = 0 hasta j = alto del área de trabajo incrementando DV 20 Dibujar un punto 21 Fin desde j 22 Fin desde i

Algoritmo 2: Solución en seudo código para la Herramienta Rejilla

En el algoritmo 2 se presentan dos ciclos iniciales y asociados a la entrada de datos. En la primera oración se ha colocado un valor entre los signos < y > esto significa la presencia de valores por defecto diferentes de cero, lo cual no se comprueba en el valor de entrada. Observe que al presentar la segunda oración se ha asumido el valor proporcionado por el usuario en la distancia horizontal, esto garantiza por defecto que las distancias sean iguales, no obstante se brinda la posibilidad de que el usuario introduzca otro valor. El tratamiento de validación del dato suministrado por el usuario es lo que más líneas ocupa en este algoritmo ya que el dibujo del punto se realiza dentro de dos ciclos que recorren desde el ancho hasta el alto de la pantalla. Observen que como herramienta de trazado no es necesario extenderse más allá del área definida para el trabajo. El valor que se desea de entrada tiene que ser un valor entero ya que la introducción de valores reales requeriría la implementación de reglas de proporcionalidad. La secuencia de líneas que aparecerían en el área de órdenes correspondientes al algoritmo 2 se muestra a seguir, manteniendo el mismo formato de texto utilizado en la secuencia1.

Entrada: Regilla ↵ 1 Distancia horizontal <1> : 5.3 ↵ 2 El valor introducido no es un entero

30

Distancia horizontal <1> : 5 ↵ 3 Distancia vertical <5>: ↵ 4 Entrada: 5

Secuencia 2: Interfase usuario aplicación para la Herramienta Rejilla

Observe que en la línea 2 el usuario introdujo un valor real provocando la aparición del ERROR2 y la repetición de la solicitud de la distancia horizontal. Una vez que se ha introducido correctamente los valores se dibuja la rejilla devolviendo el control al programa principal. Situación problémica: La solución ofrecida no tiene en consideración desactivar la herramienta en caso de que el usuario no la necesite o la densidad de puntos en pantalla en función de las transformaciones de vistas realizadas. Por tal motivo, se debe pensar en una mejor solución cuando se profundice en el estudio de las transformaciones de vista. Además de ofrecer una solución tridimensional de rejilla teniendo en consideración el volumen de vista a proyectar. Ejercicio propuesto: 1. Hacer el algoritmo de una herramienta que determine la distancia entre dos

puntos dados por el usuario haciendo clic en el área de trabajo en una aplicación gráfica en forma de seudo código.

Segmentos de rectas Antes de iniciar el estudio de esta entidad, se analizará la entidad geométrica conocida como recta. La recta es un lugar geométrico abstracto formado por la infinita sucesión de puntos. Por tal motivo no puede ser representada en un medio finito como la pantalla de un monitor. Con ella no se pueden formar figuras planas ni cuerpos. Por ello se estudiarán los segmentos de recta. Los segmentos de rectas son un lugar geométrico abstracto formado por la sucesión finita de puntos. También pudieran definirse como una porción limitada de una recta lo cual caracterizaría matemáticamente el segmento. El trazado de segmentos de rectas en una aplicación gráfica es casi obligatorio. Se puede prescindir del punto pero no del segmento. Los segmentos surgieron con el modelado de alambre y hasta hoy son utilizados. Los lenguajes de programación cualquier sea su nivel, presentan una función que realiza el trazado de segmentos en el plano. Por tal motivo, se desarrollará un ejercicio que ermita el trazado de segmentos de rectas. Ejemplo: Realizar el algoritmo, en forma de seudo código, de una orden que permita el trazado de segmentos de rectas en una aplicación gráfica. Solución: Al igual que se ha realizado en ejercicios anteriores, se expondrán algunas consideraciones que permitirán la comprensión del algoritmo 3 propuesto.

31

Se comenzará por el nombre de la orden asociada al trazado de segmentos de rectas denominada: “Línea”. El nombre se ha colocado con la letra inicial en mayúsculas y se ha acentuado, se debe pensar que ocurriría si en usuario la escribe toda en mayúsculas, o no la acentúa. La estructura de datos del segmento estará constituido por un identificador 012, después le seguirán dos puntos con coordenadas x, y, z de valores reales correspondientes al inicio y fin del segmento. Además se ha añadido el color que presenta las mismas características de la entidad anterior y un dato más correspondiente al estilo. Observe la estructura:

012 x.x y.y z.z x.x y.y z.z color estilo En el dato correspondiente al estilo se almacenaría el tipo de línea que constituye el segmento, continua, discontinua, de punto, etc. Por defecto se debe asumir un valor que cambiará sólo si el usuario lo desea. La estructura de datos propuesta no guarda relación con las formas en que pueden ser solicitados los datos para el trazado de un segmento. Además de los puntos extremos del segmento se pudiera solicitar, un punto inicial, la longitud y la pendiente si se considera el segmento en el plano, para la representación de un segmento en el espacio se necesitarían otros datos adicionales. La decisión de, qué tipos de datos y cómo deben ser introducidos por el usuario, será discutida entre el programador y el cliente. No obstante, siempre se debe adoptar una forma de estructura única sin importar la entrada, lo que provoca la introducción de funciones matemáticas. La entrada de datos será simple considerando los fines docentes del algoritmo. Por lo cual, se decidió que la entrada será por puntos, bidimensional o tridimensional a través del teclado. Los segmentos de rectas de trazarán una vez que se concluya el cumplimiento de la orden por la aplicación. Ello coincide con uno de los procesos interno de una orden para dibujar entidades geométricas, descrito en la figura 17. Una vez dentro de la orden, el usuario podría hacer segmentos de rectas hasta que le avise a la aplicación que cese su cumplimiento lo cual será con la acción de las teclas “enter” o “escape”. Esto provoca que sin importar la cantidad de puntos que se introduzcan, siempre se realizará una estructura de segmento de recta entre el último punto introducido y el anterior. Se incluirá en esta orden una opción que permita eliminar un punto si el usuario se equivoca. La opción será conocida por Deshacer pero sólo se hará alusión a la primera letra (D). Incorporar esta opción en cualquier orden de una aplicación gráfica enriquece las posibilidades del usuario y aumenta la velocidad de trabajo. Observe el Algoritmo 3 propuesto cómo solución del ejercicio. 1 Nombre de la orden: Línea

32

2 Inicializar la lista de segmentos (LS) 3 INICIO 4 Hacer 5 Escribir en el área de diálogo: DESDE: posicionar el cursor al lado,

tomar el VALOR esperado 6 Si VALOR es un PUNTO entonces 7 Agregar VALOR a (LS) 8 Sino 9 Evaluaciones sucesivas 10 Escape entonces Finalizar (LS) y SALIR 11 Por defecto es 12 ERROR1 13 Continua 14 Mientras Continua 15 Hacer 16 Escribir en el área de diálogo: HASTA: posicionar el cursor al lado,

tomar el VALOR esperado 17 Si VALOR es un PUNTO entonces 18 Agregar VALOR a (LS) 19 Dibuja las líneas entre este valor y el punto anterior según (LS) 20 Continua 21 Sino 22 Evaluaciones sucesivas 23 D entonces 24 Si longitud (LS) es mayor que 1 entonces 25 Elimina el último valor 26 Continua 27 Sino 28 ERROR3 29 Envía la dirección de ejecución a INICIO 30 Escape entonces 31 Si longitud (LS) es mayor que 1 entonces 32 Construir la estructura de datos para los

segmentos, almacenarla y enviarlos a la lista de exhibición Finalizar (LS)

33 SALIR 34 Sino 35 Finalizar (LS) 36 ERROR4 37 SALIR 38 Por defecto es 39 ERROR1 40 Continua 41 Mientras Continua

Algoritmo 3: Solución en seudo código para la Orden Línea

Observe que el algoritmo presenta dos lazos y que se ha omitido en las evaluaciones sucesivas declaradas en las líneas 9 y 22 la concerniente a la acción

33

de oprimir la tecla “enter”. Esta omisión ha sido voluntaria para ahorrar espacio y poder presentar todo el algoritmo en una sola página. No obstante, las instrucciones que se le aplicarían al oprimirla corresponden exactamente con la acción de oprimir la tecla “escape”. La primera acción que realiza la orden es inicializar una lista se será destruida cuando se termine su ejecución por cualquiera de las vías. El primer ciclo corresponde a la introducción del primer punto por el usuario, aquí no se proporciona la opción de deshacer ya que no existe puntos introducidos. El segundo ciclo comienza con la palabra que solicita la entrada del segundo punto del segmento y continúa preguntando por el segundo punto ya que asume como punto inicial al último punto entrado. Desde la línea 24 hasta la 29 se encuentran las acciones que se ejecutarán si el usuario quiere deshacer los puntos introducidos. Aquí se introduce un ERROR3 correspondiente a “Entidad vacía”, enviándose la dirección de ejecución del algoritmo al INICIO. Esto ocurre cuando el usuario ha eliminado todos los puntos introducidos realizando el mismo efecto que se hubiera dado la orden “Línea” en ese instante. Observe el ejemplo de la interfase que se muestra en la Secuencia 3D. Otro error introducido aparece en la línea 36 del Algoritmo 3. El ERROR4 se pudiera considerar un mensaje cuya manipulación se hace igual que los errores, en el se visualiza “No existe la entidad”. Alerta al usuario que a pesar de haber introducido un punto no se ha generado la entidad pues ha salido sin ofrecer el segundo punto del segmento. Observe en el ejemplo de la Secuencia 3A, que el algoritmo sale de su ejecución devolviéndole el mando, según deseo el usuario, pero le informa la no existencia de la entidad ordenada.

Entrada: linea ↵ 1 Entrada: linea ↵ 1 Desde: 25, 44 ↵ 2 Desde: 25, 44 ↵ 2 Hasta: Esc ↵ 3 Hasta: 52, 47 ↵ 3 No existe la entidad Hasta: ↵ 4 Entrada: 4 Entrada: 5

A B Entrada: linea ↵ 1 Entrada: linea ↵ 1 Desde: 25, 44 ↵ 2 Desde: 25, 44 ↵ 2 Hasta: 52, 47 ↵ 3 Hasta: 52, 47 ↵ 3 Hasta: D ↵ 4 Hasta: D ↵ 4 Hasta: 52, 52 ↵ 5 Hasta: D ↵ 5 Entrada: 6 Entidad vacía Desde: 6

C D Secuencia 3: Ejemplos sobre la interfase usuario aplicación para la Orden Línea

34

Los ejemplos que muestran las Secuencias 3B y 3C describen la creación de un segmento de recta. En el segundo caso, el usuario se equivoca al introducir las coordenadas del punto 52, 47 las cuales son sustituidas por 52, 52. Situaciones problémicas: La entrada de datos debería también ser a través del ratón, esto ayudaría al aumento de la velocidad toda vez que el usuario este trabajando en el plano. Al respecto se tendría que validar si el usuario acciona un clic en el mismo lugar donde con anterioridad lo había realizado lo cual genera segmentos de recta con longitud cero. Las preguntas en este caso serían, ¿su aplicación aceptaría como segmento uno cuya longitud sea cero?, en caso de aceptarla, ¿avisaría al usuario la entrada de un segmento con longitud cero?. Se comentará, en otras partes de este manual, aspectos que benefician y perjudican esta decisión. Otro aspecto interesante sería proporcionarle al usuario la posibilidad de obtener una secuencia de segmentos de rectas que finalicen donde se comenzó, o sea, que se muestre en la pantalla del monitor como una entidad cerrada aunque no lo sea ya que cada segmento constituye una entidad. Ejercicio propuesto: 1. Modifique el Algoritmo 3 de forma tal que permita crear un conjunto de

segmentos de rectas que cierren. 2. Agregue a la modificación anterior un Aviso al usuario cuando se genere un

segmento con longitud cero. 3. Proponga un algoritmo que permita el trazado de segmentos en la medida que

estos se van generando con la entrada de datos sin necesidad de esperar a que finalice la orden.

4. Realizar el algoritmo, en forma de seudo código, de una orden que haga el trazado de segmentos de rectas permitiendo la entrada de datos por el teclado y por el ratón.

5. Realizar una orden que permita trazar múltiples líneas.

Polilíneas Las polilíneas constituyen un conjunto de puntos o vértices que definen segmentos de rectas, al primer vértice se le denomina punto inicial y al último punto final, cuando el punto inicial y el final coinciden se dice que la polilínea es cerrada. Observe figura 20. Las polilíneas y los segmentos de rectas poseen la misma forma de visibilidad en los dispositivos de exhibición, su diferencia radica en la forma de manipulación. Otra forma de clasificarse la polilínea es en espacial o plana. Se considera una polilínea plana cuando todos los puntos que la componen pertenecen al mismo plano, o sea cumplen con la ecuación del plano. Por consiguiente, cuando no es plana, es espacial.

35

Figura 20: Tipos de polilíneas. a) Abierta, b) Cerrada.

Una polilínea es tratada como una entidad completa sin importar la cantidad de segmentos que contenga ni si se encuentra en el plano. Por tal motivo, se propone una estructura de datos asociada al conjunto o lista de punto que la forma, según se muestra:

014 x.x y.y z.z x.x y.y z.z … x.x y.y z.z color estilo Observe que la diferencia de esta estructura con la facilitada para el segmento está en el identificador y en la cantidad de puntos que puede se infinita. Se pueden proponer estructuras más complejas o un identificador para cuando la polilínea se encuentra cerrada, abierta, plana o espacial. No obstante, se recomienda la selección de estructuras de datos simples que cumplan con todas las exigencias de la clasificación lo cual facilitaría el trabajo del programador. Una vez discutida la relación que existe entre la clasificación y la estructura de datos. Se propone realizar el siguiente ejemplo: Ejemplo: Realizar el algoritmo, en forma de seudo código, de una orden que permita el trazado de polilíneas en una aplicación gráfica. Solución: Antes de presentar el ejemplo se expuso algunas consideraciones que no son necesarias repetirlas por tanto, se comenzará por el nombre de la orden asociada al trazado de polilíneas denominada: “Polilínea”. En ejercicios anteriores se ha expuesto la importancia de validar los datos e informar al usuario de los errores que comete. También, se han puesto de manifiesto algunas consideraciones que serían válidas para la polilínea, sin embargo para la solución de este ejercicio se mostrará un Algoritmo 4 incompleto. Se sugiere que como estudio independiente realice el algoritmo completo de solución. La entrada de datos de las polilíneas se establece a través del teclado, dando la posibilidad al usuario de terminar su trazado de forma abierta o cerrada. Por ejemplo, para finalizar la entrada de datos se puede hacer de diferentes formas,

P0

P1

P2

P3

P4 P5

Inicio

Final

P4

P0 = P5

P1

P2

P3

Inicio = Final

a) b)

36

oprimiendo la tecla “enter”, “escape”, la tecla “C” o empleando otro botón del ratón diferente al de dibujar. Con las dos primeras la polilínea trazada queda abierta y con la tecla “C” se cierra. Las formas de salida de la orden han sido ampliamente discutidas por lo cual se omitirán las secuencias de acciones en el algoritmo, sólo se precisaran detalles del uso de la tecla “C” para cerrar la polilínea. Observe el Algoritmo 4 propuesto cómo solución del ejercicio. 1 Nombre de la orden: PoliLinea 2 Inicializar la lista para la polilínea (LP) 3 Escribir en el área de diálogo: DESDE: posicionar el cursor al lado,

tomar el VALOR esperado 4 Hacer 5 Escribir en el área de diálogo: HASTA: posicionar el cursor al

lado, tomar el VALOR esperado 6 Si VALOR es un PUNTO entonces 7 Agregar VALOR a (LP) 8 Continua 9 Sino 10 Evaluaciones sucesivas 11 D entonces - - - 12 Escape entonces - - - 13 C entonces 14 Si longitud (LP) es mayor que 2 entonces 15 Repetir el primer punto 16 Construir la estructura de datos para la

Polilínea, almacenarla y enviarla a la lista de exhibición Finalizar (LP)

17 Salir 18 Sino 19 ERROR5 20 Salir 21 Por defecto es 22 ERROR1 23 Continua 24 Mientras Continua

Algoritmo 4: Solución incompleta en seudo código para la Orden Polilínea

Observen en la línea 14 que la primera acción a realizar es la comprobación de la cantidad de elementos dentro de la lista de polilínea. El objetivo de la misma es garantizar que no se repita el mismo segmento trazado en sentido contrario al dibujado. Si el usuario después de haber introducido el punto inicial, y el punto final del primer segmento de la polilínea, se le ocurre oprimir la tecla “C” ordenando cerrar la polilínea el algoritmo emite un error del tipo 5 “No se pudo

37

cerrar” y sale envía la dirección de ejecución al programa principal. Observe en la secuencia 4 la manifestación de este error.

Entrada: polilinea ↵ 1 Desde: 25, 44 ↵ 2 Hasta: 52, 47 ↵ 3 Hasta: C ↵ 4 No se pudo cerrar Entrada: 5

Secuencia 4: Interfase usuario aplicación para la Orden polilínea con el ERROR5

Situaciones problémicas: Se cumplen las mismas situaciones problémicas que las vistas con la orden línea dada su similitud con entre ambas. No obstante, se podría pensar en herramientas asociadas a la polilínea que proporcionen mayor flexibilidad a una aplicación gráfica. Por ejemplo, separar la estructura de la polilínea en estructuras de segmentos, o teniendo una estructura de segmentos que presenten puntos comunes se puedan convertir en una polilínea. Ejercicio propuesto: 1. Complete el Algoritmo 4 propuesto. 2. Modifique el Algoritmo 4 colocando un Aviso al usuario cuando se genere un

segmento con longitud cero. 3. Proponga un algoritmo que permita el trazado de segmentos de la polilínea en

la medida que estos se van generando con la entrada de datos sin necesidad de esperar a que finalice la orden polilínea.

4. Realizar el algoritmo, en forma de seudo código, de una herramienta que permita explotar una polilínea convirtiéndola en un grupo de segmentos de rectas.

5. Proponga una función en seudo código que permita conocer cuando una polilínea trazada es plana o espacial.

6. Desarrollar una función que responda cuando una polilínea es plana o espacial.

Polígonos Un polígono se define como una región del plano limitada por una polilínea cerrada. El polígono, al igual que la polilínea, se considera una entidad monolítica, o sea, cuando se selecciona para borrar se eliminan todos los segmentos que lo componen. Un polígono trazado puede quedar de la forma que muestra la figura 21. No obstante se debe aclarar que no todas las polilíneas cerradas constituyen polígonos. Las polilíneas de la figura 22 son cerradas pero no forman un polígono.

38

Figura 21: Representación geométrica de un polígono

Figura 22: Polilíneas cerradas que no constituyen polígonos.

La polilínea A de la figura 22, posee seis puntos. El segmento de recta A3 A4 está contenido en el segmento de recta A4 A5. Esto determina que la polilínea cerrada no forma una región de un plano. La polilínea B por su parte posee una intersección entre los segmentos B1 B2 y B3 B4. Por tanto, las características que debe poseer una plilínea cerrada para que sea un polígono son:

1. No existan segmentos contenidos. 2. Los segmentos no se pueden intersecar. 3. No poseen existir puntos repetidos en el conjunto de puntos que forma la

polilínea Clasificación de los polígonos Los polígonos poseen varis formas de clasificarse, se expondrán tres de ellas que serán utilizadas en la realización de algunos ejercicios y cuyas combinaciones generan la aparición de otras. Las maneras de clasificarlas será en cuanto a: Por la distancia de los segmentos a un punto, Por la apariencia de su forma y Por el sentido de orientación. Clasificación de los polígonos I - Según la distancia de los segmentos a un punto pueden ser: Regulares o Irregulares Se considera un Polígono regular al que está inscrito o circunscrito a una circunferencia. Esta característica provoca que todos los puntos del polígono estén a igual distancia del centro de la circunferencia. Además, posee la característica de que todos los segmentos tienen igual longitud y mientras mayor es su número

B1, B5

B2

B3

B4

A1, A6 A2

A3 A4

A5

P0

P1

P2

P3

P4

P5

39

más se asemeja a la circunferencia. La obtención de sus puntos se realiza de forma automática, o sea, los datos que se necesitan para su trazado son el centro, radio o diámetro de la circunferencia y el número de lados. Polígono Irregular es aquel que no cumple con las características del regular. Generalmente se traza como una polilínea cerrada. Si una polilínea es cerrada teniendo todos sus segmentos iguales pero no inscrito o circunscrito en una circunferencia también se considerará polígono irregular. Observe en la Figura 23B que todos los segmentos tienen igual tamaño pero la distancia de todos los puntos al centro es diferente.

Figura 23: A) Polígono Regular y B) Polígono Irregular

II – Según la apariencia de su forma puede clasificarse en Convexo y No Convexo. Se dice que un polígono es Convexo si todas las rectas que unen dos puntos interiores del polígono se encuentran por completo dentro del área de esta. En caso contrario, se clasifica en no convexo. Observar las figuras 24A y 24B.

Figura 24: A) Polígono Convexo y B) Polígono No Convexo

La definición establecida no ofrece una formulación matemática de fácil manipulación ya que el número de segmentos de rectas que se pueden trazar dentro de un polígono es demasiado grande a pesar de ser finito. La solución a este problema radica en el análisis de la posición relativa que poseen los puntos del polígono con respecto a una arista. Aspecto que será tratado en otra parte del manual.

A B

A

B

A B

P1

P2

P3 P4

P5

P6

P1

P2

P3

P4

P5 P6

A B

40

Se puede afirmar que todos los polígonos regulares son convexos pero los irregulares pueden tener cualquiera de las clasificaciones. Observe que la figura 24A presenta un polígono convexo irregular. III – Según el sentido de su orientación. Al trazar los polígonos estos pueden quedar orientados de forma: Positiva o Negativa

Figura 25: A) Polígono Positivo y B) Polígono Negativo

Por convención se dice que un polígono con vértice P1,..., Pn (y aristas Pi-1Pi y PnP1) está orientado Positivamente si el recorrido de los vértices en el orden dado se produce contrario al de las manecillas del reloj. De manera equivalente, se puede establecer por la regla de la mano derecha la clasificación del polígono en positivo o negativo. Si orienten los dedos recorriendo la orientación del polígono y el pulgar queda apuntando hacia el observador se puede afirmar que es positivo. Al aplicar el método de la mano derecha se aplica el producto en cruz según las reglas vectoriales, por tal motivo, el pulgar indicaría la posición que ocupa la normal del plano que forma el polígono. Luego, se puede decir que cuando un polígono se encuentra en un plano perpendicular al observador y es positivo, la normal está apuntando hacia el observador. La orientación de un polígono no se conoce por la forma de representación sino por la relación matemática del conjunto de puntos que lo componen. Observe en la figura 23 que no se puede conocer cual es la orientación de los polígonos A y B debido a que no están colocados los puntos de los vértices como ocurre con la figura 25. Por lo tanto, para saber el sentido con que se ha trazado un polígono es necesario tener la estructura de datos que lo caracteriza. Cuando los polígonos son no convexos, no es tan fácil determinar la orientación del mismo. Se utilizará el polígono irregular mostrado en la figura 26, para explicar un método que tiene en consideración la dirección de la normal del área que establecen los triángulos formados por el primer punto y las aristas que no lo contienen. Este método tiene implícito que todo polígono puede ser dividido en triángulos tomando siempre como uno de los vértices el punto inicial de su construcción.

a) b)

P2

P3 P4

P5

P6 = P1

P6 = P1

P2

P3 P4

P5

41

Figura 26: Polígono no convexo

El conjunto de puntos que definen el polígono no convexo de la figura 26 es P1, P2, P3, P4, P5, P6 y P1, (se ha repetido el primer punto para denotar que está cerrado). Si se toma el primer punto P1, con la primera arista que no lo contiene P2P3 determinando un triángulo, se obtiene un polígono negativo. En un segundo paso se toma el primer punto P1 con la próxima arista P3P4 se obtiene un polígono positivo. Las figuras 27a y 27B muestran las áreas obtenidas, así como la orientación a través de un signo.

Figura 27: Sentido de las dos primeras áreas del polígono no convexo

Repitiendo el procedimiento para el resto de las aristas se obtienen dos áreas positivas más según se puede observar en las figura 28A y 28B. En total, se han determinado cuatro triángulos teniendo uno negativo y tres positivos, como la cantidad mayor es positiva se puede afirmar que el polígono no convexo de la figura 26 es un polígono positivo. Los polígonos son las entidades planas que permiten la construcción de Modelos de Barrido y la caracterización de las caras en los Modelos de Frontera. Analizando la clasificación mostrada, se realizará un ejercicio a modo de ejemplo que permita el trazado de polígonos regulares empleando una orden.

A

P1

P2

P3 P5

P6

P4

B

P1

P2

P3P5

P6

P4

P1

P2

P3P5

P6

P4

42

Figura 28: Sentido de las dos últimas áreas del polígono no convexo

Ejemplo: Realizar el algoritmo, en forma de seudo código, de una orden que permita el trazado de polígonos regulares en una aplicación gráfica. La estructura de datos que se propone para los polígonos queda de la siguiente forma:

018 x.x y.y z.z x.x y.y z.z … x.x y.y z.z N x.x y.y z.z color estilo Un identificador diferente al utilizado hasta el momento seguido de puntos hasta que llegue a una letra N. El punto que se encuentra antes de esta letra debe corresponder con el primer punto del conjunto. Después de la letra N le sigue el vector normal al polígono incluido en esta estructura debido a su importancia, discutida con anterioridad. Finalmente, se le agregaron los valores de color y estilo al igual que ocurrió en las anteriores estructuras. Los polígonos regulares pueden estar circunscrito a una circunferencia o inscrito a ella. En la figura 29A se observa un polígono circunscrito a una circunferencia, sin embargo la circunferencia se encuentra inscrita en el polígono, por tal motivo se denotó el radio como RI, en el caso de la figura 29B se muestra un polígono inscrito sin embargo la circunferencia está circunscrita por lo cual se denota como RC. En ambas figuras, se han colocado las circunferencias en líneas discontinuas ya que no aparecen cuando se trace el polígono. La cantidad de lados trazados se ha denotado con la letra N y se indica que su valor es igual a seis correspondiendo con los hexágonos trazados. Con la letra C se ha denotado el centro de las circunferencias. La figura 29 sugiere además, que los valores de las coordenadas de los puntos del P1 al P6 sean determinados automáticamente, o sea, el usuario decidirá si el polígono a trazar es Circunscrito o Inscrito después introducirá el valor de las coordenadas del centro, el radio y la cantidad de lados que desea tenga el polígono. Observe en la secuencia 5 los aspectos mencionados y la propuesta de valores por defecto que tendrán la orden.

B P1

P2

P3 P5

P6

P4

AP1

P2

P3 P5

P6

P4

43

Figura 29: Tipos de polígonos regulares. A) Circunscrito y, B) Inscrito

Entrada: poligono ↵ 1 Inscrito o Circunscrito < I >: ↵ 2 Centro de la circunferencia < 0,0 >: 52, 47 ↵ 3 Radio < 1 >: 25 ↵ 4 Cantidad de lados < 4 >: 6 5 Entrada: 6

Secuencia 5: Interfase usuario aplicación para la Orden poligono

La generación automática de puntos requiere de un análisis matemático que permita obtener las relaciones necesarias y asegurar si la decisión de la interfase propuesta es acertada.

Figura 30: Modelo matemático

En la figura 30, se han representado la obtención de un polígono a través de una circunferencia inscrita y una circunscrita lo cual permite observar la relación entre las ecuaciones. Las relaciones matemáticas que determina el primer punto del polígono son:

P1.x = C.x + RC cos α (6)

RI RC

C C

A B

N = 6 P1

P2 P3

P4

P5 P6

P1

P2 P3

P4

P5 P6

C

RC

RI

L

P1

P2 P3

P4

P5 P6

α

44

P1.y = C.y + RC sen α (7) La ecuación seis se utiliza para determinar la componente x del punto y la ecuación 7 para la componente y. los primeros términos C.x y C.y corresponden al centro, dato ofrecido por el usuario. La distancia que existe entre el centro y el punto es igual al valor del radio de la circunferencia circunscrita RC. Si aplicamos la descomposición trigonométrica se la relación entre la circunferencia inscrita y la circunscrita como sigue:

α

=

2cos

RIRC (8)

La relación 6 y 7 se puede aplicar tanto para obtener los puntos de la inscrita como la circunscrita según la decisión del usuario. Esto facilita la solución del algoritmo simplificando el uso de cálculos innecesarios. La incógnita α se obtiene a partir de la cantidad de lados del polígono, su relación es:

o360N

=α (9)

1 Nombre de la orden: Poligono 2 Inicializar la lista para el polígono (LP) 3 Escribir en el área de diálogo: Inscrito o Circunscrito <I>: posicionar el

cursor al lado, tomar el VALOR1 esperado 4 Escribir en el área de diálogo: Centro de la circunferencia <0,0>:

posicionar el cursor al lado, tomar el valor C.x y C.y esperado 5 Escribir en el área de diálogo: Radio <1>: posicionar el cursor al lado,

tomar el valor R esperado 6 Escribir en el área de diálogo: Cantidad de lados <4>: posicionar el

cursor al lado, tomar el valor N esperado 7 Calcular ecuación (6); valor de ALFA 8 Si VALOR1 = C entonces 9 Utilizar la ecuación (7) sustituyendo a RI por R 10 sino 11 RC = R 12 Desde i = 0 hasta i = N incrementando en 1 13 P(i).x = C.x + RC cos (ALFA * N) 14 P(i).y = C.y + RC sen (ALFA * N) 15 Agregar P(I) a (LP) 16 Repetir el primer punto 17 Construir la estructura de datos para el Polígono, almacenarlo y

enviarlo a la lista de exhibición Finalizar (LP)

Algoritmo 5: Solución incompleta en seudo código para la Orden Polígono

Discutida la forma de determinar los punto y llegando a la conclusión de que no es necesaria la entrada de otro dato se ofrece la solución algoritmo 5 para esta

45

orden. Observen que el nombre dado es polígono, luego con esta orden sólo se podrán construir polígonos regulares. Esta consideración debe ser de conocimiento del usuario, por tal motivo debe aparecer en la ayuda o manual del usuario de la aplicación esta característica. Luego, el trazado de un polígono con otras características se debe hacer a través de la orden polilínea lo cual provoca la existencia de una función que determine si una polilínea trazada puede ser considerada un polígono. Esta interrogante debe ser respondida a través de una función gráfica. El empleo de esta función gráfica se explica a través del siguiente ejemplo, suponga que un usuario creo dos entidades, una polilínea y una línea con las cuales pretende realizar un modelo de barrido lineal. Para que este modelo pueda ser un sólido la polilínea tiene que ser un polígono. Ejercicio propuesto: 1. Realizar el algoritmo, en forma de seudo código, de una función que determine

si una polilínea trazada es un polígono. 2. Realice una función que determine cuando un polígono es convexo. 3. Hacer una función que devuelve siempre un polígono en sentido positivo. 4. Realizar una función que permita unir varios segmentos trazados en una

polilínea. 5. Haga una algoritmo, en forma de seudo código, de una orden que dibuje

rectángulos o cuadros a partir de la entrada de los puntos de la diagonal.

Círculo, Elipse y Arco El circulo y el arco de circunferencia son una sucesión finita de puntos que equidistan de un punto llamado centro, y la elipse y el arco de elipse son una secesión finita de puntos que mantienen una relación constante con los focos. El círculo, la elipse y el arco son entidades geométricas planas que cumplen con la ecuación cuadrática general, lo cual las hace fácil de representar. El circulo y la elipse pueden ser inscritas en un rectángulo, ver figura 31A y 31B, lo cual posibilita que lo lenguajes de nivel medio y alto tengan dentro de sus funciones de trazado una dedicada a los círculos y las elipse, y otra, a los arcos de estas dos entidades.

Figura 31: Representación de un Circulo A) y de una Elipse B), inscritas en un rectángulo.

A B

46

Desde edades tempranas se enseña que para el trazado de un círculo basta con conocer el centro y el radio, para el cado de una elipse, el semieje mayor y el menor esto provoca que una aplicación que posibilite el trazado de estas entidades, tenga presente la forma de solicitar los datos al usuario. Sin embargo, la peculiaridad de la representación en un rectángulo provoca la necesidad de utilizar algún modelo matemático que a partir de los datos de entrada determine los puntos diagonales del mismo. Además, esto hace pensar en la estructura de datos asociada a esta entidad, la cual no sólo debe poseer los datos que el usuario entró, sino también los valores de los puntos del rectángulo que la inscribe, observe un ejemplo de una estructura para un circulo en el plano XY.

020 centro radio x.x y.y x.x y.y color estilo En la estructura se destaca el centro y el radio del círculo además se siguen los puntos del rectángulo que la inscribe. Ello posibilita que para el trazado de la entidad sólo sea necesario el uso de los puntos de las diagonales del rectángulo, sin embargo para cálculos posteriores con esta entidad se tiene los valores del centro y el radio dados por el us uario lo que permite un cálculo más preciso sin la necesidad de recalcularlos. Los círculos y las elipses pueden ser utilizados para formar cuerpos sólidos empleando el método de barrido, son la base de los conos y los cilindros. Por tal motivo, un aplicación que se dedique a la representación de entidades gráficas debe contar con órdenes que permitan su trazado. Los programas dedicados al uso de profesionales disponen de múltiples formas para entrar los datos. Por ejemplo, una circunferencia puede estar dada por los puntos extremos que definen su diámetro, por tres puntos, por su centro y su radio, etc. Si se estudia cualquier paquete gráfico podrá apreciar la variedad de formas de introducir los datos para estas entidades.

Figura 32: Arcos de círculos

Los arcos de circunferencia son trazados en sentido contrario al movimiento de las manecillas del reloj (antihorario). Los valores que se utilizan para su trazado son los puntos extremos diagonales del rectángulo donde se inscriben. En la figura 32

C

C

C

PI PF

PI

PF

PI

PF

A) B) C)

47

se muestran tres ejemplos de arcos de circunferencias con los rectángulos asociados a estos. Observe que los valores de los extremos del rectángulo están en función de las coordenadas máximas y mínimas que encierran el sector circular que determina el arco. Por tanto, es imprescindible encontrar la relación matemática entre los valores entrados y los extremos del rectángulo. Los arcos de elipses poseen también un sentido de orientación como se observa en la figura 33. El centro está asociado al centro de la elipse que los contiene trazada en línea discontinua al igual que el rectángulo donde se inscriben.

Figura 33: Arcos de elipses

El estudio de estas entidades debe permitir la propuesta de una estructura de datos que satisfaga los requerimientos deseados de trazado y datos ofrecidos por el usuario. Al aplicarse el método de barrido con estas entidades no se obtienen cuerpos sólidos sino superficies. El trazado de estas entidades no lineales puede hacerse a través de polilíneas con segmentos suficientemente pequeños. Por ejemplo, el círculo que muestra la figura 34A en realidad es un octágono, ver figura 34B, que por la pequeñez de los segmentos parece que todos los puntos poseen igual distancia al centro.

Figura 34: Arcos de elipses

Algunas aplicaciones utilizan esta característica para trazar las entidades estudiadas, o sea, hacen una discretización de la curva en segmentos controlados que varían su tamaño en función del área de exhibición y el área que ocupe la

C

PI PF

C PI

PF

A) B)

A B

48

entidad. Esto también permite representar algunas entidades geométricas planas como parábolas, hipérbolas, etc., sin que exista en el lenguaje de programación una función que permita el trazado. Ejercicio propuesto: 1. Proponga algunas formas en que se establezca la secuencia de entrada de

datos por el usuario para un círculo y un arco de circunferencia. 2. Defina una estructura de datos para un arco de circunferencia y un arco de

elipse. 3. Desarrolle un algoritmo, en forma de seudo código, de una orden que permita

el trazado de un círculo. 4. Realice un algoritmo, en forma de seudo código, de una orden que permita el

trazado de una elipse. 5. Elabore un algoritmo, en forma de seudo código, de una orden que permita el

trazado de un arco de circunferencia. 6. Haga un algoritmo, en forma de seudo código, de una orden que permita el

trazado de un arco de elipse. 7. ¿Qué cambios serían necesarios introducir en la orden que realice un polilínea

para que permita trazar arcos de circunferencias como parte de las entidades?

Curvas Las curvas se definen por ecuaciones y representan una continuidad de puntos infinito. Se ha discutido que no se puede representar entidades infinitas en la pantalla del monitor, por tanto las curvas tratadas serán entidades finitas limitadas por dos puntos extremos. El empleo de las curvas permite un nivel más elevado de modelado, en especial, para construir modelos muy realistas. Con ellas se obtienen superficies curvadas y formas geométricas más complejas que incluyen Segmentos Curvados, Parches de superficies curvadas, y Superficies Cuadráticas. Para la representación de curvas se pueden dar dos situaciones: 1. La curva o la superficie tiene una expresión matemática conocida. Por tanto, se

dice que la curva está definida analíticamente, tal es el caso de los circulo, elipses, parábolas, etc.

2. Se intenta diseñar una curva o superficie que tenga una forma predeterminada, pero no se conoce su expresión matemática sólo un conjunto de puntos. En este caso se denomina curva generalizada.

Existen varias formas de generar curvas, por tanto, se estudiarán las permiten desarrollar modelos y superficie, las cuales son generadas a través de un conjunto de puntos que se adaptan a la forma deseada por el usuario. El proceso interactivo para la generación de curvas consta de tres pasos: 1. Selección del tipo de curva a trazar. 2. Introducción de un conjunto de puntos por el usuario.

49

3. La aplicación calcula la ecuación de la curva generando un conjunto de puntos adicionales y trazando polilíneas entre ellos.

En todas las aplicaciones existe la posibilidad de realizar modificaciones al conjunto de puntos iniciales para obtener una curva que mejor se adapte al diseño deseado. Las curvas pueden clasificarse según la forma de generación en curvas de interpolación y aproximación. Las curvas de interpolación son aquellas que pasan por todos los puntos de control dados por el usuario. Las curvas de aproximación son aquellas que pasan por n puntos del total acercándose a los puntos por donde no tiene contacto. Por la cantidad de puntos que se utilizan para desarrollar la curva estas pueden ser locales o globales. Las curvas locales son aquellas que se forman entre dos puntos de control, o sea, sólo poseen un punto inicial y un punto final, por lo tanto, se hacen necesarias algunas otras características para su trazado. Las curvas globales son aquellas que tiene en consideración para su comportamiento el conjunto de puntos entrado por el usuario.

Método de interpolación Dados n + 1 puntos datos, P0(X0,Y0), . . ., Pn(Xn,Yn) se desea obtener una curva que en algún sentido se ajuste con la forma delineada por estos puntos. Si se requiere que la curva pase por todos los puntos, se trata de un problema de interpolación. La interpolación surge por ejemplo al tratar de reconstruir la forma de un objeto digitalizado. Para que la interpolación sea fácil se emplean los polinomios. Un polinomio de grado n es aquel que tiene la forma:

Q(t) = a n x n + a n-1 x n-1 + ... + a 1 x + a 0 (10) Este polinomio está determinado por sus n + 1 coeficientes algebraicos [an, . . ., a0]. Los polinomios más usados son los de grado 3 o cúbicos ya que garantizan la continuidad en la primera y segunda derivada. La primera deriva ofrece la tangente a la curva en cualquier punto y la segunda derivada en relativa al radio de curvatura. Por tal motivo si se puede garantizar la representación de una curva a través de un polinomio cúbico se obtendrán curvas suaves sin cambios bruscos en su dirección. Un polinomio cúbico se escribe:

f(x) = a 3 x 3 + a 2 x 2 + a 1 x + a 0 (11) El uso de polinomios de grados superiores no provocan que la curva sea más exacta, todo lo contrario. Siempre que se utilicen polinomios los se garantiza que

50

la curva resultante pasará por los puntos, sin embargo, no se conoce con exactitud que comportamiento tiene la curva entre los puntos. La forma y = f(x) de representar una curva depende estrictamente de un sistema cartesiano, pueden existir tangentes verticales y lo más común es que las curvas no sean planas y cerradas, por este motivo es mejor adoptar la forma de un polinomio paramétrico donde la caracterización de cualquier punto de la curva, x, y, z está dado por el parámetro independiente t y los coeficientes algebraicos, según muestran las ecuaciones

x = a 3x t 3 + a 2x t 2 + a 1x t + a 0x (12)

y = a 3y t 3 + a 2y t 2 + a 1y t + a 0y (13)

z = a 3z t 3 + a 2z t 2 + a 1z t + a 0z (14) El parámetro independiente t varia entre cero y uno siendo que su valor cero corresponde con el ini cio de la curva y el valor uno con el final de la misma. Los coeficientes algebraicos deben ser calculados por la aplicación según los puntos introducidos por el usuario, en tal sentido se estudiarán algunos tipos de curvas de interpolación. Polinomios de Hermite o Hermitianos Las curvas cúbicas, definidas por las coordenadas y el vector tangente de los puntos extremos son llamadas frecuentemente curvas Hermite. Charles Hermite (1822 – 1901) fue un matemático francés que desarrollo su método en el siglo XIX.

Figura 35: Coeficientes geométricos de la curva Hermite

p 0

p 1

t

t = 0

t = 1

p’ 0

p’ 1

p 0

p 1

t

t = 0

t = 1

p’ 0

p’ 1

a)

b)

51

Charles Hermite propone un método mediante el cual se pueden controlar los coeficientes algebraicos de un polinomio si se conocen los coeficientes geométricos caracterizados por los valores de los puntos y las tangentes. Para desarrollar el método se tomará una curva local en el espacio según muestra la figura 35. La curva de desarrolla entre los puntos P0 y P1, teniendo declarado en ambos extremos las tangentes P’0 y P’1. Observe que la diferencia entre las curvas de la figura 35A y 35B radica en los vectores de las tangentes y sus valores modulares, ya que los puntos permanecieron constantes. La representación de la curva se fundamenta en cualquier punto del intervalo puede ser expresado como un polinomio de tercer grado en función paramétrica como sigue:

x = a 3x t 3 + a 2x t 2 + a 1x t + a 0x t ; [0, 1] (15)

y = a 3y t 3 + a 2y t 2 + a 1y t + a 0y (16)

z = a 3z t 3 + a 2z t 2 + a 1z t + a 0z (17) Agrupando los términos se tiene que un punto p (t) es función del valor de t para el intervalo analizado y se obtiene la forma algebraica de un segmento de curva paramétrica cúbica como sigue:

p (t) = a 3 t 3 + a 2 t 2 + a 1 t + a 0 (18) Escribiendo en forma de matriz se tiene:

p (t) = [ t 3 t 2 t 1] [ a 3 a 2 a 1 a 0 ] T (19) Agrupando:

P = T AT (20) Donde:

A: Matriz de Coeficientes Algebraicos T: Matriz de la variable independiente P: Punto de la curva

El conjunto de los 12 coeficientes constantes son llamados coeficientes algebraicos, estos coeficientes son únicos para cada curva y determinan el tamaño y forma de la curva en su posición del espacio. Dos curvas de la misma forma tienen diferentes coeficientes algebraicos si ellas ocupan diferentes posiciones en el espacio. El planteamiento de una curva Hermite a través de los coeficientes algebraicos no permite conocer a priori cual es el comportamiento de la misma. La forma más

52

simple de poder saber esto es conociendo, además de los puntos, las derivadas de las curvas en los extremos. A partir de esto Hermite plantea que existen condiciones de frontera o contornos indispensables que cumple cualquier curva, las cuales son:

- La función evaluada en t = 0 es igual a p 0, o sea: p (0) = p 0

- La función evaluada en t = 1 es igual a p 1, o sea:

p (1) = p 1

- La derivada de la función evaluada en t = 0 es igual a p’0, o sea p’ (0) = p’0

- La derivada de la función evaluada en t = 1 es igual a p’1, o sea

p’ (1) = p’1 Los vectores tangentes corresponden con las derivadas en función de t evaluada en los extremos de la curva local.

tp∂

∂ )0( = p’ (0) y

tp∂

∂ )1( = p’ (1) (21)

A partir de estas condiciones y evaluando en la ecuación (18) se obtiene que:

p 0 = a 0 (22)

p 1 = a 3 + a 2 + a 1 + a 0 (23)

p’0 = a 1 (24)

p’1 = 3 a 3 + 2 a 2 + a 1 (25) La evaluación de estas condiciones ofrece como resultado un sistema de ecuaciones con dos incógnitas (a 2 y a 3) y dos ecuaciones cuya solución general queda como sigue:

a 0 = p 0 (26)

a 1 = p’0 (27)

a 2 = - 3 p 0 + 3 p 1 - 2 p’0 - p’1 (28)

a 3 = 2 p 0 - 2 p 1 + p’0 + p’1 (29) Sustituyendo los coeficientes algebraicos en la expresión (19) y despejando los coeficientes geométricos se obtiene:

53

p (t) = [t 3 t 2 t 1]

−−−

000101001233

1122

[ p 0 p 1 p’0 p’1 ] T (30)

Agrupando;

P = T M BT (31) Donde:

T: Matriz de la variable independiente M: Matriz de transformación universal B: Matriz de las condiciones de contorno o Coeficientes Geométricos

Ahora se puede establecer la relación entre los Coeficientes Algebraicos y Geométricos si se toma en cons ideración las ecuaciones 20 y 31 quedando como sigue:

AT = M BT por tanto, BT = M –1 AT (32) Donde

M =

−−−

0001

01001233

1122

y M –1 =

0123

010011111000

(33)

Hermite encontró la relación que existe entre los coeficientes algebraicos y geométricos permitiendo gobernar el dominio geométrico a través de los puntos extremos y representarlo a intervalos de t una vez calculados los coeficientes algebraicos. Analicemos el siguiente ejemplo: Ejemplo: De una curva se conocen los puntos P0 (1, 0, 1) y P1 (2, 4, 1) y las tangentes P’0 (0, 8, 0) y P’1 (0, 1, 0), y se desea obtener los coeficientes algebraicos para escribir las ecuaciones 15, 16 y 17 que permitan construirla. Solución: Por la ecuación 32 se conoce la relación entre los coeficientes geométricos y los algebraicos, la cual puede ser escrita de la siguiente forma:

54

−−−

=

'1

'0'

1

0

0

1

2

3

00010100

12331122

PP

PP

aa

aa

Recuerde que A = M B (34)

Por consiguiente;

a3 = 2P0 – 2P1 + P’0 + P’1 (35) Los coeficientes algebraicos representan una triada, o sea, un componente para cada coordenada del sistema, por tanto:

a3 (a3x, a3y, a3z) = (-2, 1, 0) (36) Continuando de igual forma se tienen el resto de los coeficientes como sigue;

a2 = -3P0 + 3P1 – 2P’0 – P’1 = (3, -5, 0) (37)

a1 = P’0 = (0, 8, 0) (38)

a0 = P0 = (1, 0, 1) (39) Por tanto, el polinomio cúbico expresado en término de la variable independiente queda;

x (t) = - 2 t 3 + 3 t 2 + 1 t ; [0, 1] (40)

y (t) = t 3 - 5 t 2 + 8 t (41)

z (t) = 1 (42) La construcción de la curva descrita por la ecuaciones 40, 41 y 42 se harán sustituyendo los valores de t para 0.25, 0.5 y 0.75 quedando como resultado los valores que se muestran en la tabla 1.

Tabla 1: Coordenadas de los puntos de la curva

t x (t) y (t) z (t) 0.25 1,2 1,7 1 0.50 1,5 2,9 1 0.75 1,8 3,6 1

En la figura 36A se ha representado los valores de los coeficientes geométricos en un plano paralelo al plano XY y que pasa por z = 1, observe de la tabla que los valores de z no varían lo que posibilita la representación de su proyección. La

55

figura 36B muestra la curva en estudio. Observe que la diferencia en los valores de la tangente provoca un acercamiento de la curva. Esta realiza una mayor tangencia hacia donde el mayor el valor de la tangente.

Figura 36: Gráficas de una curva Hermite. a) Gráfica que representa los coeficientes geométricos.; b) Representación de la curva pasando por los cinco

puntos.

Lo estudiado hasta el momento se relaciona con un polinomio Hermite local. Existe una solución Hermitiana para curvas globales en la cual se construyen polinomios de Hermite en cada tramo de nodos consecutivos. Dicha solución no será tratada en este material, dejándose para que sea estudiado de manera independiente. No obstante se puede señalar que los polinomios de Hermite consideran el empleo de la primera derivada lo que garantiza la continuidad de la función pero no garantiza que el radio de curvatura para la curva cuando entra al punto y cuando sale del punto sea constante, ver figura 37, por tal motivo, se emplean curvas que puedan cumplir esto, surgiendo la curva tipo Spline

Figura 37: Inflexiones en las curvas Hermite globales.

La figura 37 muestra como no garantizar la segunda derivada provoca la aparición de inflexiones (en ti) no deseadas cunado se modelan objetos.

CH i - 1 (x)

CH i (x)

t i

x x

t = 0.5

P1

P′1

P′0 P′0

P′1

P1

P0 P0

t = 0.25

t = 0.75

y y A) B)

56

Ejercicio propuesto: 1. Obtenga los coeficientes algebraicos manteniendo los valores de los puntos

anteriores y tomando como tangente P’0 (0, 0, 8) y P’1 (0, 0, -7). ¿La curva se mantiene en un plano paralelo a XY? Se recomienda para la representación de curvas en el espacio, realizar las proyecciones en los planos XY, YZ y ZX de forma independiente o analizar el comportamiento del parámetro independiente con la variable, o sea, los gráficos de (x , t), (y , t) y (z , t).

2. Proponga una estructura de datos para almacenar una curva Hermite. 3. Desarrollar una función que permita obtener los coeficientes algebraicos a

partir de los coeficientes geométricos para una curva Hermite local. 4. Hacer una función que permita obtener los coeficientes geométricos a partir de

los coeficientes algebraicos para una curva Hermite local. 5. Realice un algoritmo, en forma de seudo código, que permita la representación

de una curva Hermite. Considere la entrada de valores por el teclado y el ratón. 6. Determine los coeficientes algebraicos de una curva Hermite conociendo la

representación de sus condiciones de contorno, según la figura 38.

Figura 38: Condiciones de contorno de una curva Hermite. Tome cada marca sobre los ejes como la unidad.

Spline

Es la curva más importante en la industria de la aviación y naviera. Antiguamente el dibujante tomaba un instrumento denominado SPLINE, de material flexible que pasaba a través de una serie de puntos de control estableciendo un dibujo, para garantizar su estabilidad se colocaban contrapesos. Las curvas obtenidas por este instrumento eran suaves. La forma matemática de garantizar esta suavidad es a través del cumplimiento de la segunda derivada. Por este motivo, a la curva que une a varios puntos conteniendolos y garantizando la segunda derivada se le conoce como spline. La spline surge debido a que se necesita que el polinomio de interpolación sea más uniforme entre los puntos datos. Por tanto, un Spline de grado m tiene derivadas continuas hasta de orden m – 1 en los puntos datos. Como ya se ha expresado el grado mejor para el análisis es el tercero. Los polinomios de tercer grado garantizan la continuidad de la segunda derivada

P0

P1

P´0

P´1

y

x

57

siendo esta constante. Por tanto, restringiendo la atención a los Spline cúbicos se tiene la siguiente expresión matemática:

∑+

==

2n

0i3,ii3 )x(Ba)x(S (43)

Se observa que hay n + 3 coeficientes (a i) que requieren de la evaluación de un igual número de ecuaciones. El criterio de interpolación S 3 (x j ) = y j, para j = 0, ..., n; proporcionan n + 1 ecuaciones:

∑+

===

2n

0ij3,iij3j )x(Ba)x(Sy (44)

Las dos condiciones restantes se especifican como condiciones de frontera en los puntos extremos X 0 y X n. Algunas elecciones de las condiciones de frontera son: 1- Condiciones de spline natural

S”3(x 0) = 0 y S”3(x n) = 0 (45)

2- Condición de spline sujetado S’3(x 0) = y’0 y S’3(x n) = y’n (46)

3- Condición de spline cíclico. Resulta útil para producir curvas cerradas

S’3(x 0) = S’3(x n) y S”3(x 0) = S”3(x n) (47)

4- Condición de spline anticíclico. Resulta útil para producir spline con extremos paralelos cuyos vectores sean de igual magnitud pero dirección opuesta.

S’3(x 0) = - S’3(x n) y S”3(x 0) = - S”3(x n) (48)

Spline Local Realizando una similitud con la explicación de la curva Hermite para dos puntos, veamos que ocurre con la spline. Como se ha explicado el conocimiento del comportamiento parte del conocimiento de las condiciones de contorno. Recuerde que para la curva Hermite se tiene:

P = T M BT con BT = [ p 0 p 1 p’0 p’1 ] T (49) Donde:

T: Matriz de la variable independiente M: Matriz de transformación universal B: Matriz de las condiciones de contorno o Coeficientes Geométricos

Tomando la forma geométrica dada en el proceso de obtención de la curva de Hermite pero teniendo en consideración que la primera derivada debe ser sustituida por la segunda para una simple representación de un Spline entre dos

58

puntos se tiene que las condiciones de contorno para la spline varia ya que, lo que se necesita es los dos puntos p 0 y p 1 y las segundas derivadas p’’0 p’’1 que cambian por las primeras garantizando el radio de curvatura. El cálculo de la segunda derivada se expresa matemáticamente como sigue:

tp''p

2

∂∂= (50)

Determinando la segunda derivada de la ecuación (18) y evaluando para t = 0 y t = 1 se tiene que:

p’’0 = - 6 p 0 + 6 p 1 - 4 p’0 - 2 p’1 (51)

p’’1 = 6 p 0 - 6 p 1 + 2 p’0 + 4 p’1 (52) De este sistema de ecuaciones se necesita despejar los valores de p’0 y p’1 que serán sustituidos en la ecuación 18, la solución es:

p’0 = - p 0 + p 1 – 1/6 (2 p’’0 + p’’1) (53)

p’1 = - p 0 + p 1 + 1/6 (p’’0 + 2 p’’1) (54)

Sustituyendo los valores y realizando las agrupaciones correspondientes se tiene que:

p = (1 – t) p 0 + t p 1 + 1/6 (- t3 + 3t2 –2 t) p’’0 + 1/6 (t3 – t) p’’1 (55) Su descomposición en matrices sería:

p (t) = [ t 3 t 2 t 1]

−−−

00016

13

111

02100

61

6100

[ p 0 p 1 p’’0 p’’1 ] T (56)

Compare los resultados obtenidos con la ecuación 30, para el caso de la spline la matriz de transformación universal y las condiciones del contorno cambian. Este análisis tan simple no es lo que ocurre cuando se trata de varios puntos. Se necesita que el polinomio de interpolación por secciones sea uniforme y se sabe que un Spline de grado m tiene derivadas continuas hasta de orden m – 1 en los puntos datos. Este tipo de curva ha sido discutida y estudiada en otras asignaturas por lo que sólo se añadirá que para la solución de la obtención de los valores de S(x) se utilizan los métodos numéricos.

59

Existen muchos tipos de curvas más que trabajan con diferentes tipos de polinomios las cuales deben ser estudiadas y analizadas para su posible utilización en una aplicación específica. Las curvas de interpolación no tienen funciones específicas dentro de los lenguajes de programación, por tanto, se deben crear procedimientos para su construcción. Por fortuna gracias a las tecnologías de las comunicaciones, existen sitios que ofrecen funciones para trazar la spline teniendo en consideración las condiciones de frontera. Ejercicio propuesto: 1. Determinar los coeficientes algebraicos de una curva Spline local conociendo

la representación de las condiciones de contorno. Los coeficientes k0 y k1 son las magnitudes físicas por las que se multiplica el vector unitario de la segunda derivada. Ver figura 39

Figura 39: Condiciones de contorno de una curva spline. Tome cada marca sobre los ejes como la unidad.

2. Proponga una estructura de datos para almacenar una curva spline. 3. Realice un algoritmo, en forma de seudo código, que permita la representación

de una curva spline local. Considere la entrada de valores por el teclado.

Método de aproximación. Estas curvas surgen por la necesidad de determinar comportamientos de líneas en función del conocimiento de fuerzas que actúan sobre ella. Para el mejor entendimiento de lo planteado se dice que surgió en la industria automovilística para determinar las líneas aerodinámicas de los carros frente a las fuerzas de resistencia del aire. Un ejemplo de estas curvas son las Bezier. Curvas de Bézier Curvas de aproximación a un conjunto de puntos que pasa por el primer y último punto, las cuales son llamadas frecuentemente curvas de Bézier. Pierre Bezier

P0

y

P 0

P´1

k 0 = 3

k 1 = 5

x

P1

60

(1910 – 1999) fue un ingeniero francés que trabajó en la compañía de automóviles Renault, desarrollo su método en la década del 60. Las propiedades más importantes de la curva Bezier son: 1. La función interpola del primer al último vértice, o sea, la curva comienza en el

punto P0 y termina en Pn. 2. La tangente en P0 es P1 – P0 y al tangente en Pn es Pn – Pn – 1. 3. Existe continuidad de todos los puntos que forman la curva ya que las

derivadas son formadas por los puntos. 4. La función B i, n (t) es simétrica con respecto a t y (1 – t) Para satisfacer estas 4 condiciones Bezier escoge la familia de función llamada polinomios de Bernstein, esta función depende del número de puntos de control. Por tanto, el segmento de curva que se obtiene entre los puntos tiene la función:

)t(Bp)t(p n,i

n

0ii∑

=

= ]1,0[t ∈ (57)

Donde

ini)i,n(n,i )t1(tCB −−= Polinómios de Bernstein (58)

( )!in!i

!nC )i,n( −

= Coeficientes polinomiales (59)

El número de puntos de control determina el grado del polinomio de la función B i, n (t) mezcladora. Obsérvese la expansión de la ecuación 57 para 3 puntos (P0, P1, P2), donde el valor de n = 2

p (t) = )!02(!0

!2−

t° (1-t) 2-0 po +

+ )!12(!1

!2−

t’ (1-t )2-1 pi +

+ )!22(!2

!2−

t 2 (1-t)2-2 p2 (60)

Resolviendo las funciones mezcladoras se tiene:

p (t) = (1-t) 2 p0 + 2 t (1-t) p1 + t2 p2 (61) La menor cantidad de puntos de control que admite esta curva es tres. No obstante, la construcción geométrica más utilizada de esta curva es para cuatro puntos. Según se observa en la figura 40:

61

Figura 40: Curva Bezier

Se considera que para 4 puntos (P0, P1, P2, P3); se obtenga una Curva de Bézier cúbica con n = 3. Las funciones de mezcla de la curva de Bézier de grado 3, o sea, polinomios de Bernstein de grado 3 se expresan según la siguiente ecuación:

∑=

=3

1i3,ii )t(BP)t(P i3i

3,i )t1(t!)i3(!i

!3)t(B −−

−= ]1,0[t∈ (62)

Forma matricial de la Bézier cúbica, obteniendo los puntos de contro l es:

P(t) = [ t3 t2 t 1 ]

−−

−−

0001

003303631331

[ p 0 p 1 p 2 p 3 ]T ]1,0[t∈ (63)

Calculando las matrices se tiene que:

p (t) = (1 – t)3 p0 + 3 t (1 – t)2 p1 + 3t2 (1-t) p2 + t3 p3 (64) La curva Bezier de cuatro puntos es considerada una curva local en cuanto a que con los puntos P0 y P4 se controla el inicio y final de la curva y con los puntos P1 y P2 en comportamiento de la trayectoria. Esto es muy parecido a lo que realiza Hermite luego deben tener cuidado de no equivocarlos.

Figura 41: Acercamiento de la curva Bezier al punto de control

El comportamiento de una curva puede cambiarse si, se cambia de posición un punto de control. La influencia de la repetición de puntos de contro l en un mismo

n = 2 n = 3

n = 4

P0

P1 ≡ P2 ≡ Pn -1

Pn

P0

P1P2

P3 P0 P1

P2 P3

62

lugar provócale acercamiento de la curva pero nunca toca el punto. Observe la figura 41 como la curva se va acercando en la medida que se varía el valor del grado del polinomio que es proporcional a la cantidad de puntos de control. La facilidad matemática del comportamiento local de las curvas Bezier ha permitido la creación de funciones para su trazado en lenguajes de programación y bibliotecas gráficas. Ejercicio propuesto: 1. Determinar los coeficientes del polinomio de Bernstein para 6 puntos de control

y escriba la ecuación para determinar los puntos. 2. Proponga una estructura de datos para las curvas Bezier. 3. Elabora un algoritmo, en forma de seudo código, que permita el trazado de una

curva Bezier local. Existen otros tipos de curvas de aproximación como son las B-Spline. Estas curvas son muy utilizadas para el diseño y control del maquinado de superficies en la industria automovilística. Para representarlas requiere de un procedimiento elaborado por un programador. Por tal motivo, se deja su estudio de independiente e investigativa. Con las curvas se pueden realizar superficies de revolución, cilíndricas, de traslación, etc. Este contenido no será tratado en este material.

Construcción de sólidos Desde el estudio de los polígonos se ha tratado el tema de la construcción de modelos empleando el método de barrido ya que una de las vías para obtener modelos sólidos poliédricos del tipo prismático es a través de la extrusión de polígonos. Los polígonos son polilíneas con características específicas por lo cual se hace necesario determinar cuando se está en presencia de uno. La construcción del modelo sólido debe ser tal que las normales de todos los polígonos que delimitan la cara salgan del sólido. Les propongo realizar el siguiente ejercicio para tomar las consideraciones necesarias en la medida que se desarrolla. Ejemplo: Realizar el algoritmo, en forma de seudo código, de una herramienta que permita la construcción cuerpos prismáticos en una aplicación gráfica. La estructura de datos del cuerpo prismático que se desarrollará mediante esta herramienta será:

0100 cv x.x y.y z.z x.x y.y z.z …

cs polígono & normal polígono & normal … color

63

ca 1 2 3 4 …

material textura

Los datos se almacenan en la estructura tienen la siguiente formación: primero el identificador 0100 que anuncia la presencia de un cuerpo prismático, después viene el cantidad de vértices (cv) seguido de los valores de las coordenadas de los mismos en el sistema cartesiano (x, y, z). Continua con la cantidad de aristas (ca), la cual está constituida por el número de orden del vértice, o sea, cuando aparece 3 4 (tres, espacio, cuatro) significa que el vértices tres de la lista se une con el número cuatro. De forma análoga se puede escribir 24 57, lo que significará que el vértice 24 se une al 57. Puede existir otra forma de relacionar las aristas con los vértices o simplemente eliminar la lista de vértices y sólo quedar con la lista de aristas, en cualquier caso se debe hacer un análisis del uso posterior de los datos almacenados. A continuación de la relación de aristas se coloca la cantidad de superficies (cs) que posee el cuerpo. Las superficies estarán compuestas por polígonos que tendrán al final su normal en correspondencia con el criterio asumido, o sea, saliendo del objeto. Al cuerpo se le han agregado algunos datos que posteriormente podrán ser utilizados. El color determina las características de absorción de fotones luminosos del cuerpo, el material determinará propiedades físico – mecánicas asociadas al mismo y la textura formará parte de la apariencia visual. En estos instantes sólo las enunciaremos ya que cada una de ellas constituye una subestructura que será necesario estudiar.

Figura 42: Pasos para obtener un cuerpo prismático.

Observe a través de un ejemplo gráfico como la herramienta obtendrá el cuerpo prismático que se observa en la figura 43a. El primer paso es solicitar al usuario la

P0 P1

P2 P3

P4

P0 P1

P2 P3

P4

Q0 Q4

Q3 Q2

Q1

a) b)

Np

Np

Nq

64

elección de una polilínea. La herramienta tomará una polilínea comprobando si puede ser un polígono, en caso afirmativo lo ordenará en sentido positivo y determinará su normal, obteniendo como resultado la figura 42A. Posteriormente se le solicitará al usuario la altura del cuerpo o la altura de la extrusión a realizar. Con este dato, la aplicación trasladará el polígono hasta la altura deseada. Para hacer la herramienta didáctica, se limitará a tomar polígonos en el plano XY, en tal sentido, sólo se incrementará los valores de Z de las coordenadas de los vértices. De esta forma se ha construido la base superior del prisma. Observe la figura 42B. El usuario puede que seleccione directamente un polígono regular, en tal caso se ahorran procesos tales como la comprobación de si es polígono, su ordenamiento y la determinación de la normal. La base inferior es formada por los valores de los vértices del polígono seleccionado pero en sentido negativo lo cual provoca que la normal quede en dirección opuesta, lo que corresponde con el criterio de saliendo del cuerpo. La figura 42B, muestra la ubicación de los polígonos que constituyen la base superior e inferior del modelo ejemplo. Con este proceso se ha formado la lista de vértices del cuerpo prismático. Para terminar de construir el cuerpo sólo queda colocar las aristas verticales que unen cada vértice de los polígonos. Así, se concluye con la lista de aristas del cuerpo restando la formación de la lista de polígonos.

Figura 43: Cuerpo prismático.

Los polígonos laterales deben tener un orden, tal que, la normal del mismo quede saliendo del cuerpo según muestra la figura 43b. La forma de realizar este proceso es variado, depende del conocimiento que se posea de programación y del lenguaje utilizado para la realización de la aplicación. Si se comprendió la forma en que se construye el cuerpo, se sugiere que realicen manualmente y de forma literal la estructura de datos del cuerpo de la figura 43a.

P0 P1

P2 P3

P4

Q0 Q4

Q3 Q2

Q1

P1

P2

Q4 Q3

NPI

a) b)

65

La herramienta para la creación de cuerpos prismáticos a través de polígonos se denominará Extrusión y debe tener una interfase con el usuario según muestra la secuencia 6.

Entrada: extrusion ↵ 1 Seleccione una polilínea: selección ↵ 2 Diga la altura de la extrusión: 52 ↵ 3 Entrada: 4

Secuencia 6: Interfase usuario aplicación para la herramienta Extrusión

La solución del ejercicio se muestra en el algoritmo 6. Observe que se ha introducido un nuevo error que le indica al usuario “La entidad seleccionada no es válida”. La interfase solicita que seleccione una polilínea, sin embargo, no todas pueden constituir polígonos para con estos formar los cuerpos prismáticos. Con el mensaje se le sugiere al usuario la selección de otra entidad o posibles errores cometidos cuando fue declarada. En la solución presentada se ha omitido, a propósito, lo relacionado con la salida de la herramienta en caso de arrepentimiento, por parte del usuario, de su utilización. En tal sentido se sugiere completar el algoritmo teniendo presente que el usuario puede finalizar en cualquier instante accionando la tecla espace o enter.

1 Nombre de la orden: Extrusion 2 Hacer 3 Escribir en el área de diálogo: Seleccione una polilínea: posicionar

el cursor al lado, tomar el VALOR esperado 4 Si VALOR no es Polígono entonces 5 ERROR6 6 Continua 7 sino 8 Realizar las transformaciones necesarias hasta obtener la lista

de vértices del cuerpo 9 No Continua 10 Mientras No Continua 11 Escribir en el área de diálogo: Diga la altura de la extrusión: posicionar

el cursor al lado, tomar el Valor esperado 12 Construir la estructura de datos para el cuerpo prismático,

almacenarlo y enviarlo a la lista de exhibición.

Algoritmo 6: Solución incompleta en seudo código para la herramienta Extrusión

Situaciones problémicas: La herramienta obtenida ha sido limitada para la compresión didáctica del proceso llevado a cabo. La misma puede ser generalizada para que permita la selección de círculos y elipses, lo que permitiría la construcción de cuerpos geométricos volumétricos simples. Al mismo tiempo, si se ofrece la posibilidad de convergencia de las ari stas a través de su inclinación se pueden obtener pirámides, conos, o estos mismos objetos truncados.

66

Otro aspecto es la limitación de que el polígono seleccionado deba descansar sobre el plano XY, esto le resta operatividad a la aplicación. La solución pudiera ser cambiar el sistema de referencia de la aplicación para lo cual se debería crear una herramienta que permitiera esta transformación, lo cual será estudiado en otro epígrafe de este material. Hasta el momento se ha explicado que toda estructura debe ser enviada a la Lista de exhibición. Sin embargo, esta lista no es la más idónea para contener las entidades que han sido trazadas en una aplicación. Todas las entidades trazadas deben ir a una Lista de entidades y sólo de esa lista se extraen los elementos necesarios para la exhibición. En el caso de los cuerpos prismáticos, por ejemplo, se mandaría a la lista de entidades la estructura propuesta, sin embargo, para la lista de exhibición se mandarían solamente la las aristas. La representación de cuerpos prismáticos a través de las aristas posibilitaría el uso menor del procesador matemático y la visualización rápida de los mismos. O sea, se ha creado un cuerpo sólido a los efectos de la estructura pero la visualización se hace en modelo de alambre. Las operaciones sobre este modelo desde el punto de vista geométrico son muy eficientes. El estudio de la representación del cuerpo según la visualización de las caras se estudiará en el epígrafe correspondiente a superficies ocultas. Ejercicio propuesto: 1. Modifique el algoritmo 6 para que permita la selección de círculos y la salida

del usuario con la acción de las teclas escape y enter. 2. Proponga una herramienta que permita la formación de superficies a partir de

la selección de arcos y curvas que no estén entre lazadas. 3. Elaborar una orden que permita obtener cuerpos de revolución a partir de

polígonos. 4. ¿Qué soluciones debe dar para hacer la lista de exhibición y la representación

de la entidad en marco de alambre?

Cuerpos geométricos En este epígrafe se estudiarán las entidades geométricas volumétricas que forman cuerpos sólidos, entre las que se encuentran: Prisma de base rectangular, Cilindro, Cono y Esfera. Estas entidades son consideradas junto a otras como sólidos primitivos. Las características geométricas de ellas se pueden apreciar en la figura 44. Los datos solicitados al usuario para construir estos cuerpos aparecen señalados en la figura. Se ha señalizado con PI al punto de inserción en el espacio de estos modelos.

67

Figura 44: Algunos sólidos primitivos

En la secuencia 7 se aprecian las preguntas que se realizaría en una orden para crear un prisma correspondiendo con la figura 44A.

Entrada: Prisma ↵ 1 Punto de inserción <0, 0, 0>: ↵ 2 Longitud < 1 >: 52 ↵ 3 Profundidad < 58 >: 78 ↵ 4 Altura < 78 >: 35 ↵ 5 Entrada: 6

Secuencia 7: Interfase usuario aplicación para la orden Prisma

Esta secuencia permite que el usuario por defecto pueda crear un cubo con sólo dar el valor de la longitud. No obstante, podría existir una orden específica que los hiciera aunque parezca redundante. La secuencia 8 y 9 muestran las preguntas a realizar por las órdenes que crearán un cilindro y un cono respectivamente, correspondiendo con las figuras 44B y 44C.

Entrada: cilindro ↵ 1 Centro del cilindro <0, 0, 0>: ↵ 2 Radio: 52 ↵ 3 Altura: 52 ↵ 4 Entrada: 5

Secuencia 8: Interfase usuario aplicación para la orden Cilindro

a) b)

l

p

a

PI PI

PI PI

a

a

r

r r

c) d)

68

Entrada: cono ↵ 1 Centro del cono <0, 0, 0>: ↵ 2 Radio: 52 ↵ 3 Altura: 52 ↵ 4 Entrada: 5

Secuencia 9: Interfase usuario aplicación para la orden Cono

Se podría analizar la utilización de un orden que permitiera dibujar un cilindro o un cono a partir de otra secuencia de preguntas. También se puede dar la opción de crear cilindros y conos inclinados, o conos truncados. Todo ello, precisa de un estudio minucioso de las características geométricas comunes a estos cuerpos, tarea que se propone sea de carácter investigativo y colectiva. Los ejercicios resueltos permiten omitir algún ejemplo sobre cuerpos geométricos y la secuencia para crear la esfera representada en la figura 44D. Las secuencias presentadas para la creación de los cuerpos de la figura 44 permitirán dar solución a los problemas que se proponen. Ejercicio propuesto: 1. Realice un algoritmo, en forma de seudo código, que permita la representación

de un Prima. Considere la entrada de valores por el teclado y los mensajes de error.

2. Elabore un algoritmo, en forma de seudo código, que permita la representación de un Cilindro. Considere la entrada de valores por el teclado y los mensajes de error.

3. Haga un algoritmo, en forma de seudo código, que permita la representación de un Cono. Considere la entrada de valores por el teclado y los mensajes de error.

4. Desarrolle un algoritmo, en forma de seudo código, que permita la representación de una Esfera. Considere la entrada de valores por el teclado y los mensajes de error.

5. Proponga una secuencia de interfase usuario aplicación para una orden que permita la creación de cilindros y conos rectos, cilindros y conos inclinados, y conos truncados.

69

Capitulo 2: Posición relativa

Posición relativa entre entidades geométricas El estudio de las entidades geométricas primitivas planas y espaciales permite la construcción de sólidos simples. La obtención de modelos complejos requiere del empleo de formas entre las que se encuentran la Geometría Constructiva de Sólidos (GCS). La aplicación de esta forma requiere de tener los cuerpos simples y la realización de una operación algebraica booleana. El algebra booleana aplicada a cuerpos geométricos se fundamenta en la posición relativa que existe entre ambos. Se puede afirmar categóricamente que existe la unión, intersección o sustracción de cuerpos si hay penetración entre los mismos. Sin embargo, existirán casos particulares de posición relativa donde se pueda realizar una operación y las otras no. Luego, se hace necesario que existan funciones gráficas que permitan conocer la posición relativa entre los cuerpos. El estudio de las posiciones geométricas relativas se comenzará desde las entidades más simples. Los cuerpos geométricos poliédricos están constituidos en superficies, aristas y vértices. Los vértices son los puntos extremos de las aristas y las superficies están formadas por polígonos cuyos segmentos son las aristas. De esta forma queda la relación entre las entidades en estos cuerpos. Lo cual reafirma la necesidad de comenzar con el análisis de las entidades más simples.

Posición del punto con otras entidades Punto Un punto en relación con el mismo, solo puede clasificarse de dos formas: es idéntico o no lo es. Se dice que un punto es idéntico a otro si ocupa el mismo lugar que este, o sea, si las coordenadas x, y, z de ambos es la misma, o si la distancia entre ellos es igual a cero. Esto significa que para definir la posición entre dos puntos se pueden llevar a cabo dos procedimientos, uno que compare los valores de las coordenadas u otro que determine la distancia entre los puntos. ¿Cuál de los dos seleccionar? Las funciones gráficas deben hacer un uso eficiente del procesador para dar respuestas rápidas a otros procesos. El cálculo de la distancia (d) entre dos puntos, P1 (x1, y1, z1) y P2 (x2, y2, z2) situados en el espacio se realiza a través de la ecuación 65 que se muestra:

( ) ( ) ( )212

212

212 zzyyxxd −+−+−= (65)

70

El uso de esta ecuación requerirá de mayor uso del procesador que el proceso de comparación de los valores. Sin embargo, se puede hacer una pequeña simplificación lógica para el empleo de la ecuación utilizando poco los recursos computacionales. La ecuación 65 proporciona el valor de la distancia entre los puntos, sin embargo, para conocer si dos puntos son igual sólo se debe saber si es cero o no. Por tanto, se puede eliminar el radical de la ecuación planteando que si la diferencia de las coordenadas al cuadrado son cero entonces el punto P1 y P2 son iguales. Quedando entonces la ecuación:

( ) ( ) ( )212

212

212 zzyyxxd −+−+−≡ (66)

El empleo de la ecuación 66 sería más eficiente si la comparación se realiza con distinto de cero. La comparación con cero puede dar algunos problemas debido a la aproximación con que trabajan las computadoras, teniendo que recurrirse a un valor de tolerancia. La función gráfica que determinaría si un punto es igual a otro, utilizando la ecuación 66 se nombrará Posición Relativa entre dos Puntos Tridimensionales. Como el nombre es muy largo se utilizarán las siglas, teniendo PR2PT. A la función le entran dos puntos, saliendo Cero si ambos son iguales y Uno si son diferentes. Observe un ejemplo del seudo código de una función a través del algoritmo 7.

1 Nombre de la función: PR2PT 2 Entran: P1 y P2 del tipo punto tridimensional 3 Sale: 0, iguales y 1 diferentes 4 Calcular d = (x2 – x1)2 + (y2 – y1)2 + (z2 – z1)2 5 Si d ? 0 entonces sale 1 sino sale 0

Algoritmo 7: Seudo código de la función PR2PT

La función propuesta en una función bivalente por tal motivo se podría tomar como salida Verdadero o Falso, Si o No, etc. La utilización de enteros reduce la cantidad de bits utilizados, además será la forma empleada en la solución de todos los ejemplos en este epígrafe. En función de lo analizado en este epígrafe se les propone realizar los siguientes ejercicios. Ejercicio propuesto: 1. Realice el algoritmo en seudo código de una función que determine si dos

puntos son iguales aplicando la comparación de coordenadas. 2. Modifique el algoritmo 7 para puntos bidimensionales 3. Elabora una función, en forma de seudo código, que devuelva el valor de la

distancia entre dos puntos tridimensional.

71

4. Haga una función, en forma de seudo código, que devuelva el valor de la distancia entre dos puntos bidimensional.

Segmento de recta en el plano La situación relativa de un punto con respecto a un segmento de recta en el plano requiere de fijar el sentido del segmento. Se tomará como dirección del segmento el vector de P1 a P2. Luego, para establecer la clasificación se colocará un sistema de referencia en el punto P1, observando en la dirección de P2, obteniéndose que el punto P0 puede estar a la Derecha, Izquierda, Delante, Detrás o Contenido. La figura 45 muestra en línea discontinua el sentido del segmento de recta. La clasificaciones Detrás, Contenido y Delante parten de establecer que el punto P0 se encuentra contenido en la recta que define el segmento. Las otras dos clasificaciones establecen una distancia del punto P0 al segmento de recta. Por tanto, la distancia establecerá un punto de partida en la clasificación.

Figura 45: Clasificación de la posición del punto con respecto al segmento La distancia de un punto a un segmento de recta se establece en realidad a la recta que contiene el segmento. Por matemática se conoce que la ecuación general de una recta es: Ax + By + C = 0. Los términos A B C de esta ecuación cuando la recta está dada por dos puntos se obtienen:

A = Y2 – Y1 (67)

B = X1 – X2 (68)

C = X2 * Y1 – Y2 * X1 (69) La distancia d del punto estará dada por la expresión:

22

00

BA

CByAxd

+

++= (70)

El valor obtenido por la variable d puede ser cero, implicando que el punto está contenido en el segmento de recta o en la recta que lo contiene o diferente de cero

P2 P0

P1

Derecha

Izquierda Delante

Detrás Contenido

72

a una distancia de la recta. El resultado siempre será positivo debido a que se toma el valor absoluto del numerador. Sin embargo, si se elimina este valor modular se pueden obtener valores positivos y negativos implicando que: • d > 0, esta a la derecha del sentido de la recta de P 1 a P2 • d < 0, esta a la izquierda del sentido de la recta de P1 a P2 Observe que en la ecuación existe presencia de un denominador radical. El trabajo en la gráfica se establece en números reales por tal motivo como solución de la raíz se desprecia la parte imaginaria, si este resultado será siempre positivo la definición de valores positivos o negativos depende del numerador. Todo esto permite simplificar la expresión a emplear en la clasificación tomando un valor relativo a la distancia como sigue:

CByAxd 00 ++≡ (71) La expresión de la ecuación 71 se puede expandir al sustituir las expresiones que determinan los valores de A, B y C, obteniéndose:

( ) ( ) ( )1212021012 x* y- y * xy x-xxy - yd ++≡ (72) La figura 46 muestra un punto P0 a una distancia de la recta definida por los puntos P1 y P2 cuyo valor obtenido fue negativo lo que define la posición del punto a la Izquierda.

Figura 46: Posición de un punto a la izquierda del segmento

Si el valor obtenido por la ecuación 72 es cero entonces la ubicación del punto estará sobre la recta que define el segmento. Se considerará que el punto se encuentra Delante si está posterior al punto P2 y Detrás si el punto es anterior al punto P1. Si el punto P0 se encuentra entre el punto P1 y P2 incluso sobre ellos se dirá que el punto está Contenido. Observe la figura 47.

P2P0

P1Derecha

Izquierda

x

y

d

73

Figura 47: Clasificación del punto sobre la recta

La posición del punto P sobre la recta con relación al segmento P1P2 se puede establecer a través de la ecuación paramétrica:

P = P1 + t (P2 – P1) donde t ∈ [0, 1] (73) La ecuación paramétrica permite obtener un punto P entre P1 y P2 si se impone un valor a t entre 0 y 1. Por tanto, también puede proporcionar el valor de t para un punto dado según la expresión:

12

1

PPPP

t−

−= (74)

Si (0 = t = 1) implica que el punto P se encuentra Contenido en el segmento, si t > 1 entonces estará Delante y si t < 0 estará Detrás. La expresión 74 se puede descomponer en las coordenadas establecidas para el plano quedando:

12

1x xx

xxt

−−

= (75)

12

1y yy

yyt

−−

= (76)

Un punto que se encuentre sobre la recta que contiene el segmento cumple que tx = ty, por tanto para conocer el valor de t se puede utilizar cualquiera de estas expresiones, teniendo cuidado con la indeterminación del valor. Las ecuaciones poseen un denominador cuyo valor puede hacerse cero según la posición en que se encuentre el segmento de recta en le sistema de coordenadas. Por tanto, el cálculo de t tendrá una condicional, si (x2 = x1) se calcula ty sino tx.

P2

P0

P1

Delante

Detrás

Contenido x

y

74

Conociendo la clasificación del punto con respecto al segmento de recta en el plano y la forma matemática de determinarlo, dado los valores de P0 del punto en análisis y P1P2 del segmento, se propone realizar el siguiente ejemplo. Ejemplo: Realizar el algoritmo, en forma de seudo código, de una función que permita conocer la posición relativa de un punto respecto a un segmento bidimensional, en una aplicación gráfica. La función gráfica se nombrará Posición Relativa entre un Punto y un Segmento Bidimensional, como el nombre es muy largo se utilizarán las siglas, PRPSB. A la función le entran un punto P0 y los puntos extremos del segmento P1 y P2, saliendo cinco valores. La solución del ejemplo en seudo código se muestra a través del algoritmo 8.

1 Nombre de la función: PRPSB 2 Entran: P0 del tipo punto bidimensional 3 P1 y P2 del tipo punto bidimensional 4 Sale: 0 Derecha, 1 Izquierda, 2 Delante, 3 Detrás y 4 Contenido 5 Calcular d = (y 2 – y1) • x0 + (x1 – x2) • y0 + x2 • y1 - y2 • x1 6 Si d ? 0 entonces 7 Si d < 0 sale 1 sino sale 0 8 Sino 9 Si (x1 = x2) entonces 10 t = (y0 – y1) / (y2 – y1) 11 Sino 12 t = (x0 – x1) / (x2 – x1) 13 Si t > 1 entonces sale 2 14 Si t < 0 entonces sale 3 sino sale 4

Algoritmo 8: Seudo código de la función PRPSB

En el seudo código propuesto se ha colocado sale 0, sale 1, etc., haciendo referencia a la clasificación. Luego, implica que la función termina su ejecución ofreciendo un resultado. Observe que el segmento de recta no puede tener longitud cero por lo cual se recomienda, no construirlo, o sea, no hacer la estructura de un segmento sin longitud. Ejercicio propuesto: 1. Realice el algoritmo en seudo código de una función que determine si un punto

P0 pertenece a un segmento de recta P1P2. El resultado de la función debe ser bivalente.

2. Elabora una función, en forma de seudo código, que devuelva el valor de la distancia entre un punto P0 y un segmento de recta P1P2.

3. Modifique el algoritmo 8, agregando la clasificación de si el punto P0 es un extremo del segmento o no. Se puede nombrar Vértice.

75

Plano geométrico El plano es una entidad geométrica que divide al espacio en dos partes. Geométricamente el plano estará dado por tres puntos como mínimo, pero matemáticamente se puede expresar por un punto del plano R0 (x0, y0, z0) y el vector normal N (n1, n2, n3) al mismo cumpliendo con la expresión:

n1 (x – x0) + n2 (y – y0) + n3 (z – z0) = 0 (77) La ecuación refleja la distancia de un punto a un plano lo cual significa que cualquier punto P (x, y, z) al ser evaluado en la expresión, tiene como resultado cero implica que está sobre el plano. Observe la figura 48 donde se ha limitado el plano por un cuadrilátero.

Figura 48: Forma de expresar un plano

La expresión para determinar la distancia de un punto a un plano está dada por el valor modular de la ecuación 78, si se toma el valor real se obtendrán valores positivos y negativos, implicando que: • d > 0, el punto se encuentra en el sentido de la normal del plano • d < 0, el punto se encuentra en el sentido contrario a la normal del plano

d = n1 (x – x0) + n2 (y – y0) + n3 (z – z0) (78) La utilización de la ecuación implica que el plano siempre debe estar dado de forma matemática. La relación entre la forma geométrica del plano y la matemática es obtener el valor de la normal a partir de tres puntos. Se forman dos vectores V1 y V2 con los tres puntos P1, P2 y P3. El producto vectorial V1 x V2 obtiene como resultado la normal N al plano. Luego la definición matemática estará dada por la normal calculada y cualquiera de los tres puntos. Es muy usual solicitarle al usuario la entrada por el teclado de un plano dado por tres puntos, por tal motivo se hace imprescindible contar con una función que realice el proceso exp licado. El resultado, de la ecuación de la distancia, permite definir que un punto con respecto a un plano se clasifica en: Contenido en el plano, en Sentido de la normal o en Contra de la normal. El algoritmo 9 presenta una propuesta en seudo código

N

R0 P

76

de la función PRPP (Posición Relativa de un Punto a un Plano) que ofrece como resultado la ubicación de un punto en relación al plano.

1 Nombre de la función: PRPP 2 Entran: R0 punto del plano y N normal 3 P punto en análisis 4 Sale: 0 Contenido, 1 Sentido, 2 Contra 5 Calcular d = n1 • (x – x0) + n2 • (y – y0) + n3 • (z – z0) 6 Si d = 0 entonces sale 0 7 Sino Si d > 0 sale 1 sino sale 2

Algoritmo 9: Seudo código de la función PRPP

Ejercicio propuesto: 1. Realice el algoritmo en seudo código de una función que determine la normal

de un plano a partir de tres puntos. 2. Elabore una función que determine la posición relativa de un punto respecto a

un plano entrando tres puntos del plano y el punto de análisis. 3. Haga una función que devuelva si un punto pertenece a un plano. 4. ¿Qué ocurre si el valor del vector normal es (0, 0, 0)?. Segmento de recta en el espacio

Figura 49: Ubicación de un punto y un segmento en el espacio.

La posición relativa de un punto con respecto a un segmento de recta en el espacio no puede ser establecida igual que en el plano. Para el análisis de la clasificación se tomará un segmento de recta P1P2 y un punto P0, ambos ubicados en el octante positivo según muestra la figura 49. Se considerará que el punto estará Delate si se encuentra en cualquier lugar del medio espacio, que define un plano, cuya perpendicular sea el segmento de recta y no esté contenido. El plano para este caso pasará por el punto P2. Observe la figura 50 que describe geométricamente lo expresado. La formación del plano que pasa por el punto P2 y sea perpendicular al segmento de recta es tomando como R0 del plano al punto P2 y como normal N1 al vector dado por los puntos del segmento P1 y P2. Si el punto P0 con respecto a ese plano

P2

P0

P1y

z

x

77

se encuentra el sentido de la normal se dice que está delante del segmento, cualquier otro resultado no caracteriza la posición del punto.

Figura 50: Ubicación de un punto delante de un segmento en el espacio

De igual forma se puede establecer que un punto P0 estará Detrás del segmento de recta si ocurre lo mismo que en el caso anterior pero esta vez el plano debe pasar por el punto P1. Observe la figura 51.

Figura 51: Ubicación de un punto detrás de un segmento en el espacio

La formación del plano es tomando como R0 al valor de P1 y la normal N2 es igual a N1. Si el punto P0 con respecto a este plano está en contra de la normal se puede afirmar que el punto se encuentra detrás del segmento, cualquier otro resultado no caracteriza la posición del punto. Haciendo uso de recursos matemáticos y la relatividad de la posición entre dos entidades, se establecerá que un punto se encuentra debajo o arriba del segmento, tomando como referencia un plano que pasa por el segmento, cortando al plano XY. La figura 52 muestra la posición del punto respecto a un plano definido por R0 = P 1 y la normal N3.

P2 P0

P1

Delante

Detrás

N1

N2

y

z

x

P2

P0

P1

Delante

N1

y

z

x

78

Figura 52: Ubicación de un punto Arriba o Debajo del segmento

El vector de la normal N3 (n3x, n3y, n3z) es la proyección del vector z (0, 0, 1) sobre el plano formado por el punto P1 (x, y, z) y la normal N2 (n2x, n2y, n2z). De modo, que si la normal N2 es declarada como vector unitario la ecuación para definir a N3 sería:

N3 = z – (z • N2) N2 (79) En la ecuación, el vector z y N2 son unitarios pero su resultado no lo es, puesto que sería la proyección del vector z sobre el plano dado por P1, N2. Evaluando la ecuación 78, distancia de un punto al plano, para el plano P1, N3 se obtiene que si P0 está en el sentido de la normal N3 se encuentra Arriba, si está en contra estará situado Debajo, como se puede apreciar en la figura 52. El establecimiento de la posición del punto a la Derecha o a la Izquierda se hace a través de la colocación de un plano perpendicular a P1, N3, según se muestra en la figura 53.

Figura 53: Ubicación de un punto a la Derecha o Izquierda del segmento

P2P0

P1

Izquierda

Derecha

x

y

z

N3

N2

N4

P2

P0

P1

Arriba

Debajo

N3

x

y

z

N2

79

El cuarto plano estará formado por el punto R0 = P1 y la normal N4. El vector N4 se obtiene a través del producto vectorial (N2 x N3). La evaluación de la ecuación 78, distancia del punto al plano, con respecto al punto P0 y el cuarto plano impuesto tendría como resultado un valor positivo significaría que el punto se encuentra a la derecha, valor negativo sería a la izquierda y un valor igual a cero estaría en el plano. La clasificación obtenida hasta el momento sugiere que un punto con relación a un segmento de recta en el espacio se puede encontrar, Delante, Detrás, Arriba, Debajo, Derecha o Izquierda; según muestra la figura 54. Sin embargo se puede apreciar que un punto que se encuentre Arriba puede estar a la Derecha o la Izquierda, lo mismo que ocurre con los puntos que estén Debajo, surgiendo así cuatro denominaciones más: Arriba-Derecha, Arriba-Izquierda, Debajo-Derecha, Debajo-Izquierda.

Figura 54: Clasificación de un punto con relación aun segmento de recta en el espacio.

Un punto se encontrará Arriba del segmento si como resultado del análisis se obtiene que esté Arriba del plano III y Contenido en el plano IV. Se encontrará Debajo si está Debajo del plano III y Contenido en el plano IV. Continuando con el mismo análisis, se dirá que se encuentra a la Derecha y a la Izquierda si para plano III en punto se evalúa como Contenido. La última clasificación del punto es que el punto se encuentre sobre el segmento de recta lo cual quiere decir que está Contenido. Este resultado se obtiene cuando para los planos III y IV el punto está Contenido. En resumen, un punto con relación a un segmento en el espacio puede ocupar once posiciones relativas: Delante, Detrás, Arriba, Debajo, Derecha, Izquierda, Arriba-Derecha, Arriba-Izquierda, Debajo-Derecha, Debajo-Izquierda y Contenido.

P2 P0

P1

Izquierda

Derecha

x

y

z

Delante

Detrás

Arriba

Debajo

I

II

III

IV Contenido

80

Las cuales, están determinadas por la construcción abstracta de cuatro planos a partir de los puntos extremos del segmento de recta y el vector unitario del eje z del sistema de coordenadas global. El algoritmo 10 presenta una propuesta, en seudo código, de la función PRPST (Posición Relativa entre un Punto y un Segmento Tridimensional) que ofrece como resultado once salidas.

1 Nombre de la función: PRPST 2 Entran: P punto de análisis 3 P1 y P2 extremos del segmento 4 Sale: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 5 Calculo de N1 6 Calcular d1 = n1x • (x – x2) + n1y • (y – y2) + n1z • (z – z2) 7 Si d1 > 0 entonces sale 0 8 Calcular d2 = n1x • (x – x1) + n1y • (y – y1) + n1z • (z – z1) 9 Si d2 < 0 entonces sale 1 10 Calcular N3 = z – (z • N1) N1 11 N4 = N1 x N3 12 d3 = n3x • (x – x1) + n3y • (y – y1) + n3z • (z – z1) 13 d4 = n4x • (x – x1) + n4y • (y – y1) + n4z • (z – z1) 14 Si (d3 > 0 y d4 = 0) entonces sale 2 15 Si (d3 < 0 y d4 = 0) entonces sale 3 16 Si (d4 > 0 y d3 = 0) entonces sale 4 17 Si (d4 < 0 y d3 = 0) entonces sale 5 18 Si (d3 > 0 y d4 > 0) entonces sale 6 19 Si (d3 > 0 y d4 < 0) entonces sale 7 20 Si (d3 < 0 y d4 > 0) entonces sale 8 21 Si (d3 < 0 y d4 < 0) entonces sale 9 sino sale 10

Algoritmo 10: Seudo código de la función PRPST

La conjunción y utilizadas en las líneas de la 14 a la 21, en las instrucciones de selección, se refieren al AND de una operación lógica. Recordar que cuando se coloca la palabra sale seguida del número implica la ruptura en el proceso de ejecución de la función tomado el valor. Observe que no se realizó el cálculo de N2 debido a que N2 = N1. Se realiza el cálculo de d1 analizando su valor para no continuar calculando en caso de ser cierto, lo mismo ocurre con d2. La solución presentada no está completa debido a que se ha tomado un segmento cualquiera que no esté Contenido en los planos de proyección. Por tanto, se debe completar el algoritmo antes de su implementación para que los errores en el proceso de compilación y puesta a punto de a función sean los menos posibles.

81

Ejercicio propuesto: 1. Modifique el algoritmo 10 para que pueda ser utilizado por cualquier segmento

de recta de longitud diferente de cero. 2. Realice el algoritmo en seudo código de una función que determine si un punto

pertenece a un segmento tridimensional. El resultado es bivalente, pertenece o no.

3. ¿Qué ocurre si una o dos de las componentes del vector normal N1 es cero? 4. Realice un algoritmo en forma de seudo código que permita conocer si un

punto pertenece a un arco de circunferencia o de elipse. Polígono El polígono como entidad geométrica plana puede estar en cualquier lugar del espacio. Por tanto la clasificación de un punto con respecto a este sería igual que con respecto a un plano. Luego, la clasificación que se estudiará será la posición del punto respecto a un polígono que está Contenido en el plano. La posición relativa de un punto con respecto a un polígono convexo se muestra en la figura 55. El polígono convexo puede ser regular o irregular.

Figura 55: Clasificación del punto con relación a un polígono convexo.

La posición que representa el punto P1 es Dentro del polígono A, P2 y P3 están Fuera, y P0, P4 se encuentran en el Contorno. Precisando aún más la clasificación el punto P4 se encuentra en un Vértice del polígono A y el punto P0 está en la Arista. Se puede conocer si los puntos P0 y P4 están en el Contorno del polígono aplicando el Algoritmo 8, y realizando algunas modificaciones al mismo se tendría si es un Vértice o no. Para determinar si un punto se encuentra Dentro o Fuera existen varias formas, observe alguna de ellas. Primera: Un punto está Fuera de un polígono convexo positivo, si se encuentra a la derecha de al menos uno de los segmentos que lo forman. Observe la figura 56.

P0

P1

P2

P3

P4

A

82

Figura 56: Modelo geométrico para la primera solución.

Estableciendo un recorrido por todos los segmentos del polígono A se puede determinar la posición del punto respecto a la recta que lo contiene. Si la distancia del punto a la recta es positiva entonces el punto estará Fuera. De igual forma, se puede aplicar el algoritmo 8 determinando la posición a la Derecha que implica para el polígono que está Fuera. Segundo: Construyendo vectores desde el punto de análisis P0 hasta los vértices del polígono A, se puede decir que el punto está Dentro si la suma de los ángulos entre vectores consecutivos es de 360 grados. Observe la figura 57.

Figura 57: Modelo geométrico para la segunda solución.

Figura 58: Posición relativa de un punto con respecto a un polígono

P0

P1

P2

P3

P4

A

A P0

P0

P1P2

A

83

Algunos autores plantean que el punto P0 se encuentra dentro del polígono A, si el área formada por los triángulos de los vectores consecutivos es igual al área del polígono. La posición relativa de un punto Pi con respecto a un polígono A convexo o no, se muestra en la figura 58. La clasificación sigue siendo la misma descrita con anterioridad, lo que cambia es el postulado. Se dice que un punto Pi está dentro del polígono A si la semirrecta que contiene al punto, corta al mismo un número impar de veces. Si el resultado de los corte es un número par entonces el punto está fuera. La solución planteada implica el estudio de la posición relativa entre segmentos de rectas, por lo cual se sugiere su estudio antes de continuar con este análisis. El primer aspecto a considerar es como trazar una semirrecta que contenga a los puntos. La semirrecta se trazará a partir del punto en dirección al eje x. se hace evidente que no se puede representar en un espacio finito, por tal motivo se toma el mayor valor de la coordenada x del conjunto de puntos que define el polígono adicionándole un incremento. Luego, se cambia la semirrecta por un segmento cuyo extremo derecho queda definido por (Ax max + Incremento, Piy). Observe la figura 59.

Figura 59: determinación del punto extremo del segmento

Los segmentos generados son analizados con los segmentos del polígono, determinando y contabilizando las intersecciones. No siempre los segmentos obtenidos permiten asegurar el postulado que dio origen a esta solución a los mismo se le denominan degenerados. Un ejemplo de un segmento degenerado se puede apreciar en la figura 60.

P1

P2

P3

A1

A0

A2A3

A4 A5

A6

A7

A8

A9

Ax max Inc PFx

x

y

84

Figura 60: Segmento degenerado

Los puntos P0 y P1 pasarían por el mismo segmento de recta. Contando una sola vez las intersecciones que pasan por los vértices se tiene como resultado que el P1 posee tres intersecciones, clasificándose como Dentro del polígono lo cual no es real. Se define como segmento degenerado aquel que contiene un vértice del polígono. Para evitar la formación de segmentos degenerados, se puede variar la coordenada y de PF en el valor de un incremento, de continuar siendo degenerado se sigue incrementado hasta que no lo sea. Sólo así, puede ser tomado el segmento de análisis como válido para determinar la cantidad de intersecciones. El algoritmo 11 presenta una propuesta, en seudo código, de la función PRPPB (Posición Relativa de un Punto y un Polígono Bidimensional) que ofrece como resultado las cuatro salidas previstas en la clasificación.

1 Nombre de la función: PRPPB 2 Entran: P punto de análisis 3 POL entidad del tipo polígono 4 Sale: 0 Vértice, 1 Arista, 2 Dentro, 3 Fuera 5 Si P es un vértice de POL entonces sale 0 6 Si P está contenido en un segmento de POL entonces sale 1 7 Calcular PF 8 Hacer 9 Desde primer vértice hasta el último de POL hacer 10 Si vértice de POL pertenece al segmento P PF entonces 11 Varia el valor de PF 12 Continua 13 Sino 14 No Continua 15 Mientras Continua 16 Desde primer segmento hasta el último de POL hacer 17 Si P PF intercepta a segmento de POL entonces 18 Contador +1 19 Si Contador es impar entonces sale 2 sino sale 3

Algoritmo 11: Seudo código de la función PRPPB

P0 P1 P1

A0

A1 A2 A3

A4

A5 A6

A7 A0

A1 A3

A4

A5 A6

P0 PF PF

85

Figura 61: Rectángulo que encierra al polígono

El algoritmo presentado analiza cualquier punto aunque este se encuentre muy lejos del polígono, lo cual provoca un malgasto de tiempo de procesamiento y cálculo. Por tanto, se puede agregar a la función que sólo analice puntos que se encuentren en el rectángulo que encierra al polígono, según muestra la figura 61. El punto P para que sea analizado debe cumplir que:

(AXmin < Px < Asmas) y (AYmin < Py < AYmax) (80) Ejercicio propuesto: 1. Modifique el algoritmo 11 incluyendo el aspecto del punto dentro del rectángulo

que encierra el polígono. 2. Realice el algoritmo en seudo código de una función que determine si un punto

pertenece a un polígono. El resultado es bivalente, pertenece o no. 3. Haga una función que determine la posición de un punto con respecto a un

polígono convexo. 4. Elabore un algoritmo, en seudo código, de una función que determine la

posición relativa de un punto respecto a un círculo y una elipse. 5. Confeccione un algoritmo, en forma de seudo código, de una función que

determine si un punto pertenece a una curva Hermite. 6. Realice un algoritmo que determine la situación relativa de un punto respecto a

un polígono en el espacio, en forma de seudo código. Cuerpo prismático La situación relativa entre un punto y un cuerpo sea prismático o no se puede definir como: Fuera, Dentro o en el Contorno. La subdivisión del contorno depende del tipo de cuerpo que se trate. La figura 62, muestra un cuerpo prismático C, y tres punto P1, P2 y P3 que se encuentran según la clasificación establecida. Un cuerpo prismático puede estar formado por polígonos convexos o no. En el caso de cuerpos prismáticos convexos es fácil dete rminar la posición del punto ya que si en punto se encuentra en el lado negativo del polígono en el espacio,

A1

A0

A2A3

A4A5

A6

A7

A8

A9

AXmin

x

y

AXmax

AYmin

AYmax

86

significa que el punto está dentro. Si al menos para un polígono, se obtiene que el punto está en igual sentido que la normal implicará que el punto está fuera.

Figura 62: Clasificación de un punto respecto a un cuerpo prismático

Un cuerpo prismático formado por polígonos no convexo se puede apreciar en la figura 63. Se dice que un punto P2 se encuentra dentro del cuerpo su una semirrecta que sale del punto intercepta un número impar de veces los polígonos que forman sus superficies.

Figura 63: Cuerpo prismático con superficie no convexa

La solución planteada implica el estudio de la posición relativa entre un segmento de recta y un plano en el espacio, por lo cual se sugiere su estudio antes de continuar con este análisis. La semirrecta es cambiada por un segmento que tiene en consideración el punto más lejano del cuerpo más un incremento en todos los valores de las coordenadas garantizando así que el punto final (PF) se encuentre lejos del cuerpo. se puede un segmento de recta paralelo al eje x que sobre salga del cuerpo, teniendo por coordenadas (CXmax + Inc, Py, Pz).

C5 C6

C7

C8C9

C0 C4

C3 C2

C1

P1P2

P3

C5 C6

C7

C8

C9

C0 C4

C3

C2

C1

P1

P2

P3

87

Figura 64: Representación de un segmento paralelo al eje x

Un segmento construido se degenera si un vértice del cuerpo está contenido en el segmento o si se intercepta con una arista del cuerpo. Se puede cambiar la dirección del segmento incrementando los valores de PFy o PFz. La realización de una función que determine la posición de un punto con respecto a un cuerpo prismático se asemeja al algoritmo 11 desarrollado. Por este motivo, se elaborará a modo de ejemplo un algoritmo que determine si un punto pertenece a un cuerpo. Ejemplo: Elaborar una función que determine si un punto pertenece a un cuerpo prismático. Se dice que un punto pertenece a un cuerpo prismático si está Dentro o Contenido, o sea, si está Fuera del cuerpo se dice que no pertenece. Esta función podría llamar internamente a la función que clasifica el punto y decir que si está fuera, entonces no pertenece. El algoritmo 12 presenta una función nombrada PPCP siglas de Pertenencia de un Punto a un Cuerpo Prismático.

1 Nombre de la función: PPCP 2 Entran: P punto de análisis 3 CP entidad del tipo cuerpo prismático 4 Sale: 0 No Pertenece, 1 Pertenece 5 Calcular Vmin y Vmax 6 Si (Vzmin – Pz) > 0 entonces sale 0 7 Si (Vxmin – Px) > 0 entonces sale 0 8 Si (Vymin – Py) > 0 entonces sale 0 9 Si (Px – Vxmax) > 0 entonces sale 0 10 Si (Py – Vymax) > 0 entonces sale 0 11 Si (Pz – Vzmax) > 0 entonces sale 0 12 Si P es un vértice de CP entonces sale 1 13 Si P esta contenido en una arista de CP entonces sale 1 14 Calcular PF

C5 C6

C7

C8

C9

C0 C4

C3

C2C1

P1 PF

x

y

z

88

15 Hacer 16 Desde primer vértice hasta el último de CP hacer 17 Si vértice de CP pertenece al segmento P PF entonces 18 Varia el valor de PF 19 Continua 20 Sino 21 Desde primera arista hasta la última de CP hacer 22 Si arista de CP intercepta al segmento P PF entonces 23 Varia el valor de PF 24 Continua 25 Sino 26 No continua 27 Mientras Continua 28 Desde la primera superficie hasta la última de CP hacer 29 Si P PF intercepta a superficie de CP entonces 30 Contador +1 31 Si Contador es par entonces sale 0 sino sale 1

Algoritmo 12: Seudo código de la función PPCP

En la línea número 5 del algoritmo se calculan los valores del vértice mínimo (Vmin) y el vértice máximo (Vmax) correspondientes con las diagonales de prisma de base rectangular que encierra el cuerpo. Las seis líneas siguientes determinan si el punto se encuentra fuera del prisma rectangular lo cual garantiza que un punto alejado no requiera de cálculos adicionales o llamadas a otras funciones. Las ecuaciones son obtenidas a partir de evaluar la distancia del punto a los planos por la ecuación 78. La figura 65 muestra la ubicación de los puntos Vmax y Vmin así como los valores de las normales en cada uno de los seis planos.

Figura 65: Prisma de base rectangular que encierra el cuerpo prismático

Vmin Vmax

x

y

z

(0, 1, 0)

(0, 0, 1)

(1, 0, 0)

(−1, 0, 0)

(0, 0, −1)

(0, −1, 0)

89

Ejercicio propuesto: 1. Realice un algoritmo, en seudo código, de una función que determine la

posición relativa de un punto respecto a un cuerpo prismático convexo. 2. Elabore el algoritmo, de una función que determine la posición relativa de un

punto respecto a un cuerpo prismático no convexo, en seudo código. 3. Confeccione un algoritmo, para una función que determine la posición relativa

de un punto respecto a un Cubo, en seudo código. Cuerpo geométrico De los cuerpos geométricos estudiados veremos lo que ocurre con la determinación de la posición relativa entre el punto y el Cilindro, Cono y Esfera. Un punto con respecto a estos cuerpos puede estar, Fuera, Dentro o en el Contorno. Los datos constructivos que se tienen de los cuerpos se observan en la figura 66, con ellos se trabajará para obtener la posición del punto.

Figura 66: Cuerpos geométricos

Los datos de entrada que presenta un cilindro permiten determinar el punto de la tapa superior (PS) en función del punto de inserción (PI) y la altura (a). La figura 67B muestra una proyección del cilindro de la figura 67A.

Figura 67: Cuerpo geométrico cilíndrico

La figura 67B permite observar que puede ser dirigido un vector desde PI hasta PS al cual se le denominará IS. El vector calculado será la normal del plano

PI

ar

P

P P

P

P P

PI (x, y, z)

PS (x, y, z + a)

a) b)

a) b)

PI

PI PI

a

a

r r

r

c)

90

saliendo de la superficie superior del cilindro, el cual se define como el punto PS y la normal IS, según se puede observar en la figura 68A.

Figura 68: Características del plano superior e inferior de un cilindro

La determinación del vector IS también puede hacerse a través del conocimiento de tres puntos del plano al cual pertenece el círculo de la base. No obstante , para los fines educacionales, suponga que el cilindro fue desarrollado en la dirección del eje z, por lo cual el vector normal sería (0, 0, 1), según muestra la figura 68. Como el plano inferior u superior del cilindro son paralelos se puede utilizar la misma normal para caracterizar la superficie inferior, quedando definida matemáticamente como el punto PI y la normal IS, según se observa en la figura 68B. En la figura 68 se puede apreciar que cualquier punto que se encuentre a favor de la normal para el plano PS, IS y en contra de la normal para el plano PI, IS está Fuera del cilindro. Un punto que en su análisis se obtenga Contenido en plano no puede saberse si pertenece al cilindro continuándose con su análisis. Los puntos de la superficie lateral del cilindro equidistan a una distancia (r) del eje del cilindro formado por el segmento PI y PS. Por tanto, el próximo paso es determinar la distancia que existe entre la recta que contiene el segmento PI PS y el punto que se esté analizando. Si la distancia es mayor que el radio, como ocurre con el punto P1 figura 68B, se encuentra Fuera; Si por el contrario la distancia es menor que el radio el punto está Dentro, como ocurre con P2 sino el punto estará en el Contorno. Pero cuidado, los puntos que se encuentran en la superficie superior e inferior siempre que la distancia sea menor o igual al radio estarán en el Contorno. Los aspectos discutidos permiten la realización de un algoritmo que obtenga la posición relativa de un punto con respecto al cilindro. Ejercicio que se propone su desarrollo. Las características geométricas de un cono son similares a la de un cilindro. Se puede observar, en la figura 69A, las posiciones que puede ocupar un punto con respecto al cono clasificándose en Fuera, Dentro y en el Contorno. Se utilizara un cono recto al plano XY para facilitar la explicación.

P

P P

2

IS (0, 0, 1)

a) b)

P

P P

2

IS (0, 0, 1)

PS

PI

91

Figura 69: Cuerpo geométrico cónico

A partir de los datos de entrada pueden ser determinados el punto PS y el vector IS, al igual que se hizo cuando se analizó el cilindro. Además se puede establecer los planos que limitan la base y la altura, clasificando los puntos como Fuera, si la distancia, del punto al plano, obtenida en positiva para el plano PS, IS y negativa para el plano PI, IS. Si el punto se encuentra sobre los planos, en el caso del superior la distancia del punto P i a PS debe ser cero de lo contrario estará Fuera; debe analizarse la distancia del punto al segmento de recta PI PS. La variación del radio en el cono permite el análisis de la proyección como un triangulo. La utilización de un triangulo recto permite además aplicar la simetría en la proyección. En la figura 70 se observa el triangulo A PS PI correspondiente a la proyección del medio triangulo.

Figura 70: Proyección del medio triangulo del cono

En cualquier situación geométrica se puede determinar el vector PIP que une el punto PI con el punto P de análisis. Este vector tendría una componente PH sobre el plano de finido del cuerpo geométrico que se calcula según la ecuación 81, donde NIS es el vector unitario en la dirección de IS:

PH = PIP – (PIP • NIS) N IS (81)

P

PI

PS

rp

APH

PV

B

r

K

IS

a) b)

PI

a

r PI

a

PS

P2

P3

P1

P3

P1

P2

92

El valor modular de |PH| permite de forma rápida decidir si el punto se encuentra fuera en la medida que sea mayor que el radio. En caso contrario se debe calcular la proyección PV del vector PIP. La magnitud escalar de la proyección PV del vector PIP sobre la dirección de IS, se obtienen a través de la ecuación 82, descrita a seguir:

|PV| = PIP • NIS (82) Esta proyección determina la intersección con la hipotenusa en el punto B surgiendo un triangulo B PS PV semejante al triangulo A PS PI. Según la regla de los senos se establece que:

Krp

ISr = (83)

Donde |IS| y |K| son los valores modulares de los vectores definidos. Además se puede apreciar que existe una relación entre el vector K e IS de manera que el valor del radio (rp) correspondiente al punto P se obtiene por la expresión:

( )IS

PVISrrp

−= (84)

Al comparar el resultado de rp con el valor modular de |PH| se puede clasificar el punto P que se ha estado analizando, como: • Si rp < |PH| entonces el punto esta Fuera • Si rp = |PH| entonces el punto esta en el Contorno • Si rp > |PH| entonces el punto esta Dentro Los aspectos discutidos permiten la realización de un algoritmo que obtenga la posición relativa de un punto con respecto al cilindro y a una esfera. Ejercicios que se proponen su desarrollo. Ejercicio propuesto: 1. Elabore un algoritmo, en seudo código, de una función que determine la

posición relativa de un punto respecto a un cilindro. a) Suponga un cilindro recto ubicado sobre el plano XY. b) Cilindro recto en cualquier lugar del espacio. c) Suponga un cilindro oblicuo. d) Cilindro recto con base elíptica.

2. Elabore un algoritmo, en seudo código, de una función que determine la posición relativa de un punto respecto a un cono. a) Suponga un cono recto ubicado sobre el plano XY b) Cono recto en cualquier lugar del espacio. c) Cono recto con base elíptica.

93

3. Elabore un algoritmo, en seudo código, de una función que determine la posición relativa de un punto respecto a una esfera.

Posición del Segmento de Recta con otras entidades La posición del segmento con respecto al punto fue analizada en el epígrafe anterior por consiguiente y a partir de aquí, cada vez que se comience con el estudio de una entidad se analizara la posición relativa consigo misma. Segmento de recta Los segmentos de rectas son partes de rectas que pueden estar clasificadas de diferentes formas según el espacio geométrico definido. Las rectas en el espacio pueden ser Paralelas, Perpendiculares, que se Cortan o se Cruzan. En las matemáticas se ofrecen las definiciones de cada posición. El estudio de la relación del segmento de recta consigo misma se realizará en el plano lo cual elimina el un grado de complejidad. Las rectas, en el plano, pueden ser Paralelas y No paralelas. Dentro de las No paralelas se toma el caso especial de las Perpendiculares. La situación relativa entre segmentos de rectas en el plano se clasifica igual que las rectas, según se observa en la figura 71.

Figura 71: Posición relativa entre segmentos de rectas en el plano

La figura 71A muestra segmentos de rectas Paralelos entre si, la figura 71B segmentos de rectas que No son paralelos y la 71C segmentos que se encentran Perpendiculares. Los segmentos de rectas paralelos entre si tienen la misma pendiente, o sea, si m1 es la pendiente del segmento P 1P2 y m2 es la pendiente del segmento P3P4, se estable:

m1 = m2 (85) Cuando los segmentos están dispuestos de forma perpendicular se cumple que:

a) b) c)

P1

P2

P3

P4

P1

P2P3

P4

P1

P2

P3

P4

94

m1

m2

1 −= (86)

Si no se cumple con ninguna de estas condiciones se dice que los segmentos de recta estas dispuestos de forma No paralela. De las tres clasificaciones se pueden demostrar dos lo cual es una condición suficiente para establecerlas. La pendiente de una recta se puede obtener por la expresión:

12

121 xx

yym

−−

= (87)

La ecuación 87 se indefine cuando x1 = x2 lo que ocurre cundo la recta es paralela al eje de coordenadas y. Por tanto, se debe buscar una expresión que no se indefina y permita bajo cualquier circunstancia la clasificación de los segmentos de rectas. Sustituyendo los valores de la pendiente por la relación entre coordenadas en la ecuación 85, se tiene que:

34

34

12

12

xxyy

xxyy

−−

=−−

(88)

Realizando las transformaciones necesarias nos queda la siguiente expresión:

(y2 – y1) * (x4 – x3) – (y4 – y3) * (x2 – x1) = 0 (89) De igual forma a partir de la ecuación 86 se puede obtener la expresión:

(y2 – y1) * (y4 – y3) + (x4 – x3) * (x2 – x1) = 0 (90) Conociendo las relaciones matemáticas que permiten clasificar los segmentos de rectas se presenta el algoritmo 13 con la función PRSSB (Posición Relativa entre Segmentos Bidimensional):

1 Nombre de la función: PRSSB 2 Entran: P1 y P2 puntos extremos del segmento S1 3 P3 y P4 puntos extremos del segmento S2 4 Sale: 0 Paralelos, 1 No Paralelos, 2 Perpendiculares 5 Si ((y2 – y1) • (x4 – x3) – (y4 – y3) • (x2 – x1) = 0) entonces sale 0 6 Si ((y2 – y1) • (y4 – y3) + (x4 – x3) • (x2 – x1) = 0) entonces Sale 2

7 Sino 8 Sale 1

Algoritmo 13: Seudo código de la función PRSSB

95

El trabajo con la construcción geométrica de sólidos necesita del conocimiento de los niveles de clasificación de los segmentos de recta. Por tanto, observe la figura 72 donde se muestra la clasificación de los segmentos paralelos

Figura 72: Clasificación de los segmentos paralelos

La figura 72A muestra segmentos No Colineales y la 72B segmentos Colineales. Por definición, los segmentos Colineales son aquellos que pertenecen a la misma recta. Luego la distancia de un extremo del segmento al otro es igual a cero. Por tanto en correspondencia con la ecuación 72, la distancia relativa entre el punto y el segmento se expresa como:

( ) ( ) ( )1212321312 x* y- y * xy x-xxy - y3d ++≡ (91) Se ha definido la ecuación 91 como d3 debido que es la distancia del punto P3 al segmento P1P2. Por consiguiente, si dos segmentos de rectas poseen la misma pendiente y el valor de d3 es igual a cero se puede decir que son Colineales sino lo contrario. Los segmentos de rectas Colineales se pueden clasificar, a su vez, en Separadas Superpuestas y Contenidas, según se observa en la figura 73A, 73B y 73C, respectivamente.

Figura 73: Clasificación de los segmentos de rectas Colineales

La clasificación, de los segmentos de rectas Colineales, se resuelve a través de la ecuación paramétrica, tomando referencia el segmento de recta P1P2. La existencia de dos entidades hace que se desdoble cada una de estas clasificaciones. Por ejemplo, al tomar el segmento de recta P1P2 como referencia se puede precisar si el segmento P3P4 está Separado ubicado delante o detrás. En el caso de las Superpuestas pueden existir cuatro formas, P2 sobre P3, P2 sobre

a) b)

P2 P3

P4

P1

P2

P3 P4

P1

c)

P2

P3

P4

P1

a) b)

P2

P3 P4

P1

P2

P3 P4

P1

96

P4, P1 sobre P3 y P1 sobre P4; y las Contenidas pueden ser P1P2 Contenido en P3P4 o como aparece en la figura 73C, P3P4 Contenido en P1P2. No obstante, todo este desdoble en la clasificación sólo se explicará la obtención de algunas. Con la ecuación paramétrica, tomando como referencia los puntos P1 P2, se calcula el valor del parámetro t para el punto P3 y P4. El parámetro t se calcula a través de una de las expresiones siguientes:

12

1x xx

xxt

−−

= 12

1y yy

yyt

−−

= (92)

Si x1 = x2 se calculará ty sino tx, para los puntos P3 y P4, por tanto, se estará calculando t3 y t4. La secuencia del cálculo de los parámetros se muestra en el algoritmo 14. el establecimiento de la clasificación es a partir de que t1 = 0 y t2 = 1, de ahí que en el calculo de t3 y t4 se empleen las coordenadas de esos puntos como los de inicio y final.

Si (x1 = x2) entonces t3 = (y3 – y1) / (y2 – y1) t4 = (y4 – y1) / (y2 – y1)

Sino t3 = (x3 – x1) / (x2 – x1) t4 = (x4 – x1) / (x2 – x1)

Algoritmo 14: Secuencia para el cálculo de parámetros t3 y t4

Con diferentes operaciones lógicas con los valores de t3 y t4 se pueden obtener las clasificaciones, observe alguna de ellas: • Si (t3 > 1 y t4 > 1) entonces están Separados y P3P4 está delate de P1P2. • Si (t3 < 0 y t4 < 0) entonces están Separados y P3P4 está detrás de P1P2. • Si ((0 = t3 y t3 = 1) y (0 = t4 y t4 = 1)) entonces P 3P4 está Contenido en P1P2. • Si ((t3 = 0 y t4 = 1) o (t4 = 0 y t3 = 1)) entonces P 1P2 está Contenido en P3P4. Además se pueden clasificar de esta forma, si los segmentos colineales están en el mismo sentido. Sepa usted que, segmentos en igual sentido que se encuentren Superpuestos o Contenido se pueden Unir y determinar la Intersección. La Diferencia sólo se puede aplicar a segmentos que estén en sentido contrario. Por ejemplo, los segmento P1P2 y P3P4 de la figura 73B se pueden Unir obteniéndose un segmento P1P4, o sea, desaparece una estructura de segmentos de la lista de entidades quedando sólo una formada por los puntos P1 y P4 sin cambiar los valores de sus coordenadas. Los segmentos de rectas No Paralelos se pueden clasificar en se Cortan, No se Cortan y se Cortan Aparentemente según se observa en la figura 74A, 74B y 74C, respectivamente.

97

Figura 74: Clasificación de los segmentos No Paralelos

Se dice que dos segmentos se cortan si tienen un punto de contacto aunque este punto sean los extremos. Dos segmentos se Cortan Aparentemente si cuando extendemos uno de ellos se corta con el otro, por tanto, el segmento P1P2, de la figura 74C, Corta Aparentemente a P3P4, no viceversa. Dos segmentos de recta no se cortan si para determinar la intersección se hace necesario extender a ambos. Para establecer la clasificación es necesario calcular los valores relativos de las distancias de los extremos de un segmento con respecto a otro por las ecuaciones:

d1 ≅ (y4 – y3) x1 + (x3 – x4) y1 + (x4 * y3 – y4 * x3) (93)

d2 ≅ (y4 – y3) x2 + (x3 – x4) y2 + (x4 * y3 – y4 * x3) (94)

d3 ≅ (y2 – y1) x3 + (x1 – x2) y3 + (x2 * y1 – y2 * x1) (95)

d4 ≅ (y2 – y1) x4 + (x1 – x2) y4 + (x2 * y1 – y2 * x1) (96) Donde:

d1 es el valor relativo a la distancia del punto P1 al segmento P3P4 d2 es el valor relativo a la distancia del punto P2 al segmento P3P4 d3 es el valor relativo a la distancia del punto P3 al segmento P1P2 d4 es el valor relativo a la distancia del punto P4 al segmento P1P2

Tomándose en consideración los resultados que se establecen entre las variables d1, d2, d3 y d4 se pueden establecer las clasificaciones entre segmentos de rectas. Se puede afirmar que dos segmentos de rectas se cortan si (d1 * d2) = 0 y (d3 * d4) = 0. Esto significa que el punto P1 se encuentra al lado contrario que P2 con respecto al segmento de recta P3P4. Si uno de ellos se encuentra sobre el segmento la distancia sería cero, por lo que el producto se toma menor o igual. El mismo análisis se realizaría para los puntos P3 y P4 con respecto al segmento de recta P1P2. Dos segmentos de rectas no se cortan si (d1 * d2) > 0 y (d3 * d4) > 0. La figura 74B muestra que en esta situación los puntos se encuentran a ambos lados del segmento que se analiza por lo que siempre serán positivos o negativos

P2 P3

P4 P1

P1

P2

P3 P4

P1

P2

P3

P4

a) b) c)

98

ambos valores dando como resultado que no se cortan. Una situación que no corresponda con las dos anteriores equivale a que los segmentos de rectas se corten aparentemente. La determinación de saber que segmento corta aparentemente a otro parte de si (d3 * d4) = 0 entonces P1P2 corte aparentemente a P3P4 sino, lo contrario. La clasificación de los segmentos de rectas perpendiculares se establece de igual forma que para los segmentos No Paralelos. La figura 75, muestra tres niveles en la clasificación de los segmentos de rectas expuestos en este epígrafe. La situación relativa entre segmentos de rectas permite la creación de herramientas de edición, las cuales son necesarias en toda aplicación gráfica. La primera de las herramientas que se analizara se fundamenta en que las rectas que se cortan pueden formar hasta cuatro nuevos segmentos.

Figura 75: Resumen de clasificación de segmentos de rectas

Figura 76: Intersección entre segmentos de rectas

Los segmentos de rectas P1P2 y P3P4 mostrados en la figura 76, se interceptan en el punto PI, el conocimiento de las coordenadas de este punto puede permitir que se generen cuatro segmentos: P1PI, P IP2, P3PI y P IP4. También se podría tomar la decisión de acortar la longitud del segmento P1P2 hasta su intersección con el

P1

P2 P3

P4

PI

Paralelas

No Paralelas

Perpendiculares

Colineales

No Colineales

Separadas

Superpuestas

Contenidas

Cortan

No se Cortan

Cortan Aparentemente

99

segmento P3P4. En tal caso se mantienen dos segmentos de rectas, donde el valor de P2 se cambia por el de P I, observe la figura 77.

Figura 77: Segmento de recta recortado

La transformación sufrida en la estructura de datos del segmento P1P2 es en los valores de las coordenadas del punto final P2. La observación de las figuras 76 y 77 permite asegurar que se ha recortado el segmento de recta P1P2 hasta donde se interceptó con el segmento P3P4, por ello, la herramienta de edición debe llevar el nombre de Recortar. La herramienta propuesta, Recortar, supone la selección de dos segmentos de rectas, el primero es hasta donde se recortara el segmento, en el ejemplo P3P4, y la segunda selección es sobre el segmento que será recortado. El proceso de selección de entidades geométricas se explica en el epígrafe correspondiente a la situación relativa de un polígono con las entidades, si no se encuentra familiarizado con este contenido, estúdielo antes de continuar. El proceso explicado con dos segmentos de rectas se puede extrapolar con otras entidades, el requisito imprescindible para que se pueda recortar una entidad es que se intercepte con la otra. No obstante, este comentario, se continuará la explicación con los segmentos de rectas para la mejor comprensión de la herramienta presentada. Después de la selección, se realiza el cálc ulo del punto de intersección si los segmentos se cortan, o sea, la condición necesaria para que la herramienta pueda funcionar es que los segmentos se corten. Cuando los segmentos se encuentren en una situación no correspondiente con el corte, se debe avisar al usuario esta situación, para que corrija el error y pueda obtener el resultado previsto. La secuencia 10 presenta la forma que tendría a interfase de esta herramienta. Observe que sólo se solicitan las entidades y que todo el proceso de transformación y cálculo de la intersección es oculto al usuario.

Entrada: Recortar ↵ 1 Seleccione la entidad hasta donde se recorta : selección ↵ 2 Seleccione la entidad que se recorta: selección ↵ 3 Entrada: 4

Secuencia 10: Interfase usuario aplicación para la Herramienta Recortar

P1

P2 ≅ PI P3

P4

100

En correspondencia con la interfase se establece el algoritmo 15 que muestra de forma resumida el proceso para la obtención del recorte de una entidad ET2 con respecto a otra ET1. Observe que si estas entidades no se interceptan surge el error número 7 que debe comunicar al usuario “la entidad no se puede recortar”. 1 Nombre de la herramienta: Recortar 2 Escribir en el área, Seleccione la entidad hasta donde se recorta: 3 Invocar el proceso de selección y tomar ET1 4 Escribir en el área, Seleccione la entidad que se recorta: 5 Tomar el valor de ET2 6 Si ET1 no intercepta con ET2 entonces 7 ERROR7 8 Sino 9 Determinar la intersección entre ET1 y ET2 10 Cambiar los valores de coordenadas correspondientes con ET2 según

la intersección 11 Devolver la entidad a la lista de entidades

Algoritmo 15: Solución en seudo código para la Herramienta Recortar

Esta herramienta se puede hacer mucho más versátil si se toma en consideración que el usuario puede seleccionar un conjunto de entidades hasta donde se desea recortar y en la medida que se seleccione la entidad recortada se procede a realizar el algoritmo explicado. Esto haría pensar que la forma de detener el proceso es respondiendo a la segunda selección con la teca Enter o Escape. Otro aspecto curioso es cómo el proceso determina que el usuario quiere cambiar el punto P 2 y no el punto P1. La figura 76 y 77 muestran como recortar el segmento P1P2 con relación a P3P4 cambiando el punto P2, lo cual no siempre es deseable. Por tanto, se hace necesario establece que el proceso de selección de la entidad que se recorta se haga lo más cerca posible del punto que será recortado o de la parte de la entidad que se desea “borrar”. Por lo que, cuando se establece en el punto 5 del algoritmo 15, Tomar el valor de ET2, se refiere al proceso de determinar cual parte de la estructura será cambiada.

Figura 78: Surgimiento de un arco de circunferencia al Recortar un círculo

P1

P2

C

R

P1

P2

C

R

PI

PF

ET1 ET2 ET2

a) b)

101

Se ha expresado que una herramienta no provoca la aparición de una nueva entidad, sino que hace la modificación de una existente, lo cual es cierto, pero no totalmente. Cuando se hace el recorte de un círculo con relación a un segmento como muestra la figura 78A, se obtiene un arco de circunferencia según se aprecia en la figura 78B. Observe que la entidad círculo declarada como ET2 por ser la entidad que se recorta, cambia a un nuevo tipo de entidad establecida ahora como Arco, con una estructura distinta a la original. Por tanto, un estudio del comportamiento de las entidades permitirá conocer cuales son las transformaciones que se llevan a cabo en cada caso. De la misma forma que se ha visto la herramienta Recortar se pudiera hacer una herramienta que permita extender un segmento de recta hasta otro. El accionar de esta herramienta sería determinar si un segmento de recta se encuentra en corte aparente con respecto a otro, en tal caso, determinar e punto de intersección y cambiar el valor de las coordenadas de un extremo del segmento. Ejercicio propuesto: 1. Elabore una función que permita obtener la posición relativa de dos segmentos

de rectas en el espacio, en seudo código. 2. Hacer una función que permita obtener la posición relativa entre dos

segmentos de rectas no paralelos, en seudo código. 3. Realizar una función que permita obtener la posición relativa entre dos

segmentos de rectas colineales, en seudo código. 4. Elaborar una función que me permita clasificar segmentos de rectas

perpendiculares. 5. Modificar el algoritmo 15 de manera que pueda Recortar diferentes tipos de

entidades. 6. Hacer una herramienta que permita extender dos segmentos de rectas, en

seudo código. 7. Elaborar una función que permita obtener la diferencia entre dos segmentos de

rectas colineales, en seudo código. 8. Hacer una función que me permita obtener el segmento de la intersección

entre dos segmentos de rectas colineales, en seudo código. 9. Realizar una función que permita unir dos segmentos de rectas colineales, en

seudo código. 10. Elaborar una función que determine si un segmento de recta intercepta a un

círculo, en seudo código. 11. Realizar una función que determine si un segmento de recta intercepta a una

elipse, en seudo código. Plano geométrico

Un segmento de recta con respecto a un plano geométrico puede estar en cuatro posiciones: en Sentido de la normal, Contra la normal, Contenido en el plano, o en

102

Contacto puntual. El plano geométrico se encuentra definido por un punto R0 y la normal N. La determinación de la posición relativa se hace a partir de conocer las distancias del punto al plano de los puntos extremos del segmento.

Figura 79: Ubicación de un segmento de recta con respecto a un plano

La figura 79, muestra un plano geométrico representado por un paralelogramo que lo contiene, recuerde que el plano es una entidad infinita que divide al espacio en dos partes. El segmento de recta P1P2 se encuentra con ambos puntos en el sentido de la normal por tanto, el segmento lo estará también. De igual forma es fácil determinar cuando el segmento de recta esta en contra de la normal o contenido en el plano. Se dice que un segmento de recta esta en contacto puntual si un extremo del segmento se encuentra en una parte del espacio y el otro extremo, en la otra parte. También, puede ocurrir que uno de los puntos extremos del segmento esté haciendo contacto con el plano y el otro esté en el espacio. Todas estas situaciones serán consideradas de igual forma, Contacto. Al definir una función que determine la posición relativa del segmento respecto al plano (PRSPT), se deben tomar como datos de entrada un punto R0 y la normal de plano N, y los dos puntos extremos del segmento de recta P1 y P2, y deben salir las cuatro posiciones que se preestablecieron, observe el algoritmo 16.

1 Nombre de la función: PRSPT 2 Entran: R0 y N plano 3 P1 y P2 puntos extremos del segmento 4 Sale: 0 Sentido, 1 Contra, 2 Contenido, 3 Contacto 5 Calcular d1 = nx • (x1 – x0) + ny • (y1 – y0) + nz • (z1 – z0) 6 Calcular d2 = nx • (x2 – x0) + ny • (y2 – y0) + nz • (z2 – z0) 7 Si (d1= 0 y d2 = 0) entonces sale 2 8 Si (d1 * d2 = 0) entonces sale 3 9 Si d1 > 0 entonces sale 0 sino sale 1

Algoritmo 16: Seudo código de la función PRSPT

P5

P3

P4

P1

P2 P8

P7

P6

R0 N

103

En la línea 9 sólo se analiza el valor de d1 ya que la multiplicación de d1 * d2 siempre será mayor que cero y eso puede ocurrir cuando los dos valores sean positivos o negativos.

Figura 80: Clasificación de un segmento que está en contacto puntual con el plano

En la línea 8 se podría profundizar y determinar cuando el segmento se encuentra en contacto por el lado positivo, por el lado negativo o lo atraviesa. Observe en la figura 80, que el segmento de recta P1P2, se encuentra en contacto por el lado positivo ya que la distancia del punto P1 al plano sería positiva y la distancia de P2 daría cero; el segmento de recta P3P4, se encuentra en contacto por el lado negativo, ya que la distancia del punto P4 al plano es negativa y la distancia de P3 al plano es cero. El segmento de recta P5P6 atraviesa el plano ya que una distancia daría positiva y la otra negativa. En tal caso se podría calcular el valor del punto de intersección PI, común a ambas entidades, conociendo que el valor de la variable paramétrica del segmento de recta es:

12

10

PPNPRN

t••−

= t ∈ [0, 1] (97)

De esta ecuación también se puede deducir que si el producto escalar del vector N con el segmento P1P2 es cero, implica que el segmento está contenido en el plano. Ejercicio propuesto: 1. Modificar el algoritmo 17 de manera que pueda clasificar los segmentos de

rectas transversales. 2. Elabore una función que determine el valor del punto de intersección de un

segmento de recta con un plano dado por: a) Un punto R0 y la normal N al plano b) Tres puntos

P5

P3

P4

P2

P1

P6

R0 N

PI

104

Polígono La posición relativa de un segmento de recta con respecto a un polígono en el espacio es muy parecida a lo estudiado en relación con el plano geométrico. No obstante, se realizará una subdivisión de la situación del segmento de recta a partir de que el polígono constituye una región del plano y pueden existir segmentos de rectas que atraviesen el plano y no a la región del polígono. Se dirá que un segmento de recta puede estar fuera del polígono cuando no exista contacto con este de ninguna naturaleza, que puede existir un punto de contacto o que el segmento puede estar en el mismo plano que el polígono, de aquí parte la primera forma de observar la clasificación del segmento con respecto al polígono y cuyo gráfico se muestra en la figura 81. Si el segmento se encuentra fuera, puede estar en el sentido de la normal, en contra de la normal o transversal. El segmento puede estar en contacto puntual de forma positiva, negativa o atravesando el polígono al igual que ocurre con el plano geométrico. La diferencia entre la clasificación Transversal y Atraviesa es que el punto de intersección del segmento con el plano pertenece al polígono para el caso en que lo atraviesa y el otro no. Cuando el segmento se encuentre en el mismo plano que el polígono, se dirá que clasifica como coplanar estudiándose su clasificación como bidimensional. Por tanto, se propone la realización de una función que determine la posición relativa de un segmento con respecto a un polígono en el espacio tomando como referencia la clasificación de la figura 81.

Figura 81: Clasificación del segmento de recta con respecto a un polígono en el espacio

La posición relativa del segmento de recta con relación a un polígono, ambos en el mismo plano será estudiada de forma bidimensional ya que cualquiera sea, la ubicación de ellos en el sistema de coordenadas espacial siempre será posible

Fuera

Contacto puntual

Sentido de la normal

Contra de la normal

Positivo

Negativo

Atraviesa

Transversal

Coplanar

105

convertirlo en un sistema bidimensional realizando las transformaciones correspondientes. Un segmento de recta coplanar con un polígono puede estar Dentro, Fuera o en Contacto. Para determinar en cual caso se encuentra un segmento no basta con analizar la posición de los extremos del mismo, sobre todo tratándose de polígonos no convexos. El análisis de esta clasificación se hará con auxilio de la figura 82, donde se ha representado un polígono no convexo A y varios segmentos de rectas Si. Se puede establecer que un segmento está en contacto si se corta o es colineal, a los segmentos que forman el polígono. Por tanto, el primer proceso será establecer la posición relativa entre los segmentos del polígono y el segmento de recta de análisis, si existe al menos para uno se logra clasificar como que se corta o es colineal, se puede asegurar que están en contacto. Esto ocurre con los segmento S1, S2, S4, S5, S6, S7 y S8 de la figura 82.

Figura 82: Clasificación del segmento de recta con respecto a un polígono en el plano

Una vez que se conozca que el segmento no está en contacto, puede que este se ubique fuera o dentro por lo cual se analizará la posición relativa de un punto respecto a un polígono, si el punto está dentro, entonces el segmento se encuentra dentro. El segmento S9, de la figura 82 no tiene intersección con los segmentos del polígono y los extremos están dentro, luego, S9 está dentro del polígono A. Con igual analogía el segmento de recta S3 se encuentra fuera del polígono A. Debido a la gran diversidad de segmentos de rectas clasificados como contacto se puede establecer otro nivel, subdividiendo la clasificación en Puntual, Contorno y que Atraviesa. Se dirá que un segmento en contacto es puntual si el punto de intersección con los segmentos del polígono es un punto extremo del segmento de análisis o un vértice del polígono. Ejemplo de ello se tienen los segmentos S1, S5 y

S1

A S2

S3

S4

S5

S6

S7

S8

S9

106

S8 de la figura 82. En el Contorno, se encuentran aquellos segmentos que están colineales con los segmentos del polígono, ejemplo el S4, S5 y S6. Los segmentos S7 y S2, clasifican como que Atraviesan Observe que el segmento S5 pertenece a las dos clasificaciones, lo cual no debe ocurrir, ya que no puede existir ambigüedad en la clasificación, por lo que siempre se debe tomar una condición por encima de las otras. Se deja a su elección la condición que tendrá el segmento de recta S5 utilizado en el ejemplo. Un resumen de la clasificación analizada se muestra en la figura 83.

Figura 83: Resumen de la clasificación del segmento de recta con respecto a un polígono en el plano

En función de lo descrito, se puede continuar subdividiendo la posición del segmento respecto al polígono. No obstante, se debe en cada caso precisar la definición y prestar atención a que no aparezca un mismo segmento en varias posiciones a la vez. Ejercicio propuesto: 1. Realizar una función que determine la posición relativa de un segmento con

respecto a un polígono en el espacio, tomando como referencia la clasificación de la figura 81, en seudo código.

2. Elabore una función que determine cuando un segmento de recta se encuentra Fuera, Dentro o en Contacto con un polígono.

3. Haga una función que determine si un segmento de recta es puntual o no a un polígono, en forma de seudo código. Observe que la respuesta es bivalente.

4. Proponga una clasificación para los segmentos de rectas puntuales a los polígonos.

5. Elabore un algoritmo, en seudo código, de una función que determine la posición relativa de un segmento de recta respecto a un círculo en el plano.

6. Elabore un algoritmo, en seudo código, de una función que determine la posición relativa de un segmento de recta respecto a una elipse en el plano.

Cuerpo geométrico

La posición relativa de un segmento de recta respecto a un cuerpo geométrico puede ser Dentro, Fuera o en Contacto. La subdivisión de la clasificación de contacto varia en cada cuerpo, por tal motivo se propone su estudio de forma independiente consultando los resultados con sus profesores y colegas.

Fuera

Contacto

Puntual

Contorno

Atraviesa Dentro

107

El estudio de los cuerpos prismáticos difiere del cilindro, el cono y la esfera. El análisis se torna más difícil cuando se posee un cuerpo prismático con superficies no convexas como muestra la figura 84. El análisis de la posición comienza por conocer la ubicación del segmento con respecto al los polígonos que forman el cuerpo en el espacio. Si como respuesta se obtiene que el segmento no esta Fuera, o sea, que existe al menos un Contacto puntual o es Coplanar, entonces se dirá que el segmento está en Contacto con el cuerpo prismático. Como ejemplo se tiene el segmento de recta S1 de la figura 84. Se podría subdividir la clasificación de este segmento si se plantea el tipo de contacto, o sea, si es con una superficie con una arista, con un vértice, puntual de penetración, etc. Cada caso debe ser estudiado para establecer una definición y evitar las ambigüedades. En el caso de no estar en contacto con el cuerpo prismático significa que puede estar Fuera o Dentro, lo cual se determina a partir de la posición que tiene un extremo del segmento con relación al cuerpo, aspecto analizado anteriormente. Si como resultado se tiene que el punto se encuentra dentro del cuerpo entonces el segmento de recta también lo estará con relación al cuerpo, de ejemplo se tiene el segmento de recta S3 de la figura 84. El segmento de recta S2 de la figura 84 muestra la posición relativa declarada como Fuera, para el cuerpo prismático.

Figura 84: Posición de los segmentos en un cuerpo prismático con superficie no convexa

La posición relativa del segmento con respecto a un cilindro recto sobre le plano XY se puede determinar a través de la proyección de las dos entidades sobre el mismo plano. El cilindro se proyectaría como un círculo y el segmento se puede proyectar como segmento o como punto. En el primer caso, se estará en presencia de la situación relativa entre un circulo y un segmento en el plano y en el segundo, el la situación entre un punto y un circulo. Siempre se tratará de reducir o simplificar el problema a fenómenos geométricos conocidos.

C5 C6

C7

C8

C9

C0 C4

C3 C2

C1

S1 S3

S2

108

Otro caso particularmente fácil de determinar la posición relativa del segmento de recta es la esfera. Para este caso se deben analizar la distancia del centro de la esfera con el segmento de recta en relación con el radio de la esfera. Si la distancia es mayor que el radio, el segmento estará fuera de la esfera, en caso contrario se calcularán las distancias de los extremos del segmento al centro de la esfera. Si ambas distancias son menores que el radio entonces el segmento se encuentra dentro de la esfera. Si el segmento, no se encuentra Fuera, ni dentro, entonces está en contacto. Observe que de las tres condiciones sólo se necesitan probar dos y la tercera es por omisión. El estudio de la posición relativa del segmento de recta con el cono requiere del análisis de la situación de segmentos de rectas en el espacio; determinación de la distancia entre ellos; punto de intersección aparente entre segmentos que se cruzan, etc. El nivel de abstracción requerido para este caso, sobre pasa los objetivos que se desean alcanzar en el estudio de esta asignatura por lo cual no se propone una solución dejándose para estudios posteriores o trabajos de investigación. Ejercicio propuesto: 1. Realizar una función que determine la posición relativa de un segmento con

respecto a un cuerpo prismático, en seudo código. 2. Elaborar una función que determine la posición relativa de un segmento de

recta con respecto a un cilindro recto al plano XY. 3. Escriba una función, en seudo código, que determine la posición relativa de un

segmento de recta con respecto a una esfera.

Posición del Polígono con otras entidades Los polígonos son regiones de planos geométricos limitados por polilíneas cerradas con características específicas según se estudió en el epígrafe correspondiente a esta entidad. Por esta razón, se estudiará la situación relativa que poseen los planos geométricos entre sí.

Figura 85: Posición relativa entre planos geométricos

La figura 85 muestra las posiciones que pueden adoptar dos planos geométricos. Puede que dos planos estén situados de forma Paralela, figura 85a, o que se

a)

P1

P2

b) c)

P2

P1 P1

P2

109

Corten, figuras 85B y 85C. Se extrae de esta última posición, aquella en que los planos se encuentren Perpendiculares dando una clasificación adicional, ver figura 85C. Tomado como referencia dos planos P1 y P2 descritos geométricamente por sus puntos R10 y R20, y las normales N1 y N2, respectivamente, se dice que dos planos son Paralelos si los vectores de sus normales poseen la misma dirección, o sea, N1 = N2 o N1 = − N2.. Dos planos geométricos son perpendiculares entre si cuando el producto escalar de sus normales es igual a cero (N1 • N2 = 0). Por omisión se establece que se Cortan. Los planos geométricos paralelos pueden clasificarse de dos formas, según el sentido de la normal y según la pertenencia de los puntos. Según el sentido de las normales de los planos geométricos, los planos Paralelos pueden ser Opuestos o en igual Sentido. Dos planos son Opuestos si N1 = − N2 y en igual sentido si N1 = N2. Según la posición del punto del plano, pueden ser Coincidentes o no; se dice que dos planos paralelos son Coincidentes si se cumple que el punto R10 pertenece al plano P2. Estas dos formas de clasificación hacen que surjan cuatro formas en que pueden estar los planos paralelos: Opuestos Coincidentes, igual Sentido Coincidentes, Opuestos No Coincidentes e igual Sentido No Coincidente. Se podría establecer una clasificación entre los planos geométricos que se cortan según el sentido de las normales si se toma como referencia el menor ángulo formado entre los planos. Entre polígonos en el espacio La situación relativa entre polígonos en el espacio es muy parecida a la posición de los planos geométricos. La clasificación inicial entre polígonos se puede apreciar en la figura 86, donde se ha representado el sistema de coordenadas cartesiano y se han trazado dos polígonos A y B. Los polígonos pueden ser Paralelos, figura 86A, No Paralelos, figura 86B o Perpendiculares figura 86C.

Figura 86: Situación relativa entre polígonos

Si dos polígonos situados en el espacio tiene las normales en la misma dirección se dirá que son paralelos. Estos pueden ser Coplanares o No. Se denominarán

AB B

AA

B

a) b) c)

x

y

z

x

y

z

x

y

z

110

coplanares si un punto de un polígono está contenido en el otro, de lo contrario será No Coplanar. Los polígonos Coplanares serán estudiados como bidimensionales, por tal motivo, no se continúa su clasificación ahora. Los polígonos No Paralelos son todos aquellos que no cumplen con las condiciones anteriores a excepción de los que se encuentran de forma perpendicular. Los polígonos No Paralelos se pueden dividir en Contacto y No Contacto. Un ejemp lo de polígonos No Paralelos que No tienen Contacto es el de la figura 86B. El contacto entre polígonos puede establecerse de forma Puntual o Lineal. La figura 87 muestra un parte de la clasificación de la posición entre dos polígonos que puede ser expandida según las necesidades de la aplicación que se esté elaborando. Además se puede establecer la clasificación según el sentido de las normales de los polígonos como Opuestos o igual Sentido, al igual que se realizó con la clasificación entre los planos.

Figura 87: Clasificación de la posición relativa entre dos polígonos en el espacio

Entre polígonos en el plano Para establecer la posición relativa entre dos polígonos en el plano, bidimensionales o Coplanares se tomará un polígono A como base y siete polígonos más en orden alfabético, colocándose como muestra la figura 88. Inicialmente se puede establecer una clasificación igual a la tratada en otras entidades. Por tanto, se puede establecer que un polígono estará ubicado con relación a otro por Fuera, Dentro o en Contacto. En la figura 88, se puede apreciar tomando como referencia el polígono A que el polígono C está Fuera, el B está Dentro y el resto de os polígonos están en contacto. Si el establecimiento de la clasificación es realizado para llevar acabo los procedimientos del algebra boleana se hace necesario profundizar en la clasificación de los polígonos que se encuentran en contacto descomponiéndolos

Paralelos

No Paralelos

Perpendiculares

Coplanar

No Coplanar

Contacto No Contacto

111

en: contacto Puntual, por Arista u Intersección. El contacto puntual y por arista se descompone a su vez en: Interno y Externo. Los polígonos que se encuentran en Intersección pueden ser: Parcial o total. Un resumen de esta clasificación se puede apreciar en la figura 89.

Figura 88: Posición relativa entre polígonos Coplanares.

Ejemplo gráfico de esta clasificación puede verse en la figura 88, donde el polígono F se encuentra en posición Puntual Exterior, el G en Puntual Interior, D en Arista interior, E en Arista Exterior y H en Intersección Parcial; siempre tomando como referencia el polígono A.

Figura 89: Clasificación de la posición entre polígonos.

La forma de conocer el primer nivel de clasificación de los polígonos es a través de la relación entre las aristas que los componen y un punto del polígono que se está analizando. Si se toma la arista de un polígono, por ejemplo el A de la figura 88, y se compara su posición con las aristas de otro polígono, por ejemplo el polígono B o C, se puede apreciar que ninguna de las aristas se intercepta, lo cual permite asegurar que el polígono B o C no se intercepta con el polígono A. La respuesta del lugar que tienen los polígonos que se están analizando surge del conocimiento de un punto de ellos en relación con el polígono A. Si conociendo que las aristas de los polígonos no se encuentran en contacto, y un punto del polígono se encuentra dentro de este, se puede afirmar que el polígono está

Fuera

Contacto

Dentro

Internos

Externos

Puntual

Arista

Intersección Parcial

Total

A

D

B

G

H

E

F

C

Leyenda

Área del Polígono A

Área del resto de los Polígonos

112

dentro del otro. Retomando el ejemplo de la ubicación de los polígonos B y C, se puede apreciar en la figura 88, que si se toma un punto del polígono B este daría con relación al polígono A que se encuentra dentro, por tanto, el polígono B se encuentra dentro del polígono A. En el caso contrario a este, el polígono C se encuentra fuera del polígono A ya que del análisis de uno de sus puntos, se obtienen que el punto esta fuera del polígono. Se ha podido demostrar en los dos últimos párrafos, dos de las clasificaciones que se encuentran en el primer nivel, quedándose por defecto la clasificación de contacto. También se puede apreciar el uso de otras funciones declaradas como son la situación relativa entre segmentos de rectas y la posición relativa de un punto con respecto a un polígono. Se podría, no obstante, conocer la clasificación del primer nivel con sólo aplicar la posición relativa de un punto con respecto a un polígono para todos los puntos del polígono que se analiza y posteriormente invertir el proceso. Observe la siguiente figura 90, para ilustrar lo afirmado. Si se analiza la posición relativa de los vértices del polígono B, según la figura 90, con respecto al polígono A se aprecia que todos los vértices están fuera, lo cual no constituye una prueba definitiva para la clasificación entre polígonos, ya que si se toman los vértices del polígono A con respecto al polígono B se obtendría que existe contacto. De esta forma queda demostrado que es necesario realizar el proceso de clasificación a través de la posición relativa de un punto con respecto a un polígono para las entidades que se encuentran en análisis.

Figura 90: Análisis de la clasificación utilizando los puntos del polígono

Se han presentado dos formas de obtención de la posición relativa entre polígonos, las cuales deben ser analizadas y discutidas con el objetivo de conocer cual es la opción mejor a emplear. En caso que se encuentre una tercera forma de obtener la clasificación, sométase a discusión también. El análisis del segundo y tercer nivel de clasificación se dejará de estudio independiente. Estas clasificaciones determinarán la posibilidad de realización de operaciones booleanas geométricas entre los polígonos. La única restricción es

A1

Leyenda

Área del Polígono B

Área del Polígono A B1

B2

B3

B4 B5

A2

A3

113

como resultado de la operación booleana se debe obtener una figura geométrica plana. Ejercicio propuesto: 1. Elaborar una función que determine la posición relativa entre dos planos

geométricos, en forma de seudo código. 2. Escriba una función, en seudo código, que determine la posición relativa de

dos planos geométricos que son paralelos entre sí. 3. Establezca una comparación entre los dos métodos utilizados, para obtener la

clasificación del primer nivel entre polígonos, en cuanto a la rapidez de la respuesta.

4. Construya una función, en seudo código, que obtenga la clasificación del primer nivel entre polígonos utilizando funciones conocidas.

5. Realice una función que permita determinar la posición relativa entre dos polígonos como se describe en la figura 87, en forma de seudo código.

6. Determine que características de posición deben tener dos polígonos para realizar las operaciones booleanas de Unión y Sustracción.

Proceso de selección de entidades Una de las aplicaciones que posee la clasificación entre entidades, descrita, es durante el proceso de selección. El proceso de selección es una acción que se realiza sobre entidades que han sido trazadas y cuyo objetivo es formar una lista que permita su posterior utilización. Este proceso se utiliza dentro de herramientas que sirven para transformar entidades. Por tanto, tiene asociado un comienzo y un fin. Un usuario conoce que comienza un proceso de selección cuando le aparece en el área de interfase la oración: Seleccione entidades; y la aplicación sabe que finaliza por alguna palabra clave u orden que introduce el mismo. Lo descrito con anterioridad, le proporciona al proceso de selección características especiales por lo cual se debe considerar como una herramienta. El objetivo del proceso determina que como salida de esta herramienta se obtenga una Lista de Selección (LS), se realice siempre la misma pregunta. En las aplicaciones gráficas comerciales, se pueden distinguir dos formas típicas de realizar la selección, una a través de una lista de entidades y la otra utilizando el ratón. El usuario percibe, en el área de trabajo, que una entidad ha sido seleccionada debido a que su apariencia cambia. El cambio puede ser de color, estilo o tipo de la línea, de espesor, o de todas a la vez. La decisión de cual aspecto será cambiado depende de la finalidad y tipo de usuario al cual estará destinada la aplicación que se utiliza. Lista de selección Las aplicaciones que utilizan la lista de entidades como método de selección poseen dentro de la estructura de datos un nombre que generalmente se asocia a

114

la orden que los crea. La diferencia entre cada entidad del mismo tipo radica en el número consecutivo que se les adiciona, se puede observar a modo de ejemplo la figura 91a.

Figura 91: Proceso de selección utilizando lista de entidades

Cuando se despliega este botón de entidades, el usuario va marcando las entidades que desea seleccionar cuyo efecto se lleva a cabo cuando acciona el botón Seleccionar que se encuentra al final. Observe la figura 91b. En este método de selección la LS se forma una vez que el usuario acciona el botón de seleccionar, lo cual constituye el objetivo principal de este proceso. Selección por ratón

El método mas frecuente utilizado en las aplicaciones es la selección utilizando el ratón. Una vez que la aplicación invoca a la herramienta se cambia la forma del cursor asumiendo la que se muestra en la figura 92. El cursor es un polígono cuadrado que se construye a partir de las coordenadas tomadas de la pantalla (pixel), su magnitud está definida por una variable que puede ser modificada por el usuario según su necesidad.

Figura 92: Forma común del icono

Este polígono posee dos estados en su formación, uno visual y otro como estructura. En el estado visual, el polígono se forma según el movimiento del curso por toda el área de trabajo de la aplicación lo que posibilita, al usuario, buscar y localizar la entidad que desea seleccionar, una vez cerca de ella el usuario acciona el clic en el ratón y se forma al estructura del polígono pasando al otro

(x, y)

a

Entidades

Linea1 Linea2 Circulo1 Poligono1 Circulo2

Entidades

Linea1 Linea2 Circulo1 Poligono1 Circulo2

Seleccionar Seleccionar

a) b)

115

estado. Esta nueva estructura en forma de polígono, busca en la lista de entidades (LE) cual de ellas posee intersección con el o está contenida dentro del mismo. En la medida que va recorriendo la lista, una sola vez, va pasando las entidades a la lista de selección (LS). Una vez que termina el recorrido, se destruye el polígono creado al hacer el clic y espera otra nueva formación. El proceso de selección por ratón finaliza cuando el usuario acciona las teclas Enter o Espace. Existen algunos recursos que amplían el uso del ratón durante el proceso de selección entre los que se encuentra la selección por ventana, última o todas las entidades. Cada uno de estos recursos, deben ser cuidadosamente estudiados para lograr el efecto que se desea. Además, se le puede agregar la des-selección de la entidad, formando una lista intermedia cuando se recorre la lista de entidades, antes de recorrer la lista de selección. Observe la propuesta que presenta el algoritmo 17.

1 Cambiar el icono 2 Valor igual a cero 3 Mientras Valor no sea igual a (Enter o Escape) 4 Seleccione entidades: Valor 5 Si movimiento del ratón entonces 6 Dibujar polígono P = [(x, y), (x+a, y), (x+a, y+a), (x, y+a), (x, y)] 7 Si clic del ratón entonces 8 Construir estructura del polígono P 9 Para cada elemento de LE 10 Si Intersección o Contenido LE(i) con P, agregar a LI 11 Para cada elemento de LS 12 Si Intersección o Contenido LS(i) con P, agregar a LE 13 Colocar los elementos de LI en LS 14 Retomar el icono 15 Devolver LS

Algoritmo 17: Solución en seudo código del proceso de selección por ratón

En la línea 10 del algoritmo 17, se va llenando la Lista Intermedia (LI) con las entidades que se sacan de la Lista de Entidades (LE), las cuales poseen contacto o están contenidas dentro del polígono P. Posteriormente, se realiza la misma operación con la Lista de Selección pero esta vez, se envían directamente las entidades encontradas a la LE, pues se des-seleccionan, para finalizar se vacía la LI en la LS. La inicialización del Valor en cero, línea 2, es para que entre en el ciclo de mientras la primera vez, observe que de este ciclo sólo se sale si Valor es Enter o Escape. Ejercicio propuesto: 1. Elaborar una herramienta que permita la selección de entidades a partir de una

lista de selección, en forma de seudo código. 2. ¿Qué hacer si se necesitan crear dos listas de selección en una herramienta,

por ejemplo, si se desea realizar la sustracción de un grupo de polígonos con otro grupo de polígonos?.

116

3. ¿Qué transformaciones son necesarias realizar en el algoritmo 15 para utilizar el proceso de selección explicado?.

4. Elaborar una herramienta de selección que permita la selección por ventana, en forma de seudo código.

117

Capitulo 3: Proyección Existe un largo proceso histórico donde el hombre ha intentado reflejar en una piedra, pergamino, papel, etc ; los objetos o imágenes que observa o crea. Una de las cosas que mayor facilidad logra copiar, la realidad que nos rodea, es la fotografía. A todo este proceso le llamamos proyección, la cual se define como: representación de un cuerpo sobre un plano hecha según ciertas reglas geométricas. Ejemplo de proyección y más común es la sombra, y la proyección del ojo. El orden en que se encuentra el objeto de proyección y el plano en relación con el origen de la proyección pueden variar según el tipo de actividad que se analice. En la proyección de películas, por ejemplo, el objeto y el plano se encuentra exactamente igual que como se observa en la figura 93; sin embargo, cuando un pintor realiza un cuadro, este sitúa el plano entre el lugar de origen de la proyección y el objeto. La variación puede ser mayor como ocurre con la fotografía donde el plano se encuentra detrás del lugar de origen de la proyección.

Figura 93: Componentes de una proyección

Por todas estas situaciones que ocurren en los fenómenos ópticos de la realidad y su proyección sobre un plano, existen dos corrientes para la enseñanza de este tema, una que plantea que el plano de proyección se encuentra entre el objeto y el lugar de origen de proyección y otra que el orden es lugar de origen de proyección, objeto y posteriormente el plano. Cada componente de la proyección se expresa de formas diferentes. El centro de proyección es un punto tridimensional (CP), la dirección de proyección es un vector espacial (DP), el plano de proyección se expresa a través de un punto y la normal (R0, N) y los objetos según la estructura declarada por los programadores.

Lugar de origen de proyección

Objeto de proyección

Plano de proyección

A a

Rayo de proyección

118

Tipos de proyección El primer nivel de clasificación de una proyección está dado por el lugar de origen de la proyección. Si el lugar de proyección se encuentra cerca del plano de proyección se puede decir que los rayos convergerán en un punto cuyo nombre recibe Centro de Proyección (CP), dando origen a la proyección Perspectiva. Si por el contrario el lugar de origen se encuentra en el infinito los rayos proyectantes pasaran paralelamente por los distintos puntos del objeto e incidirán el en plano de igual forma surgiendo la proyección paralela. Luego, cuando se habla de proyección Perspectiva se hace referencia al Centro de Proyección (CP) y cuando se trata de proyección Paralela se hace referencia a la Dirección de Proyección (DP). La proyección paralela se clasifica en dos tipos: Ortogonal y Oblicua. Se dice que una proyección paralela es ortogonal cuando los rayos incidentes sobre el plano forman un ángulo de 90 grados con este; en caso contrario es Oblicua. El segundo nivel de la clasificación de la proyección perspectiva depende de cuantas intersecciones realice el plano de proyección con los planos principales, cuando se produce una intersección se dice que es Simple Escorzo figura 94a, cuando son dos intersecciones es Doble Escorzo figura 94b y cuando la intersección es con los tres planos principales de proyección se denomina Triple Escorzo figura 94c.

Figura 94: Tipos de proyección perspectiva

Existen otras proyecciones utilizadas por el hombre como son: proyección central o perspectiva cónica, proyección cilíndrica, proyección o perspectiva cabellera. El empleo de estas proyecciones no es común, por consiguiente no serán estudiadas. Proyección paralela Este tipo de proyección es utilizada para la realización de los dibujos de planos técnicos de una casa, edificio, fábrica, equipo, pieza, etc. Debido a que el centro

b)

a) c)

119

de proyección se encuentra en el infinito y los rayos proyectantes son paralelos entre sí, los cuerpos conservan su tamaño y forma originales. Un mundo visto en proyección paralela sería un mundo sin distancias visuales, ya que no sabríamos distinguir por el tamaño la distancia a la que se encuentran dos objetos iguales, tornándose bastante peligroso andar por la calle ya que un carro tendría el mismo tamaño si se encuentra a un kilómetro que si está a un metro del observador. Como ejemplo, observe la figura 95 que muestra la proyección paralela de un cuerpo sobre el plano de proyección horizontal XY. Esta proyección esta determinada al prescribir un vector de dirección de proyección DP y un plano de proyección. Se ha denotado los vértices del cuerpo en letras mayúsculas y su proyección en letras minúsculas para establecer una diferencia.

Figura 95: Proyección paralela de un cuerpo sobre el plano XY

El análisis detenido de la proyección del cuerpo sobre el plano permite determinar los valores de las componentes de la proyección. Al plantear este problema se hace necesario definir el plano de proyección a través del punto de referencia y la dirección de lo normal, así como la dirección de proyección. Debido a la coincidencia de los vértices g ≡ a, h ≡ b, etc., se puede establecer la dirección de proyección como la diferencia entre los vértices. Para el ejemplo se obtendría que DP = (0, 0, -1). Como el plano de proyección es XY tenemos que un punto de dicho plano es: R0 = (0, 0, 0); y por ser una proyección paralela ortogonal la dirección de la normal N tiene que coincidir con DP luego N = (0, 0, -1). Tómese la normal siempre apuntando en la dirección del lugar de origen de la proyección. Al establecer este criterio para la normal del plano de proyección, se puede afirmar que toda entidad plana cuya normal esté en dirección al observador será positiva de lo contrario negativa. Luego los resultados de las componentes para esta proyección son:

DP = (0, 0, -1) R0 = (0, 0, 0)

Y

X

Z

A B

C H G K

J I

L

g ≡ a h ≡ b

i ≡ c l

k

j

120

N = (0, 0, 1) Resulta fácil ver que la proyección sobre este plano cumple que: x = X; y = Y; z = 0. Observe que la dirección de N, DP coinciden con el vector unitario k, por consiguiente la proyección paralela en la dirección de k se puede expresar matricialmente como sigue:

1000

000000100001

=kPar (98)

De igual manera se pueden definir las matrices de proyección ortogonal sobre los planos YZ y ZX. Lo explicado con anterioridad, permite afirmar que conociendo las características de un cuerpo en el espacio se puede definir, a través de la observación de una proyección dada, los componentes que han sido utilizados para obtenerla. Esta afirmación será corroborada a través del siguiente ejemplo. Ejemplo: Dada la proyección (figura 96) de un cubo unitario, ubicado en el origen del sistema cartesiano, determine los parámetros de las componentes a través de las cuales se obtuvo la proyección de las figuras 97a y 97b.

Figura 96: Cubo unitario ubicado en el origen de coordenadas

Figura 97: Proyecciones paralelas

1

1

b = a

f = e g = h

c = d

f = h

b = d

a

e

c

g

1

2

a) b)

A

Coordenadas de los vértices

A (1, 0, 1) E (1, 0, 0) B (1, 1, 1) F (1, 1, 0) C (0, 1, 1) G (0, 1, 0) D (0, 0, 1) H (0, 0, 0)

B

C D

E F

G H

x

y

z

1

1

1

121

Solución-a): Lo primero a identificar es el tipo de proyección de la que se trata. A pesar de que el ejercicio versa sobre proyección paralela, se expondrá por qué se puede afirmar que la proyección de la figura 97a es una proyección paralela. Al observar la figura se aprecia que aristas y caras paralelas en el objeto, permanecen paralelas en la proyección y las magnitudes físicas de las aristas permanecen con igual valor que en el objeto, por tanto, la proyección es paralela. Una vez identificada la proyección se conoce que los parámetros a determinar son, DP, R0 y N. Dada la proyección se puede apreciar que la cara BFGC proyecta en toda su magnitud, por tanto, está contenida o es paralela al plano de proyección, lo cual indica que la normal puede ser calculada por el producto vectorial de dos vectores contenidos en dicho plano BF x FG con lo cual se obtiene que N (0, 1, 0). La dirección de proyección se determina conociendo que la única forma en que un vértice coincide con otro, en una proyección, es que ambos se encuentren en el mismo rayo proyectante. Si la proyección es g = h la dirección de proyección se determinaría como DP = h – g lo cual resulta DP (0, –1, 0). Solución-b): Se puede apreciar que la figura 97b representa una proyección paralela, ya que la única forma en que las caras ABCD y EHGF que son paralelas en el objeto se proyectan como dos líneas paralelas es que los rayos sean paralelos entre si y esto sólo ocurre en este tipo de proyección. Se puede identificar que el rayo tiene una dirección tal que b = d, por tanto DP = d – b, obteniéndose (–1, –1, 0). Por las dimensiones señaladas por la proyección el plano definido por los vértices AECD se encuentra paralelo al plano de proyección, por tanto, una forma de conocer la normal es determinando el producto vectorial entre dos vectores de ese plano AE x EC, con lo cual se obtendría N (1, 1, 0). Conociendo la normal del plano y asumiendo que el plno se encuentra detrás del objeto en dirección de DP se puede tomar como R0 (0, 0, 0) Del análisis de los resultados obtenidos se puede decir que las proyección obtenidas en las figuras 97a y 97b son paralelas ortogonales ya que DP es – N. Realizando un proceso inverso, al aquí descrito, se pueden obtener proyecciones de la Figura 96, a partir de conocer las componentes de la proyección, en tal caso se propone para su estudio el siguiente ejercicio. Ejercicio Propuesto Dada la proyección (figura 96) de un cubo unitario, ubicado en el origen del sistema cartesiano, dibuje la proyección que se obtiene a partir de saber que los parámetros de las componentes son:

a) DP (0, 1, 1); R0 (0, 1, 1) y N (0, -1, -1) b) DP (1, -1, 0); R0 (1, 0, 1) y N (-1, 1, 0)

122

Proyección perspectiva o centrada Es la proyección que simula el comportamiento de nuestros ojos. Ver figura 98. En esta proyección no se conserva ni el paralelismo, ni el tamaño, ni la forma de los objetos originales. Mientras más alejados son los objetos, más pequeños son. Los objetos muy distantes pueden convertirse en un punto y los muy cercanos obstruirían la proyección hasta de ellos mismos por estar tan cerca. Una transformación perspectiva se establece al asignar un centro de proyección y un plano de vista. Este último esta determinado por su punto de referencia R0 y la normal al plano N. El punto objeto P está localizado en coordenadas globales en (x,y,z). El problema es encontrar las coordenadas del punto imagen P´= (x´, y´z´).

Figura 98: Proyección perspectiva

La proyección estándar perspectiva es como sigue:

Figura 99: Proyección estándar de la perspectiva

En la figura 99, el plano de vista es el plano XY, y el centro de proyección se toma como el punto C (0,0,-d) sobre el eje negativo de Z. Usando semejanza de triángulos se tiene que ABC es semejante a A´OC, luego:

f

A B C

D E F

a

c d

Centro de proyección

Plano de proyección

Rayos de proyección

Z

X

Y

P( x, y, z )

P’( x’, y’, 0 )

( 0, y, z )

A ( x, 0, z )

B ( 0, 0, z )

A’ ( x’, 0, 0 )

C ( 0, 0, - d )

( 0, Y’, 0 )

123

dx

dZx

OCOA

BCAB ´´

=+

⇒= (99)

Por tanto;

dzxd

x+•

=´ (100)

Por analogía se tiene que:

dzyd

y+•

=´ 0=z (101)

La transformación perspectiva entre punto objeto y punto imagen es no lineal, por lo que no puede representarse como una transformación matricial 3 x 3, sin embargo, si se emplean coordenadas homogéneas, la transformación perspectiva puede representarse como una matriz de 4 x 4.

1100

0000000000

0 zyx

d

dd

dz

ydxd

•=

+

••

(102)

Observe que la matriz de resultado R presenta como último valor z + d y que según las coordenadas homólogas en este lugar debe quedar 1, por consiguiente deben dividirse todos los números de esa columna por el resultado de este valor, quedando la ecuación obtenida como resultado de la semejanza de triángulo.

dzdz

dzyddzxd

zy

x

++

+•+•

=0

1''

'

(103)

Anomalías de la perspectiva El proceso de construir una vista perspectiva introduce ciertas anomalías que aumentan el realismo en términos de claves de profundidad, pero también distorsionan los tamaños y formas reales.

124

1- Acortamiento perspectivo: figuras de diferentes tamaños pueden obtener la misma proyección. El objeto B es mayor que el obje to A sin embargo, en el plano de proyección tienen igual tamaño. Figura 100.

Figura 100: Acortamiento perspectivo

2- Puntos de fuga: la proyección de líneas que no son paralelas al plano de vista parecen encontrarse en algún punto del plano de vista. Una manifestación común de esta anomalía es la ilusión de que los rieles de ferrocarril se unen en un punto sobre el horizonte. Esta anomalía es la que ofrece la clasificación más común de la proyección perspectiva. 3- Confusión de vista: los objetos detrás del centro de proyección se presentan de cabeza y al revés sobre el plano de vista. 4- Distorsión topológica: un segmento finito de recta que une un punto que se encuentra frente al observador con un punto detrás del observador en realidad se proyecta como una recta discontinua de extensión infinita. Con otros problemas a resolver, en caso que el plano de proyección y/o el centro de proyección no sean los anteriormente dados, entonces se realizan las transformaciones necesarias para llevarlos a este caso y de esta forma facilitar el cálculo. Conociendo las anomalías de la proyección perspectiva se puede determinar las componentes de una proyección a partir del estudio de las relaciones entre sus entes geométricos. Ejemplo: Dada la proyección (figura 96) de un cubo unitario, ubicado en el origen del sistema cartesiano, determine los parámetros de las componentes a través de las cuales se obtuvo la proyección de las figuras 101a y 101b.

Figura 101: Resultados de una proyección perspectiva de un cubo

1

a

e f

b = c

f = h

b a

e

c

g

1

Long

a) b)

½

d

g h

1

½

½ d

2Long

CP

PP A B

125

Solución-a): La proyección de la figura 101a representa una proyección perspectiva debido a que aristas paralelas en el objeto AD y EH no proyectan paralelas. Además las caras EHGF y ABCD que son paralelas de igual dimensión no proyectan con las mismas dimensiones. En la proyección de la figura en análisis, se puede apreciar que la cara AEFB se encuentra con las mismas dimensiones que posee en el objeto, por tanto, eso solo ocurre si la cara pertenece al plano de proyección, por lo cual, se puede tomar como R0 cualquiera de los puntos de la cara, tómese R0 (1, 0, 0). El calculo de la normal del plano se realiza a partir del producto vectorial de AE x EF obteniéndose N (-1, 0, 0). Para determinar el centro de proyección se debe conocer en que punto se interceptan los rayos de proyección. Observe que en la proyección b = c, esto indica que existe un rayo en la dirección (-1, 0 ,0) que pasa por los puntos B y C, los cuales tienen en común las coordenadas y, z = 1. Esto provoca que se desconozca hasta el momento cuales la coordenada x del CP. Observe que la dirección del rayo obtenido está en correspondencia con la incógnita del CP. La solución a la nueva problemática esta en buscar una proyección que permita obtener otro rayo que intercepte con el conocido. Como el rayo conocido es paralelo al eje x, la nueva proyección debe ser sobre el plano XY o el ZX, por lo cual se determina realizar una proyección paralela en DP (0, -1, 0), R0 (0, 0, 0) y N (0, 1, 0) obteniéndose.

Figura 102: Proyección paralela sobre el plano ZX

La proyección paralela auxiliar que se ha obtenido, en la figura 102, muestra el plano de proyección (PP) perpendicular al nuevo plano proyectivo lo cual garantiza la observación de los rayos que salen de los diferentes vértices del cuerpo y se interceptan con el plano de proyección. Se mostrará la construcción de esta proyección como guía para la solución de estos ejercicios, paso a paso. 1er Paso: Se realiza la proyección del cuerpo según las siguientes componentes: DP (0, -1, 0), R0 (0, 0, 0) y N (0, 1, 0). Se estable una diferencia entre la proyecciones denominándolas primas, según se observa en la figura 103a.

x

1

b´ = a

0

b = c = d = a

g = h

1

½

c´ = d´

g´ = h´ f ´= e´ f = e

-x

PP

1er Rayo

2do Rayo

CP

126

2do Paso: Se traza el segmento de recta que indica el lugar por donde pasa el Plano de Proyección. En el, se representan los puntos de la proyección objeto de análisis dada por la figura 103a. Observe, en la figura 103b, que el segmento de recta que contiene las proyecciones de los puntos a, d, c, b; se encuentra perpendicular al plano de proyección R0 (0, 0, 0) y N (0, 1, 0), por lo que, en su representación, coinciden en un punto denotado como b = c = d = a, lo mismo ocurre con las proyecciones del segmento hg, y fe.

Figura 103: Primer y segundo paso para construir una proyección auxiliar

Figura 104: Tercer paso para construir una proyección auxiliar

3er Paso Dibuje el rayo de proyección conocido (0, 1, 1). Este 1er Rayo, se representa como un segmento paralelo al eje x ya que según los datos ofrecidos de la proyección auxiliar se está en presencia del plano principal de proyección ZX. Figura 104. 4to Paso Buscar un rayo de proyección que se intercepte con el 1er Rayo. La proyección de la arista GH en el plano de proyección R0 (0, 0, 0) y N (0, 1, 0), genera la proyecciones g´ = h´, esta arista en PP, proyecta como g = h: ambas proyecciones son puntos sobre el plano de proyección ZX por lo que se puede trazar un rayo que las contenga, el cual se denominará 2do Rayo. Observe la figura 105. En el

1

b´ = a´ b = c = d = a

g = h

1

½

c´ = d´

g´ = h´ f ´= e´ f = e

PP

1er Rayo

1

b´ = a

1

c´ = d´

g´ = h´ f ´= e´

1

b´ = a b = c = d = a

g = h

1

½

c´ = d´

g´ = h f ´= e´ f = e

PP

a) b)

127

lugar donde el 2do Rayo se intercepta con el 1er Rayo se encontrará el Centro de Proyección (CP). 5to Paso Establecer las relaciones geométricas que permiten determinar a que distancia (d) se encuentra el CP del PP, obteniendo la componente x del centro de proyección (CPx).

Figura 105: Cuarto paso para construir una proyección auxiliar

Figura 106: Quinto paso para construir una proyección auxiliar

La figura 106, muestra las relaciones dimensionales que se establecen entre los diferentes puntos de esta proyección. Observe que el triángulo gf’g’ posee una relación geométrica con el triángulo b’CPg. Por las reglas de semejanza de triángulos se puede determinar que la distancia d = 1, por tanto, la coordenada CPx = 2 debido a que el origen de coordenadas se encuentra proyectando coincidentemente con g’. Resumiendo, el centro de proyección a través del cual se obtiene la figura 101a está ubicado en el punto CP (2, 1, 1). Una forma de verificar este resultado es analizando como proyecta la cara DCGH del cubo, observe que esta cara se encuentra detrás del PP en relación con el CP, por lo que sus dimensiones serán más pequeñas en relación con la realidad. Los valores de la componentes serán R0 (1, 0, 0), N (-1, 0, 0) y CP (2, 1, 1).

b´ = a´ b = c = d = a

g = h

c´ = d´

g´ = h´

PP

1er Rayo

2do Rayo

CP

x

0

g

1

½ g´

-x

PP

1er Rayo

2do Rayo

CP

d

CPx

128

Solución-b): La proyección de la figura 101b, ha sido repetida en la figura 107, representa una proyección perspectiva debido a que aristas paralelas en el objeto AD y EH no proyectan paralelas. Además las caras ABCD y EHGF que son paralelas de igual dimensión no proyectan con las mismas dimensiones. En la proyección de la figura 107, en análisis, se puede apreciar que la arista BF se proyecta con las mismas dimensiones que posee en el objeto, por tanto, eso solo ocurre si la misma pertenece al plano de proyección, por lo cual, se puede tomar como R0 cualquiera de los puntos de la arista, tómese R0 (1, 1, 0). Las dimensiones indicadas en la proyección permiten decir que la figura es simétrica con respecto a los segmentos bf y dh, por tanto, la altura de las aristas ae y cg son iguales, lo que determina que el plano será paralelo a un plano que pasa por las proyecciones aegc. Conociendo las coordenadas de los vértices A, E, G, C se puede determinar vector normal como el producto vectorial de AE x EG obteniéndose como resultado N (1, 1, 0).

Figura 107: Proyección perspectiva de un cubo

Para determinar el centro de proyección se debe conocer en que punto se interceptan los rayos de proyección. Observe que en la proyección f = h, indica que existe un rayo en la dirección (-1, -1 ,0) que pasa por los puntos F y H, los cuales tienen en común las coordenadas x = y. Esto provoca que se desconozca hasta el momento cuales son las coordenadas x, y del CP. Observe que la dirección del rayo obtenido está en correspondencia con la incógnita del CP. Por tanto, se debe realizar una proyección del cuerpo sobre el plano XY con el objetivo de analizar la distancia del centro de proyección. Otra forma de analizar al proyección para obtener algún dato sobre CP es la siguiente. Si la cara del cuerpo EHGF proyecta como una línea recta significa que el centro de proyección se encuentra sobre ese plano. Por las coordenadas de los puntos se puede apreciar que la cara coincide con el plano XY, por tanto, la coordenada z del centro de proyección será cero. No existiendo otra información de la proyección entonces se procede a realizar la proyección sobre el plano XY, para analiza r donde se encontrará el centro de proyección. La figura 108 representa la proyección del cuerpo en el plano XY a través de las siguientes componentes: DP (0, 0, -1), R0 (0, 0, 0) y N (0, 0, 1). La construcción de

f = h

b a

e

c

g

1

Long

½

d

2Long

129

esta proyección se hace realizando los mismos pasos que en la solución de la proyección de la figura 101a. Observe en la figura 108 que la distancia del centro de proyección al origen (dCP) es tomada sobre a misma proyección del 1er Rayo, formando un ángulo de 45 grados con respecto a los ejes X, Y. Las ecuaciones que se derivan de estas relaciones geométricas son:

CPx = dCP * Sen 45° (104)

CPy = dCP * Cos 45° (105)

dCP = 2 + d ist (106)

Figura 108: Proyección auxiliar sobre el plano XY

Para determinar el valor de la distancia del centro de proyección al plano (dist) se hace necesario trazar otro rayo. Si se observa la figura 107 se conoce el valor de la altura de proyección de la arista DH la cual se encuentra perpendicular al plano XY y contenida en el plano X = Y. Si se logra observar el rayo que forma la proyección del punto D, se puede determinar cual será la intersección con el 1er Rayo. Por esta razón, la solución a la nueva problemática esta en buscar una proyección que permita obtener otro rayo que intercepte con el conocido, obteniéndose la proyección que se muestra en la figura 109, dada por los siguientes componentes DP (0, -1, -1), R0 (0, 1, 0) y N (0, 1, 1). La figura 109, muestra las relaciones dimensionales que se establecen entre los diferentes puntos de esta proyección. Observe que el triángulo d,e,CP posee una relación geométrica con el triángulo d´´,d,b. Por las reglas de semejanza de

x

0

1

y PP 1er Rayo

CP

dist

a´ = e´

1

d´ = h´ c´ = g

b´ = f´

dCP

a = e

c = g

b = d = f = h

130

triángulos se puede determinar que la distancia dist = 2 . Sustituyendo este valor en la ecuación 106, resolviendo y sustituyendo el resultado en las ecuaciones 104 y 105, se obtiene que las coordenadas CPx = CPy = 2. Resumiendo, el centro de proyección a través del cual se obtiene la figura 107 está ubicado en el punto CP (2, 2, 0). Una forma de verificar este resultado es analizando como proyecta la arista DH del cubo, observe que esta arista se encuentra detrás del PP en relación con el CP, por lo que sus dimensiones serán más pequeñas en relación con la realidad. Los valores de la componentes serán R0 (1, 1, 0), N (1, 1, 0) y CP (2, 2, 0).

Figura 109: Proyección auxiliar sobre el plano X = Y

Hasta el momento se ha trabajado con las componentes de las proyecciones lo cual permite entender la forma de representar objetos tridimensionales en un mundo bidimensional. Las dimensiones utilizadas en la proyección parten de conocer exactamente el cuerpo y colocar las componentes de tal forma que resulta fácil obtenerla. Cuando se trata de cuerpos más complejos o puntos de vistas no reconocidos se recurre a la utilización de ecuaciones que determinan la proyección.

Matrices de proyección La geometría analítica describe matemáticamente la proyección como la obtención del punto de intersección entre un segmento de recta y un plano. Los elementos geométricos que interviene para obtener la expresión matemática pueden observarse en la figura 110. Al igualar la ecuación de la recta con el plano se puede obtener el punto de intersección entre ambos. Dicho punto de intersección, tendría coordenadas (x´, y´, z´) dadas por el sistema de coordenadas globales representado por (x, y, z). También se puede decir que existe un punto en el plano que al ser evaluado en la ecuación paramétrica del segmento de recta se obtiene un valor del parámetro independiente (t) que se encuentra entre cero y uno (0 = t = 1).

e´´ = g´

a´´ = c´ d´´ b´´

f´´

1

2

PP

a = c

e = f = h = g

d

b

½ CP

dist

131

Figura 110: Proyección de un punto sobre el plano

Figura 111: Relación geométrica en la proyección de un punto

Una forma de establecer una relación matemática que permita la evaluación de todos los puntos es a través de las distancias. Como se observa, en la figura 111, el centro de proyección CP y el punto a proyectar (A) se encontrarán a una distancia del plano (PP) de forma tal que la suma de ambas distancias corresponda con la distancia que existe entre el centro de proyección y el punto. Lo anterior puede ser expresado de la siguiente forma:

d = d0 – d1 (107) En la ecuación se establece la suma como una diferencia ya que la cantidad d1 siempre dará negativa ya que se encuentra contraria a la normal. La forma de determinar las cantidades intermedias es:

d 0 = n 1 X0 + n 2 Y0 + n 3 Z0 (108)

d 1 = n 1 a + n 2 b + n 3 c (109)

x y

z

R0 (x0, y0, z0)

PP CP (a, b, c)

A (x, y, z) N

a (x´, y´, z´)

d

d1

d0

x y

z

R0 (x0, y0, z0)

PP CP (a, b, c)

A (x, y, z) N (n1, n2, n3)

a (x´, y´, z´)

132

Donde: X0, Y0, Z0; coordenadas del punto del plano R0. n1, n2, n3; son las componentes del vector unitario de la normal. a, b, c; coordenadas del centro de proyección para la perspectiva o las componentes de la dirección de proyección para la proyección paralela. El conocimiento de estas cantidades permite realizar una serie de transformaciones que finalizan en la obtención de las siguientes ecuaciones:

w = n 1 x + n 2 y + n 3 z – d 1 (110)

x´ = ((d + a n 1) x + (a n 2) y + (a n 3) z – a d 0) / w (111)

y´ = ((b n 1) x + (d + b n 2) y + (b n 3) z – b d 0) / w (112)

z´ = ((c n 1) x + (c n 2) y + (d + c n 3) z – c d 0) / w (113) Escribiendo estas ecuaciones de forma matricial se obtiene que:

11321

0321

0321

0321

1

1

1

z

yx

dnnndcncdncnc

dbnbnbdnbdanananad

wz

yx

−−+

−+−+

= (114)

Observe que los valores de x´, y´, z´, son obtenidos al dividir las cantidades de x1, y1, z1 por w. De la formulación matricial se obtiene que la matriz de transformación perspectiva general sobre un plano es:

1321

0321

0321

0321

dnnndcncdncnc

dbnbnbdnbdanananad

−−+

−+−+

(115)

De la misma forma en que se ha obtenido la matriz para la proyección perspectiva se procede a trabajar con las distancia en la proyección paralela. Esta vez se forma el segmento de recta entre la proyección del punto y el origen de coordenadas, lo cual determina que la matriz de transformación paralela general sobre un plano, quede como sigue:

1

03121

03211

03211

000 ddcncdncncdbnbnbdnbdanananad

−−−−−−−−−

(116)

133

Los valores de d, d0, d1 que se colocan en los componentes de esta matriz corresponden con las ecuaciones 107, 108, 109, respectivamente. El valor de la dirección de proyección se declara como DP (a, b, c). Las matrices de proyección presentadas permiten obtener el valor de las coordenadas x´, y´, z´ de los puntos sobre el plano de proyección. Si se toma el valor de R0 y N, que caracteriza el plano de proyección, para evaluar los puntos obtenidos, podrán apreciar que la distancia de todos al plano es igual a cero. Sin embargo, no es fácil imaginar como se observa esta proyección ni tampoco cómo se podrá representar bidimensionalmente. Por tal motivo, se estudiará el plano de proyección.

Plano de proyección El plano de proyección es el componente principal con que se trabaja en la programación gráfica, lo proyectado en este plano debe verse a través de la pantalla disponible en los monitores. A estas porciones de la pantalla, en los sistemas operativos gráficos, se le suele denominar ventana o formulario. El proceso de transformación de lo observado en el plano de proyección al formulario será visto posteriormente. Para hacer referencia a los puntos del plano de forma bidimensional se hace necesario establecer un sistema de referencia local sobre el plano de proyección, al cual se le denominará Sistema de Normalización. Determinación de los ejes del sistema de normalización El sistema de coordenadas normalizado, x’, y’, z’, se sitúa sobre el plano de proyección que se especifica al asignar, R0 (x0, y0, z0) en coordenadas mundiales y un vector normal N (n1, n2, n3) al plano de proyección. Debido a que el punto R0 es un punto conocido del plano al cual siempre se hace referencia, este será tomado como el origen del sistema de normalización, o sea, las coordenadas de ese punto para el plano serán (0, 0). La dirección del vector z’ se hace coincidir con la dirección de la normal del plano. Si la normal del plano no corresponde con un vector unitario, entonces z’ sería el vector unitario de la normal quedando como sigue:

NN

z =' (117)

Conociendo el vector z´, corresponde determinar uno de los ejes sobre el plano, por tanto, se recurre al álgebra vectorial. Un vector siempre puede descomponerse en dos vectores perpendiculares entre si, por lo que si se elige un vector, en

134

cualquier dirección, se puede establecer una componente sobre el plano y otra en la dirección de la normal. A este vector de referencia U en múltiples literaturas se le denomina vector hacia arriba, ya que debe indicar el sentido de la coordenada vertical sobre el plano a través de la componente. Observe, en la figura 112, la descomposición del vector U en dos vectores perpendiculares, uno sobre el plano que se denomina como Uq y otro definido en la dirección del vector normal k Un. El vector Uq definirá la dirección del vector Jq en el eje q positivo para el sistema coordenado del plano de proyección, por tanto, define el eje coordenado y del sistema de coordenadas normalizado.

Figura 112: Descomposición de un vector U sobre la normal y el plano

Siendo N el vector normal unitario al plano de vista podemos decir que la componente Un del vector U puede expresarse como N lo cual permite expresar el vector hacia arriba como la suma de sus componentes:

U = Uq + k N (118) Esto implica que

Uq = U – k N (119) Para obtener la magnitud escalar de k se emplea el hecho de que Jq descansa sobre el plano de proyección de manera que N es perpendicular a Uq, esto implica que el producto escalar entre los dos vectores será igual a cero (Uq • N = 0), y está definido geométricamente como:

θcosNUqNUq •=• (120) Donde; ? es el ángulo más pequeño entre Uq y N .como los vectores son perpendiculares el cos 900 es cero, por consiguiente el producto punto o escalar es cero, por tanto, se plantea:

Uq • N = U • N – k (N • N) = 0 (121) Despejando de la ecuación anterior el valor de k, se tiene:

U

Uq

k Un

N

135

2NNU

NNNU

k•

=••

= ya que, 2NNN =• (122)

Sustituyendo el valor de k en la suma vectorial de U dada por la ecuación 121, se tiene:

NN

NUUUq

•−=

2 (123)

Si el vector N es unitario, implica que 12 =N , por tanto:

( )NNUUUq •−= (124) Como el vector unitario en la dirección de la normal fue declarado como el vector z´, del sistema de coordenadas normalizado, la ecuación 124 puede escribirse como:

( ) ´´ zzUUUq •−= (125) Desde un comienzo se tomó la definición que el vector unitario Jq o y’esta en la dirección de Uq, por lo que se tiene:

UqUq

yJq == ' (126)

Por último se elige el vector de dirección Ip del eje positivo p, también denominado x’, de manera que sea perpendicular al Jq o y’ y por convención de manera que la tríada Ip, Jq, N o x’, y’, z’ formen un sistema izquierdo. La convención del sistema izquierdo está dada por el hecho de que cuando se está frente a un monitor se dice que la coordenada z del plano XY se encuentra en dirección del usuario, por tanto, corresponde con un sistema izquierdo. Conociendo que el producto cruz o vectorial de dos vectores genera un nuevo vector definido geométricamente perpendicular a ellos en una dirección tal que cumple con la regla de la mano derecha, se plantea que el vector Ip se determinará por el producto vectorial N x Jq y su magnitud será igual a:

θsenJqNJqN ⋅=× (127) Donde ? es el ángulo entre N y Jq. N x Jq es un vector perpendicular al plano N Jq y su dirección es la del pulgar de la mano derecha cuando los dedos están alineados con N y se giran hacia Jq a

136

través del ángulo más pequeño. Por consiguiente, el orden en que se establece el producto en cruz es importante. Como Ip o x’ es un vector unitario en el eje positivo de la tríada Ip, Jq, N o x’, y’, z’ y forman un sistema coordenado izquierdo, se puede plantear que:

´´´´

´yzyz

JqNJqN

xIp××

=××

== (128)

Los vectores Ip y Jq se encuentran sobre el plano de proyección pero están definidos en el sistema global por tanto, su expresión vectorial sería:

kcjbiaIp ppp ++= (129)

kcjbiaJq qqq ++= (130) La determinación del sistema de coordenadas de normalización es independiente del tipo de proyección. Por tanto, este, puede calcularse antes de comenzar proyectar el objeto sobre el plano utilizando las matrices retransformación descritas anteriormente. La figura 113a y 113b muestran la disposición del sistema de coordenadas normalizado en función de la dirección de la normal utilizada.

Figura 113: Disposición del sistema normalizado sobre el plano de proyección

Este sistema de coordenadas normalizado permitirá definir puntos sobre el plano en coordenadas p, q. Las magnitudes de p y q se tomarán en las direcciones de los vectores unitarios Ip y Jq, respectivamente. Las matrices de proyección permiten obtener, como se había explicado, las coordenadas tridimensionales del punto sobre el plano de proyección tal y como se observa en la figura 114. Para establecer los valores de la proyección a del punto A, en coordenadas del sistema normalizado (p, q) es necesario determinar la relación que existe entre los dos sistemas de coordenadas.

x y

z

R0

PP

N Jq

Ip

x y

z

R0

PP

N

Jq Ip

a) b)

137

Figura 114: Coordenadas globales de un punto sobre el plano de proyección

Relación entre las coordenadas del sistema global y el de normalización La relación se obtendrá a partir de demostrar como se pueden obtener las coordenadas globales a partir de conocer las coordenadas del punto sobre el plano de proyección. Obsérvese, en la figura 115a, que al punto P le corresponden (x, y, z) coordenadas globales descrita por el vector W al cual el corresponden (p,q) coordenadas normalizadas descrita por le vector V.

Figura 115: Relación entre las coordenadas del sistema global y el de normalización

Donde: R0; punto de referencia del plano. R; vector de posición de R0. W; vector de posición del punto P, ambos vectores R y W con respecto al origen de coordenadas (x, y, z). V; vector de posición de P con respecto al origen del plano en R0. La relación vectorial entre ambos sistemas se describe en la figura 115b la cual se escribe como:

W = R + V (131)

x y

z

R0

PP

N Jq

Ip

(x´, y´, z´) a

x

y

z q

p

R0 P

V

W R R

V

W

a) b)

138

El vector de posición V del punto P con respecto al sistema normalizado se expresa en coordenadas p en la dirección de Ip y coordenadas q en la dirección de Jq, según se puede observar:

JqqIppV += (132) Se conoce que las componentes de Ip y Jq expresadas en función de i, j, k son:

kcjbiaIp ppp ++= (133)

kcjbiaJq qqq ++= (134) Además el vector R expresado en función de i, j, k es:

kzjyixR 000 ++= (135) De manera que sustituyendo, las expresiones 133, 134, y 135 en la ecuación 131, y ordenándolas en función de i, j, k queda:

( ) ( ) ( ) kcqcpzjbqbpyiaqapxW qpqpqp ++++++++= 000 (136) Por tanto, las coordenadas globales de P pueden tenerse a partir de W. Escribiendo el punto P (x, y, z) se tiene:

( ) ( ) ( )( )qpqpqp cqcpzbqbpyaqapxP ++++++ 000 ;; (137) Descomponiendo se obtiene:

( )qp aqapxx ++= 0 (138)

( )qp bqbpyy ++= 0 (139)

( )qp cqcpzz ++= 0 (140) Como se observa, se puede afirmar que a todo punto que se encuentre en un plano de proyección le corresponderán coordenadas del sistema global y coordenadas normalizadas según la relación vistas en las ecuaciones 138, 139 y 140. Por el proceso descrito hasta el momento, se tienen las coordenadas globales del punto sobre el plano de proyección y se desea obtener las coordenadas en el sistema normalizado, por tanto, la problemática sería conociendo el vector x, y, z

139

del punto, determinar el vector p, q que le corresponde sobre el plano. Este problema presenta tres ecuaciones con dos incógnitas, lo cual es perfectamente soluble si se prescinde de una ecuación. Para una mejor comprensión de lo descrito hasta el momento en la proyección perspectiva, se expone el siguiente ejemplo: Ejemplo: Dada la proyección (figura 116) de un cubo unitario, ubicado en el origen del sistema cartesiano, dibuje la proyección que se obtiene sobre el plano que pasa por el punto R0 (1, 1, 0) y tiene como normal N (-1, -3, 0), si se conoce que el centro de proyección está situado en CP (3, 3, 0.5).

Figura 116: Cubo unitario ubicado en el origen de coordenadas

Solución: En todo el proceso de cálculo se utiliza el vector unitario de la normal, por tal motivo, se tomará como vector normal N (-0.32, -0.95, 0). Para formar los valores de la matriz de proyección perspectiva se deben calcular los valores de d, d0 y d1 según las ecuaciones 107, 108, 109, respectivamente, quedando como sigue:

d 0 = – 0.32 (1) – 0.95 (1) + 0 (0) = – 1.26 (141)

d 1 = – 0.32 (3) – 0.95 (3) + 0 (0.5) = – 3.79 (142)

d = d0 – d1 = –- 1.26 – (3.79) = 2.53 (143) Sustituyendo los valores necesarios, la matriz de proyección perspectiva queda como;

Mper =

79.3095.032.0

63.053.247.016.079.3032.095.079.3085.258.1

−−

−−−−−−

(144)

Los puntos del cubo forman por orden la matriz objeto quedando de la siguiente forma:

A

Coordenadas de los vértices

A (1, 0, 1) E (1, 0, 0) B (1, 1, 1) F (1, 1, 0) C (0, 1, 1) G (0, 1, 0) D (0, 0, 1) H (0, 0, 0)

B

C D

E F

G H

x

y

z

1

1

1

140

Obj =

00001111

0110011000110011HGFEDCBA

(145)

Recordar que a esta matriz se le debe agregar una fila más en la parte inferior que corresponde con la extensión homologa de la recta, con el objetivo que pueda ser multiplicada por la matriz de proyección perspectiva mostrada anteriormente. Realizando la multiplicación de ambas matrices (Mper * Obj) se obtiene la matriz del objeto transformado (Obj´) como sigue:

Obj´ =

''''''''

79.385.253.248.379.385.253.248.363.016.0047.016.369.253.2379.348.353.285.279.348.353.285.279.395.053.238.579.395.053.238.5

HGFEDCBA

(146)

Debido a que el vector homólogo, cuyo valor fue agregado, tiene que corresponder con el uno, se tienen que dividir los tres primeros valores por el último de la columna, quedando finalmente las coordenadas de la proyección perspectiva como sigue:

Obj´ =

''''''''

17.006.0014.083.094.0186.0122.1182.0122.1182.0133.0155.1133.0155.1

HGFEDCBA

(147)

La matriz Obj´, dada por la expresión 147, representa los valores de las coordenadas de los puntos sobre el plano de proyección, por tanto corresponde determinar el sistema normalizado, para ello se tomará un vector hacia arriba, U (0, 0, 1). Realizando las sustituciones necesarias, se obtiene como sistema normalizado la triada:

z´ = – 0.32 i – 0.95 j + 0 k (148)

y´ = 0 i + 0 j + 1 k (149)

x´ = – 0.95 i + 0.32 j + 0 k (150) Para determinar la relación que existe entre las coordenadas globales del punto en el plano con las coordenadas normalizada se escriben las siguientes ecuaciones:

141

x = 1 + p (– 0.95) + q (0) (151)

y = 1 + p (0.316) + q (0) (152)

z = 0 + p (0) + q (1) (153) De la ecuación 153, se obtiene de que q = z, por lo que sólo se debe despejar p de una de las ecuaciones 151, 152. Para el cálculo se tomó la siguiente expresión:

p = (x - 1) / – 0.95 (154) Por tanto, las coordenadas (p, q) de los puntos sobre el plano de proyección en el sistema normalizado queda:

A B C D E F G H P – 0.57 0 0.7 0 – 0.57 0 0.7 0 Q 0.86 1 0.94 0.83 0.14 0 0.06 0.17

El dibujo de la proyección obtenida se muestra en la figura 117. Observar que: 1. Las coordenadas del vértice F sobre el plano corresponde con el origen de

coordenadas ya que se tomó como R0 ese punto. 2. La altura de la arista BF dada por la diferencia (Fq – Bq) es igual a uno, lo que

permite valorar que el plano de proyección para por la arista, por tanto los vértices B y F del cubo están contenidos en el plano de proyección

3. Las coordenadas p de los vértices que forman aristas perpendiculares al plano XY son iguales

4. La distancia de los puntos proyectados D y H es la más pequeña de todas por ser la arista más alejada del centro de proyección se encuentra.

Figura 117: Representación de la proyección perspectiva del cubo sobre un plano

A

E

B C

D

F

G H

p

q

142

Ejercicios propuestos: 1. Obtenga las expresiones matemáticas para determinar las coordenadas

normalizadas en la proyección paralela. 2. Hacer una función que obtenga el sistema de coordenadas de normalización

de un plano de proyección. 3. Elabore una función que permita obtener las coordenadas normalizadas de un

punto a partir de conocer las coordenadas globales sobre el plano de proyección

4. Elabore una función en seudo código que permita obtener las coordenadas normalizadas de un punto, conociendo los componentes de una proyección perspectiva.

5. Construya una función en seudo código que permita obtener las coordenadas normalizadas de un punto, conociendo los componentes de una proyección paralela.

143

Capitulo 4: Transformaciones La representación de objetos tridimensionales requiere, en algunas ocasiones, garantizar la relación entre espacio y forma de entidades en un escenario. Las modificaciones a las entidades se realizan a través de herramientas gráficas que cambian los valores dentro de las estructuras, las estructuras como un todo, o la forma en que se observa la escena. Los procesos mediante los cuales se llevan a acabo las modificaciones se les denominan transformaciones.

Figura 118: Clasificación de las transformaciones

Las transformaciones se pueden agrupar en tres: de instancia, booleanas y de vista. La primera de las transformaciones, realiza su modificación en los valores de las componentes de las coordenadas de los vértices de entidades que han sido previamente creadas. La segunda, modifica la estructura de las entidades, en algunas ocasiones hace que desparezca estructuras completas o crea estructuras a través de la aplicación del álgebra booleana y la teoría de conjunto al trabajo con entidades gráficas. La tercera y última, se dedica a la gestión de vista y proyección del escenario, así como al estudio de normalización del espacio real en un espacio canónico y al tratamiento de los espacio de pantalla. La figura 118, muestra una estructura arbórea de la clasificación de las transformaciones. Se dedicará este tema al estudio de las transformaciones de instancia y de vista, dejándose para estudios superiores lo relacionado con las transformaciones booleanas.

Transformaciones de instancias La presentación de objetos tridimensionales en un dispositivo hace necesario realizar, además del mapeo de las coordenadas del punto, algunas transformaciones básicas como son las de traslación, puesta en escala y rotación. Cada una de ellas puede presentarse como una transformación matricial. Lo cual

Transformaciones

Instancia Vista Booleanas

Geométricas Coordenadas Dispositivo

Unión Sustracción Intersección

Normalización Recorte

144

permite construir transformaciones más complejas al utilizar multiplicación o concatenación matriciales. Las transformaciones de instancia tienen las siguientes propiedades: 1. Preservan las combinaciones afines de puntos. 2. Preservan las líneas y los planos 3. Preservan el paralelismo de líneas y planos 4. Los radios relativos son preservados 5. Los efectos en las áreas pueden ser predeterminados. La transformación de instancia geométrica se dedica a las transformaciones que sufren las entidades; y las de coordenadas, a las modificaciones que se realiza sobre el sistema de coordenadas el cual puede ser global o local en cada entidad. Para una mejor comprensión de las transformaciones geométricas que ocurren en los objetos en el espacio, se tomará la superficie triangular A , delimitada por los puntos P1, P2, P3 con las coordenadas que presenta la figura 119 siguiente:

Figura 119: Superficie triangula r ubicada en el espacio

Traslación La traslación consiste en desplazar un objeto cierta magnitud y dirección a partir de su posición original. La magnitud y dirección del desplazamiento esta descrito por un vector de la forma, V = a i + b j + c k. El vector se encuentra indicado en el sistema coordenadas cartesianas. La traslación de un punto P (x, y, z) a un punto P´(x´, y´, z´) dada por un vector V (a, b, c) se puede expresar a través de las siguientes relaciones matemáticas:

x = x + a (155)

y = y + b (156)

z = z + c (157)

P1

P3 P2

x

z

y

P1 (1, 2, 0) P2 (2, 0, 2) P3 (0, 1, 1)

145

Observe que esta relación surge de realizar una transformación geométrica, o sea, movimiento del punto. Si se escribe esta relación en forma matricial se obtiene:

144414

11000100010001

1´´´

xxx

zyx

cba

zyx

•= (158)

Para realizar el tratamiento matricial fue necesario aumentar la matriz 3x3 utilizando las coordenadas homologas. Por tanto, la representación de la matriz de traslación (T) de coordenadas sería:

1000

100010001

cba

T = (159)

Si se aplica la transformación por coordenadas, el cambio se produciría en el sistema de coordenadas, por lo que se plantea: se toma un punto P(x, y, z) que se desea convertirán en P´(x´, y´, z´) debido a la traslación del vector V (a, b, c). Por tanto, al mantener el punto fijo y desear desplazar los ejes coordenados se necesita variar la dirección y sentido del vector V para –V, o sea, el eje coordenado se desplazará –V (-a, -b, -c), las nuevas relaciones matemáticas serían:

x´ = x – a (160)

y´ = y – b (161)

z´ = z – c (162) De las relaciones anteriores expresadas, se puede llegar a obtener la matriz de traslación como sigue:

1000

100010001

1

cba

T−−−

=− (163)

Esta matriz obtenida es la matriz inversa de T y se puede demostrar ya que si se multiplica T * T-1 se obtiene la matriz de identidad. Observe el planteamiento de la

146

matriz la traslación y la representación gráfica de la superficie A, del ejemplo inicial, cuando se desea trasladar según el vector libre V (1, 2, 1). El objeto trasladado A´ será el resultado de multiplicar la matriz de traslación (T) por el objeto (A).

T * A = A’ (164)

343444

111231324132

111120102021

1000110020101001

xxx

=• (165)

El modelo geométrico que describe la traslación del cuerpo dada por la multiplicación de las matrices expuesta, se muestra a continuación:

Figura 120: Traslación de la superficie triangular

La traslación como transformación de instancia es muy utilizada en las aplicaciones gráficas para mover objetos o entidades geométricas situándolas en una posición determinada. Por tal motivo, se propone realizar un ejercicio cuyo enunciado es: Ejemplo: Realizar el algoritmo de una herramienta, en seudo código, que permita trasladar una entidad geométrica según un vector determinado por el usuario. Solución: La herramienta que se solicita debe tener una interfase con el usuario de la aplicación por lo que se le asignará un nombre para que pueda ser solicitada. La herramienta se nombrará MOVER. Este nombre se propone debido a que en el actuar cotidiano se toma este verbo para indicar el traslado en cualquier dirección. La primera solicitud de esta herramienta al usuario será Seleccionar Entidades. Esto permite que se puedan mover todas o algunas de las entidades que han sido

P1

P3 P2

x

z

y P1´

P2´ P3´

147

creadas en la aplicación, posteriormente, se le solicitará el usuario el vector de desplazamiento a través de la localización de los puntos extremos del segmento. El sentido del vector estará dado por el orden de entrada de los puntos, o sea, siempre será de P1 a P2. Una vez entrado el vector se realiza la operación devolviendo los nuevos valores de los puntos en las entidades seleccionadas. Observe el algoritmo propuesto. 1 Nombre de la herramienta: Mover 2 Escribir en el área, Seleccionar entidades: 3 Invocar el proceso de selección y formar ET 4 Escribir en el área, Localice un punto inicial de referencia: 5 Tomar el valor de P1 6 Escribir en el área, Localice un punto final referencia: 7 Tomar el valor de P2 8 Calcular el vector de traslación V 9 Mientras la lista ET no esté vacia 10 Reconocer el tipo de entidad y según la estructura, trasladar los puntos

que la caracterizan la magnitud del vector V 11 Devolver la entidad transformada a la lista de entidades 12 Eliminar la entidad de la lista de selección

Algoritmo 18: Solución en seudo código de la herramienta MOVER

El algoritmo propuesto para la solución se encuentra simplificado ya que no se ha tenido en consideración los errores en los que puede incurrir el usuario al suministrar los datos. En la línea número 3, el usuario está llenando la lista de selección por entidades de distintos tipos y estructura. Desde la línea 4 hasta la 8 la herramienta va construyendo el vector desplazamiento de todas las entidades. De la línea 9 hasta el final el algoritmo entra en un ciclo de evaluaciones sucesivas donde a través de su identificador reconoce a la entidad y de acuerdo a su estructura realiza las modificaciones de los puntos. Una vez realizado este proceso, elimina la entidad de la lista, tomando otro elemento. De forma implícita el algoritmo propuesto utiliza una función que obtiene un punto trasladado a la cual se le entra un punto y un vector.

Cambio de escala La escala modifica las dimensiones del objeto, tornándolo mayor o menor en relación a este . El factor de escala S, determina si la escala es una ampliación, para lo cual S > 1, o una reducción tomando, S < 1. En un sistema cartesiano tridimensional existen 3 factores de escala, uno por cada eje. Así la transformación de un punto P (x, y, z) a un punto P´(x´, y´, z´) daría la siguiente relación:

X´= Sx * x; Y´= Sy * y; Z´= Sz * z (166)

148

Observe que, al tomar un factor de escala para cada eje, se permite obtener diferentes configuraciones de proporción en cuerpo. Planteando la matriz asociada al cambio de escala se tiene que :

P´= S * P (167) En forma matricial, utilizando las coordenadas homologas, se escribiría

11000

000000000

1

´´´

zyx

SzSy

Sx

zyx

•= (168)

La aplicación de esta matriz directamente sobre un objeto implica que se realizará el cambio de escala con respecto al origen de coordenadas. Por tanto, un objeto puede trasladarse producto del escalado además de cambiar los valores de sus coordenadas. Para eliminar este inconveniente, se crean en las aplicaciones gráficas una herramienta que permite realizar el escalado a partir de un punto cualquiera que introduzca el usuario.

Rotación La rotación en tres dimensiones es mucho más compleja que la rotación en dos dimensiones. La rotación en dos dimensiones está prescrita por un ángulo θ y un centro de rotación P. Las rotaciones en tres dimensiones requieren de un ángulo de rotación y un eje. No obstante, se puede afirmar que la rotación en dos dimensiones es igual a la rotación sobre el eje Z. Se define como rotación canónica cuando se elige uno de los ejes coordenados positivos x, y, z como eje de rotación. Por tanto, la rotación se realiza con respecto al origen. Observe en la figura 121, un análisis gráfico de la rotación respecto al eje z:

Figura 121: Rotación con respecto al eje Z

P1 P’1 ? Y X

Z Y

X

Y’

P1

X’

x

x’ - ? Z

a) b)

y

149

La figura 121a, representa una proyección isométrica de la rotación del punto P1, ubicado sobre el plano XY, con relación al eje Z. La figura 121b, muestra una proyección ortogonal del plano XY para la compresión de la obtención de las ecuaciones de rotación. La rotación de P1 una magnitud angular θ en sentido positivo (contrario al movimiento de las manecillas del reloj) es similar a realizar la rotación del sistema de coordenadas una magnitud anular θ en sentido negativo (a favor al movimiento de las manecillas del reloj). Después de observar las relaciones geométricas se llega a las siguientes ecuaciones:

x´ = x cos θ - y sen θ (169)

y´ = x sen θ + y cos θ (170)

z´ = z (171) La matriz de rotación una magnitud angular θ asociada con este eje k, después de descomposición de estas ecuaciones y utilizando las coordenadas homologas, sería:

Rθ, k

1000

010000cos00cos

θθθθ

sensen−

(172)

Una deducción análoga lleva a obtener las matrices de rotación con respecto al eje j e i, para ser consecuente con el sentido positivo del ángulo de rotación se puede decir que este, se elige de acuerdo a la regla de la mano derecha.

- Rotación en la dirección de j:

Rθ, j

1000

0cos0001000cos

θθ

θθ

sen

sen

− (173)

- Rotación en la dirección de i:

Rθ, i

1000

0cos00cos00001

θθθθ

sensen−

(174)

150

Observar que las matrices están orientadas en la dirección del vector unitario (i, j, k), según la dirección del pulgar para la regla de la mano derecha y que siempre se efectúa la rotación con respecto al origen de coordenadas. Realizando un estudio más detallado sobre el proceso de rotación se puede llegar a obtener la reflexión de un objeto. Se entiende por reflexión al fenómeno físico que ocurre cuando se observa nuestra imagen en un espejo. En el estudio de las transformaciones de instancia se entiende por reflexión a la colocación de un objeto de forma simétrica con respecto a si mismo, tomando como referencia un plano o un eje. Luego si se toman los planos principales XY, YZ, ZX y los ejes x, y, z, se pueden obtener seis matrices de reflexión. Observe la formación de la matriz de reflexión sobre el plano XY. Cualquier objeto que se encuentre reflejado con respecto al plano XY, tendrá las siguientes relaciones entre sus coordenadas:

x’ = x y’ = y z’ = - z (175) Las coordenadas x, y permanecen constantes mientras que la coordenada z cambia de sentido. Estas relaciones se pueden escribir de forma matricial, agregando las coordenadas homologas como se expresa en 176. Observe que se coloca con signo negativo el eje perpendicular al plano de reflexión. Por tanto, se torna sencillo escribir las matrices para la reflexión con los planos YZ, ZX. Tómese como ejemplo la reflexión de la superficie A de la figura 119 en el plano YZ.

Fxy

1000

010000100001

− (176)

AL escribirse de forma matricial la solución del ejercicio se tendría:

FYZ * A = A’ (177) La multiplicación de la matriz de reflexión sobre el plano YZ por la matriz del objeto A dará como resultado la nueva posición del objeto A´. Realizando el desarrollo matricial se tiene:

111

120102021

111

120102021

1000

010000100001 −−

=•

(178)

151

Observe que a la matriz objeto se le agregó las coordenadas homologas al final de cada punto. Por tanto, siempre se debe verificar que la matriz de resultado debe poseer al final de la columna de cada punto el valor 1 correspondiente a la coordenada homóloga del objeto transformado. Observe el resultado gráfico en la figura 122. La figura 122 muestra las superficies antes y después de la reflexión. Observe que cada punto a sufrido una rotación de 180 grados con respecto al plano YZ. Como el objeto se encuentra apoyado sobre el plano de reflexión este punto no varia causando la sensación de haberse reflexionado sobre ese punto.

Figura 122: Reflexión sobre el plano YZ

La reflexión sobre un eje es un poco más difícil de poder apreciar sino existe una buena abstracción o imaginación espacial, no obstante la reflexión sobre el eje x implicaría las siguientes relaciones entre sus coordenadas:

x’ = x y’ = - yz’ = - z (179) La coordenada x permanece constante mientras que las coordenadas y, z cambian de sentido. Estas relaciones se pueden escribir de forma matricial, agregando las coordenadas homologas de la siguiente forma:

Fx

1000

010000100001

−−

(180)

Observe que la matriz obtenida es igual a realizar una rotación de 180 grados con resècto al eje x. De forma análoga a la reflexión sobre un eje, se puede obtener la reflexión sobre el origen de coordenadas. En este caso, las relaciones entre las coordenadas serán todas negativas quedando la matriz como sigue:

P1

P3 P2

x

z

P’1

P’2

y

152

F

1000

010000100001

−−

(181)

Transformaciones compuestas. Concatenación.

Se han descrito las transformaciones de instancia simples que se pueden realizar sobre una entidad geométrica cualquiera. Transformaciones más complejas se forman a través de sucesivas transformaciones simples que equivalen a la multiplicación o concatenación de las matrices que las definen. La descripción del proceso de transformaciones sucesivas equivale a decir que transformación sería necesario realizar primero y cual después. Esto es sinónimo de plantear que la matriz M1 opera primero sobre la entidad (OBJ) y después el resultado se pasa a otra matriz M2. Si la matriz MT se describe como los pasos sucesivos que se aplican a la entidad entonces de denota como:

MT(OBJ) = M2 (M1 (OBJ)) (182) Por tanto, se puede decir que MT será la concatenación de M2 y M1 y se escribe como:

MT = M2 * M1 (183) En general a concatenación de matrices no es conmutativa, esto quiere decir que:

M2 * M1 ? M1 * M2 (184) La concatenación de matrices sirve para obtener expresiones matemáticas que resuelven una situación dada optimizando el tiempo de procesamiento numérico y por consiguiente la solución del problema. Observe un ejemplo que permite valorar los aspectos tratados. Ejemplo: Obtener la matriz de alineación de un vector cualquiera V con el vector unitario en la dirección positiva del eje z; Av, k. Observe la figura 123a. Solución: Para realizar el alineamiento del vector V al vector k, se realizará en principio una rotación del vector sobre el vector i. esto es Rθ, i y posteriormente una rotación sobre el eje j, esto es Rθ, j. solo con dos transformaciones se logrará la alineación, se conocen cuales son las matrices a utilizar en ambos casos, según las expresiones 174 y 173 respectivamente, lo que se necesita es determinar el valor de los ángulos o sus componentes trigonométricos.

153

Figura 123: Primera transformación de un vector para la alineación

El ángulo θ1 sobre el cual se realizará la rotación con respecto al eje x, se puede obtener a partir de la proyección de V sobre el plano YZ. Por tanto,

sen θ1 = 22 vzvy

vy

+ cos θ1 =

22 vzvy

vz

+ (185)

La matriz de rotación sobre el eje x sería:

Rθ1, i

1000

0vzvy

vz

vzvy

vy0

0vzvy

vy

vzvy

vz0

0001

2222

2222

++

+−

+ (186)

Al realizar la rotación sobre el eje x del vector V se obtiene el vector V1, cuyas coordenadas se muestran en la figura 123b. La figura 124 muestra la segunda transformación a realizar. En este caso, se necesitará determinar las componentes trigonométricas del ángulo θ2. El ángulo θ2 sobre el cual se realizará la rotación con respecto al eje y, se puede obtener a partir de la proyección de V1 sobre el plano ZX. Esta rotación es negativa por lo que el ángulo es – θ2. Por tanto,

sen (– θ2) = – sen θ2 = 222 vzvyvx

vx

++ (187)

V

k

x

z

y o

V

x

z

y o

V1 22 vzvy +

vx vy

vz

θ1

θ1

V (vx, vy, vz) V1 (vx, 0, 22 vzvy + )

a) b)

154

cos (– θ2) = cos θ2 = 222

22

vzvyvx

vzvy

++

+ (188)

Figura 124: Segunda transformación para alinea un vector

La matriz de rotación sobre el eje y sería:

R-θ2, j

1000

0vzvyvx

vzvy0

vzvyvx

vx0010

0vzvyvx

vx0

vzvyvx

vzvy

222

22

222

222222

22

++

+

++

++

++

+

(189)

Sustituyendo los valores de los radicales por términos más pequeños según se muestra

222 vzvyvxV ++= (190)

22 vzvy +=λ (191) Como la matriz de alineación es:

A v, k = R -θ2, j * R θ1, i (192)

V2 (0, 0, 222 vzvyvx ++ )

V1 (vx, 0, 22 vzvy + )

V

x

z

y o

V1 22 vzvy +

vx vy

vz θ2

V2

155

Se obtiene como resultado

A v, k =

1000

0Vvz

Vvy

Vvx

0vyvz

0

0V

vz*vxV

vy*vxV

λ−

λ

λ−

λ−λ

(193)

Observe que puede ocurrir que el valor de λ sea igual cero, lo que provocará que se indefina la matriz calculada, por tanto, se debe estudiar que ocurre cuando el vector V se encuentra sobre el eje x, deseándose obtener su alineación. La alineación obtenida puede ser diferente si primero se hace una rotación sobre el eje y y después una rotación sobre el eje x, en cuyo caso la matriz de alineación no coincidirá con la expresión 193. El proceso de desalineación del vector V con respecto a k puede ser descrito por la siguiente concatenación:

A v, k = R -θ1, i * R θ2,j (194) El ejemplo desarrollado muestra la concatenación de dos matrices, sin embargo, existen muchos casos en los que intervienen más de dos en la solución de un proceso de transformaciones. Por otro lado, si se obtiene la matriz de transformación general, no se ha llegado a un resultado aplicable a una función, orden o herramienta. En tal sentido se expone el siguiente ejemplo. Ejemplo: Elabore una función bidimensional (plano XY) que permita obtener las nuevas coordenadas de un punto a partir de conocer su ubicación inicial, el punto con respecto al cual se rota y la magnitud del ángulo de rotación. Solución: El ejemplo hace la solicitud de una función, por tanto, no se hace necesario realizar una interfase que solicite al usuario los valores de entrada, sino, que simplemente ya fueron entrados y validados en otra parte de la aplicación. El nombre que tendrá la función será RP2D (Rotación en el Plano Bidimensional). La representación gráfica de lo solicitado por el ejemplo se muestra en la figura 125. Observe que el punto P (x, y) será rotado una magnitud θ con respecto al centro de rotación CR cuyo valor será ofrecido por el usuario. Escribiendo en notación matemática se debe obtener la rotación sobre CP en la magnitud θ para un punto cualquiera, esto es:

156

P´ = R θ, CP * P (195)

Figura 125: Rotación de un punto con respecto a un centro cualquiera

Se conoce que la matriz de rotación sólo puede trabajar con respecto al origen de coordenadas, por tanto, se debe desplazar el centro de rotación hacia el origen aplicando una transformación de traslación como muestra la figura 126a. Después se realiza la rotación de θ en la dirección de k, según se observa en la figura 126b y por último, se restituye la ubicación del punto CP como se muestra en la figura 126c. Escribiendo el proceso de transformación que se obtiene:

1. Trasladar CP al origen (T- CP) 2. Girar objeto una magnitud θ respecto a k (R θ,k) 3. Invertir el primer paso, trasladar CP a su lugar de origen (T CP)

Figura 126: Transformaciones necesarias para la rotación bidimensional

Luego planteando el proceso de concatenación se tiene:

R θ, CP = T CP * R θ,k * T- CP (196)

x

y

CR = 0 x

?

y

x 0

y P’ (x´, y´, z´)

CR

CR = 0

P

P

a) b) c)

P (x, y, z)

x

?

o

y P’ (x´, y´, z´)

CR

157

R θ, CP =

1000

CPz100CPy010CPx001

*

1000

010000cossen00sencos

θθθ−θ

*

1000

CPz100CPy010CPx001

−−−

(197)

Observe que la matriz de rotación Rθ, CP fue trabajada como tridimensional a pesar de conocer que su efecto sólo se producirá en el plano XY, esto permite que el punto pueda estar ubicado a cualquier altura del plano y la rotación se esté realizando sobre un eje paralelo a k que pasa por el punto CP. Como resultado de la multiplicación se obtiene que:

R θ, CP =

0000

0100cos*CPysen*CPxCPy0cossencos*CPxsen*CPyCPx0sencos

θ−θ−θθθ−θ+θ−θ

(198)

Según la expresión 195, para obtener los valores de las componentes del punto cuando se efectúa la rotación, se debe multiplicar esta matriz por el punto P, lo que resulta las siguientes ecuaciones:

x’= x cos θ - y sen θ + CPx (1 – cos θ) + CPy sen θ (199)

y’= x sen θ + y cos θ + CPy (1 – cos θ) – CPx sen θ (200)

z’= z (201) Observe que al ocurrir la rotación en el plano XY sólo se afectan las coordenadas de dicho plano a pesar de utilizar puntos que poseen valores tridimensionales. Una vez obtenidas las expresiones que permiten calcular las coordenadas del nuevo punto P’, se propone el siguiente algoritmo, en forma de sudo código, para dar solución al ejercicio. 1 Nombre de la función: RP2D 2 Entran: P punto que se rotará 3 CP punto centro de rotación 4 θ magnitud angular de rotación 5 Sale: PR punto rotado 6 PRx = Px cos θ - Py sen θ + CPx (1 – cos θ) + CPy sen θ 7 PRy = Px sen θ + Py cos θ + CPy (1 – cos θ) – CPx sen θ 8 PRz = Pz

Algoritmo 19: Solución en seudo código de la función RP2D

158

En las líneas 6, 7 y 8 del algoritmo 19, se han colocado los resultados obtenidos en las ecuaciones 199, 200 y 201. Por tanto, el proceso de multiplicación de matrices para obtener una transformación general se realiza como trabajo de mesa y sólo se toma en consideración el resultado obtenido en forma de expresión. Luego, utilizando las matrices y la concatenación de ellas, se pueden realizar herramientas de edición de entidades geométricas en cualquier aplicación, como ejemplo de ello se expone el siguiente enunciado: Realizar el algoritmo, en forma de seudo código, de una herramienta que permita la rotación de entidades en el plano XY en una aplicación gráfica. La solución de este ejercicio tiene que ser concebida como una herramienta con interacción usuario – máquina para solicitar los datos. La solicitud determina que se coloque un nombre que invoque la herramienta, por tanto, se nombrará Rotar2D. Con este nombre se hace pensar al usuario que sólo trabajará con puntos declarados en el plano y que la rotación se efectuará con respecto a un punto sobre el plano. La primera consideración mantiene la propuesta realizada, cuando se declaró el punto, de que siempre se almacenaría en la base de datos los puntos en tres dimensiones. La segunda consideración fue analizada cuando se realizó la función RP2D. La propuesta de interfase se puede observar en la secuencia 11. En la línea dos, se hace referencia al proceso de selección cuyo resultado es una lista de entidades a las cuales se les aplicará la rotación. Las líneas 3 y 4 hacen la entrada de los valores necesarios para el cálculo, los cuales deben ser validados para no incurrir en errores. La forma de salir de la herramienta si existe algún arrepentimiento del usuario será con las teclas de Escape y Enter, tal y como ha sido descrito a lo largo de este libro.

Entrada: Rotar2D ↵ 1 Seleccionar entidades: selección ↵ 2 Punto de rotación: 25, 44 ↵ 3 Ángulo de rotación: 45 ↵ 4 Entrada: 5

Secuencia 11: Interfase usuario aplicación para la Herramienta Rortar2D

Una vez que han sido entrados los datos por el usuario, la herramienta debe tomar cada entidad según su estructura y hacer la transformación en el lugar donde se encuentren las coordenadas de los puntos. La propuesta de seudo código se encuentra expuesta en el algoritmo 20. 1 Nombre de la herramienta: Rotar2D 2 Escribir en el área, Seleccionar entidades: 3 Invocar el proceso de selección y formar ET 4 Escribir en el área, Punto de rotación:

159

5 Tomar el valor de CP 6 Escribir en el área, Ángulo de rotación: 7 Tomar el valor de θ 8 Mientras la lista ET no esté vacia 9 Reconocer el tipo de entidad y según la estructura, formar una lista de

puntos LP 10 Desde i = 0 hasta i = longitud de LP menos 1, hacer 11 PRi = RP2D (LPi, CP, θ) 12 Devolver la lista de puntos PR a la estructura de la entidad

Algoritmo 20: Solución en seudo código de la herramienta ROTAR2D

En el algoritmo 20 propuesto, se han eliminado los aspectos relacionados con la validación de la entrada de datos. Es necesario tener en consideración la forma en que se le pedirá al usuario la magnitud del ángulo. Si la solicitud es en grados, se hace necesaria la conversión para su utilización en las ecuaciones colocadas. En la línea 9, se ha utilizado un recurso adicional que pudiera ser sustituido por evaluaciones sucesivas en función del identificador de cada entidad, asumiendo como LP a la parte de la estructura que contiene los valores de las coordenadas de los puntos. Existen otras herramientas u órdenes que utilizando la concatenación provocan la aparición de nuevas entidades geométricas en la lista de entidades que formará parte de la base de datos de la aplicación. Ejemplo de herramientas se tiene la creación de una entidad que sea espejo de otra; cuando se desea copiar o clonar una entidad en otra parte del área de trabajo. Una orden asociada a la creación de múltiples copias son los arreglos rectangulares, circulares, cilíndricos, esféricos, etc. En todos los casos es necesario realizar el siguiente procedimiento: 1. Invocar la orden o herramienta que se desea. 2. Seleccionar el o los objetos que se “transformaran” . 3. Solicitar los datos al usuario. 4. Transformar magnitudes y/o base de datos . 5. Enviar el resultado a la lista de entidades. Los dos primeros pasos de este procedimiento coinciden con las tres primeras líneas del algoritmo 20. los pasos tres y cuatro del procedimiento dependen de la transformación que se desea obtener y será el resultado de la multiplicación de varias transformaciones simples. Observe un ejemplo donde se aplica este procedimiento. Si en una aplicación se desea tener una herramienta que permita obtener una entidad geométrica con simetría a otra a partir de un eje en el plano, se tendría que considerar varios aspectos en los pasos 3 y 4 del procedimiento presentado. Auxiliados de la figura 127a, donde se muestra un polígono P simétrico a un polígono Q tomándose como eje de simetría al segmento E, se discutirán algunos aspectos relacionados con el procedimiento.

160

Figura 127: Aspectos a considerar en la simetría de entidades

La herramienta permite obtener al polígono Q simétrico con respecto al segmento E, por tanto se hace necesario que el usuario entre como datos los extremos del segmento de recta. Posteriormente se realizaran las transformaciones necesarias obteniéndose el polígono Q en el orden que aparece el la figura 127a. Sin embargo, el orden provocaría que la normal de la nueva entidad se sitúe contraria a la que posee el polígono P, por tanto, se tiene que reordenar quedando como se muestra en la figura 127b. De forma similar se podría pensar en una orden que obtenga un arreglo rectangular de entidades como se puede apreciar en la figura 128. en este caso se tiene un polígono P antihorario que ha sido copiado formando un arreglo rectangular de 2 x 2 entidades, cuyas copias también poseen sentido negativo.

Figura 128: Arreglo rectangular

Para la formación del arreglo es imprescindible hacer varias preguntas al usuario que podría ser: Cantidad de filas, Cantidad de columnas, Separación entre filas, Separación entre columnas. Estas permitirían obtener los datos necesarios para realizar las transformaciones requeridas a tales efectos. Debido a la gran variedad

P5 P4

P3 P2

P1

A5 A4

A3 A2

A1

B5 B4

B3 B2

B1

C5 C4

C3 C2

C1

P1

P2 P3

P4 P5 Q5 Q4

Q3 Q2

Q1

E1

E2

Q2 Q3

Q4 Q5

Q1

a) b)

161

de órdenes o herramientas que pueden ser propuestas en una aplicación gráfica se presenta el siguiente listado de ejercicios propuestos: Ejercicios propuestos: 1. Estudie cuales de estas transformaciones están disponibles en el lenguaje de

programación que trabaja. Compare los aspectos teóricos abordados con los datos que solicitan esas funciones.

2. Construya una función, en seudo código, que obtenga las coordenadas de un punto trasladado a partir de conocer sus coordenadas de origen y un vector dado por sus puntos extremos.

3. Elabore una herramienta que permita MOVER entidades geométricas en cualquier dirección del espacio.

4. Hacer una herramienta, en forma de seudo código, que permita ESCALAR una entidad cualquiera a partir de un punto dado por el usuario y según los valores de escala introducidos en los diferentes ejes.

5. Construir una herramienta que permita ROTAR un objeto según un eje en el espacio, el cual será introducido por los puntos extremos de un segmento de recta.

6. Realizar una herramienta ESPEJO que haga la reflexión de objetos, dado un plano cualquiera , en forma se seudo código. Debe permitir al usuario determinar si elimina o no el objeto antes de reflexionar con el objetivo de que se exhiban los dos.

7. Construir una herramienta, en forma de seudo código, de COPIAR un objeto o varios seleccionados previamente, una o más veces. Analice cuales serían las variantes que puede necesitar un usuario cualquiera y las posibles de programar.

8. Hacer una orden que permita realizar arreglos rectangulares de Objetos en el plano, en forma de seudo código.

9. Realizar una orden, en forma de seudo código, que permita obtener arreglos polares de objetos en el plano. Analice la posibilidad de que los objetos copiados mantengan la posición angular con respecto al sistema global o estos giren en función del ángulo asignado en su arreglo.

10. Elabore una orden que permita realizar arreglos en el plano del tipo polar o rectangular a solicitud del usuario, en forma de seudo código.

11. Construir una orden que realice el arreglo de entidades en el espacio, permita al usuario elegir entre estos tipos de arreglo, rectangular, cilíndrico y esférico.

Transformaciones de vista Exhibir una proyección de una entidad geométrica significa mapear las coordenadas de los vértices (puntos) y aristas (líneas) que forman el dibujo en las coordenadas adecuadas del dispositivo o estación de trabajo en donde ha de presentarse. Esto se lleva a cabo mediante transformaciones de coordenadas llamadas como transformaciones de vista.

162

La visualización tridimensional de objetos está muy ligada al periférico de salida, ya que en función de la razón de aspecto, y del tamaño del área de exhibición dependerá la localización de los puntos en pantalla (pixels). El proceso de proyección de cuerpos sobre un plano, provoca que todo el espacio real se proyecte, lo cual no coincide con el fenómeno visual humano. El proceso de visualización humano, provoca que sólo se observe una parte del universo, requiriendo el desplazamiento de los ojos o la cabeza cuando se desea observar hacia otra posición. Incluso, cuando se realiza la observación, en una dirección determinada, no se aprecia con nitidez todo el volumen. Permanecen en el foco de visualización aquellos aspectos que se desean destacar y el resto se convierte en algo poco nítido. Algo parecido a este proceso, es lo que se sigue al hacer una foto, salvo que resulta más conveniente considerar que la lente se encuentra detrás de la película en la cámara. Todo ello determina, que se debe conocer, de todo el espacio real, cual parte será el volumen que se desea visualizar en la pantalla del monitor. A dicho volumen se le llamará, volumen de vista. El volumen de vista puede ser irregular y variar según las necesidades del observado, por consiguiente, las dimensiones del volumen varían mientras la pantalla del periférico permanece constante. Es por ello que se debe transformar cualquier volumen de vista a un volumen perfectamente definido que se denominará canónico. Al proceso de transformaciones necesarias para llevar el volumen de vista al volumen canónico se le denomina Normalización. Luego, el objetivo de las transformaciones de vista es reduc ir el volumen de vista a un espacio, pequeño y bien definido, realizar el recorte, o sea, eliminar la información no desea del resto de los objetos del espacio real y posteriormente, realizar los procesos de proyección y transformaciones bidimensionales con lo cual se obtiene, finalmente, la vista o proyección de la entidad geométrica, en el sistema coordenado del dispositivo. Observe que se pueden definir tres procesos de trabajo en lo expresado con anterioridad: 1. Transformación de normalización (N) se encarga de transformar las

coordenadas globales en coordenadas normalizadas. 2. Recorte del espacio real que no se visualizará. 3. Transformación de visualización en la estación de trabajo (W) que mapea las

coordenadas normalizadas de dispositivo a las coordenadas de dispositivo físico.

Además, lo expresado permite definir que, en el proceso de transformación de vista, intervienen tres sistemas de coordenadas. 1. Sistema de coordenadas global o mundial (WCS): sistema cartesiano derecho

en cuyas coordenadas se escribe la imagen que va ha exhibirse. 2. Sistema coordenado de dispositivo normalizado (NDCS): es un sistema

coordenado izquierdo en el que el área de exhibición del dispositivo de

163

exhibición virtual corresponde al cubo unitario (1 x 1 x 1) cuya esquina inferior izquierda está en el origen del sistema cartesiano.

3. Sistema coordenado del dispositivo físico (PDCS): sistema coordenado que corresponde al dispositivo o estación de trabajo en donde la imagen del dibujo o modelo se presentará.

El orden de estos sistemas, figura 129, requiere de pasar la entidad geométrica del sistema global al sistema del dispositivo a través de un sistema normalizado.

Figura 129: Sistemas que intervienen en la transformación de vista

Volumen de vista y canónico. El volumen de vista acota una región en el espacio coordinado global que se recortará y proyectará sobre el plano de vista. Para ello, requiere de la especificación de un lugar de origen para la proyección (o punto de vista), una ventana sobre un plano de proyección (denominado plano de vista), y dos planos de recorte frontal (acá) y posterior (allá) paralelos al plano de vista. Para definir un volumen de vista perspectivo, figura 130, que se proyecte sobre una ventana rectangular especifica, definida en el plano de vista, se designaran las coordenadas de la esquina inferior izquierda L (Pmin, Qmin) y la esquina superior derecha R (Pmáx, Qmáx) en coordenadas del sistema normalizado. Puede usarse los vectores Ip y Jq (x’, y’) para obtener las coordenadas globales equivalente de L y R. Esta ventana, definida sobre el plano de proyección indica que el observador sólo desea que se proyecte en el plano el volumen que quedará definido es ese espacio semi-infinito. Observe que se debe acotar el volumen en su profundidad ya que en la vista perspectiva los objetos muy distantes del plano de vista, al proyectarse, aparecen como puntos indistinguibles, mientras que los objetos muy cercanos al centro de proyección parecen tener una estructura inconexa. El volumen finito se delimita a través de planos de recorte frontal (acá) y posterior (allá) paralelos al plano de vista. Estos planos se especifican al dar la distancia frontal f y la distancia posterior b relativa al punto de referencia del Plano de vista Ro y medidas a lo largo del vector normal N. Observe en la figura XXX, que la distancia de b tiene que ser mayor o igual a f y en cuanto a los signos pueden ser

x

z WCS

y

z´ NDCS

y

x

y

PDCS

164

positivas o negativas ambas, en función de la declaración de la normal sobre el plano de vista.

Figura 130: Volumen de vista perspectivo

Luego, el volumen de vista perspectivo forma una pirámide de base rectangular o cuadrada truncada paralelamente a la base. Observe que para delimitar los puntos sobre la ventana se hace necesario poseer un sistema normalizado sobre el plano de proyección o vista.

Figura 131: Volumen de vista paralelo

El volumen de vista paralelo, figura 131, queda definido de igual forma que el perspectivo peo tomando como lugar de origen de proyección, la dirección de

x

y

z

i j

k f

b

N

Jq

Ip R0

R

L

Rf

Lf

Rb

Lb acá

allá

CP

Volumen de Vista

x

y

z

i j

k f

b

N

Jq Ip

R0

R

L

Rf

Lf

Rb

Lb

acá allá

DP

165

proyección. En este caso el volumen corresponde con un prisma de base rectangular o cuadrada, que será recto, si la DP coincide con la N, sino será inclinado. Ambos volúmenes de vista deben transformarse para obtener los volúmenes canónicos de las respectivas proyecciones. En consecuencia, se definirán los volúmenes canónicos: • El volumen de vista canónico para proyecciones perspectiva es la pirámide

truncada cuyas caras están definidas por los planos X = Z, X = -Z, Y = Z , Z= Zf, Z=1. Observe, en la figura 132a, que es necesario calcular Zf. La transformación correspondiente a la normalización N per se verá posteriormente.

• Este volumen de vista canónico de la proyección paralela, figura 132b, es el cubo unitario cuyas caras están definidas por los planos X=0, X= 1, Y= 0, Y=1, Z=0, Z=1. Las transformaciones correspondientes de normalización N par se estudiará posteriormente.

Puede considerarse a las transformaciones de normalización Npar y Nper bajo “estrategias de recorte”, como transformaciones geométricas. Esto es, si OBJ es un objeto definido en el sistema coordenado global, la transformación proporciona un objeto OBJ’ definido en el sistema coordenado de vista normalizada. Por tanto, al aplicársele al objeto las transformaciones de normalización según las ecuaciones que se describen, se obtienen las entidades encerradas en un volumen canónico.

OBJ’= Npar * OBJ (202)

OBJ”= Nper * OBJ (203)

Figura 132: Volúmenes canónicos; a) proyección perspectiva; b) proyección paralela.

x

y

z

1

1 1

allá

acá

1

zf

x = z

y = -z x = -z

y = z

z

x y

allá

acá

a) b)

166

Como el volumen de vista de ambas proyecciones, no coinciden, y además no loasen sus respectivos volúmenes canónicos, los procesos de normalización serán diferentes y se explicarán a continuación.

Normalización Paralela Conocer las diferentes transformaciones que se le aplica al volumen de vista para obtener el volumen canónico, permite determinar la matriz de transformación normalizante. Por tanto, para llevar el volumen de vista a un volumen de vista canónico en la proyección paralela es necesario efectuar las transformaciones siguientes: 1er Paso. Trasladar el volumen de vista de manera que Ro (punto de referencia) del plano de vista, este en el origen. La transformación requerida es la traslación T-Ro, cuya matriz se describe a seguir:

1000

1000000011

0 ZoYoXo

T R −−−

=− (204)

Al realizar esta transformación se ha hecho coincidir el origen de coordenadas de los sistemas de referencias: izquierdo Ip, Jq, N y derecho x, y, z; según se observa en la figura 133a. 2do Paso A continuación se alinea el vector normal N del plano de vista con el vector –k (dirección del eje Z negativo), denominándose, transformación de alineación An,-k. Esta transformación de alineación puede ser descompuesta en AN,k (alineación de N en k) y después rotando 180° alrededor de la dirección j (R180, j) quedando.

AN,-k = AN, k . R180.j (205)

1000

0

00

0

321

23

3121

,

Nn

Nn

Nn

nnNnn

Nnn

N

A kN λλ

λλλ

−−

=

1000

00

0010

00

,θθ

θθ

θCosSen

SenCos

R j−

= (206)

Tomando los valores de 23

22 nn +=λ y θ = 180 º

167

10000nnn

0nn

0

0nnnn

A

321

23

3121

k,N

−−−

=− λλ

λλλ

(207)

Al girarse el vector N en la dirección –k se ha desplazado también los vectores Ip y Jq, por lo que sus nuevas posiciones Ip’ y Jq’ están definidas por las multiplicaciones de la matriz de alineación según se muestra:

Jq’ = A n, -k * Jq (208)

Ip’ = A n, -k * Ip (209)

Figura 133: Primer y segundo paso de la normali zación paralela

A alineación de N en –k afectando a toda la triada del sistema normalizado, provoca que los vectores Ip’ y Jq’ están sobre el plano XY lo cual se comprueba observando que sólo deben tener componentes i, j, siendo k = 0. Observe la figura 133b. 3er Paso Alinéese el vector Ip’ con el vector i (dirección del eje x positivo) al girar Ip’ con respecto al eje z, la transformación requerida es R θ, k en este caso θ es el ángulo entre Ip’ e i. Observar la figura 134a, nótese que al alinear Ip con i, para la obtención del ángulo θ entre los vectores Ip e i se utiliza la definición de producto punto.

IIpIIpCos •=θ ; observe que 11 == IyIp (210)

Luego;

( ) ( ) ( ) kccpjbbpiaap ***cos ++=θ (211) Por tanto, la matriz para la alineación de Ip’ e i; es:

x y

z

N

Jq

Ip x y

z

N

Jq

Ip

a) b)

168

1000

010000CosSen00Sencos

R k,

θθθθ

θ

= (212)

Una forma de verificar que la matriz obtenida es la correcta es, multiplicando la matriz por el vector Jq’, su resultado debe ser el vector j, en caso contrario se debe verificar las matrices obtenidas en el paso dos y tres.

Figura 134: Tercer y cuarto paso de la normalización paralela

4to Paso Se cambia del sistema coordenado global derecho al sistema de coordenadas izquierdo. La transformación requerida es una reflexión en el plano XY, locuaz provoca que el vector N toma la dirección del z. Observe el resultado de esta transformación en la figura 134b.

1000

01-00

0010

0001

=XYF (213)

Hasta ahora se han realizado las transformaciones necesarias para ajustar todo el sistema de coordenadas normalizado a coordenadas globales observe, figura 135, como quedaría el volumen después de haberse realizado las transformaciones correspondientes a los pasos del 1er al 4to. Observe que los planos b y f (acá y allá) están paralelos al plano XY, sin embargo, el paralelepípedo formado por el volumen de vista aún no es un prisma recto al plano XY.

x y

z

N

Jq

Ip

a) b)

x y

z N

Jq

Ip

169

Figura 135: transformaciones realizadas al volumen de vista hasta el cuarto paso

5to Paso Ahora se efectúa una transformación cortante que transforma el volumen de vista oblicuo a un volumen de vista rectangular alineado a lo largo del eje Z. Sea DP´ la nueva posición de la dirección del vector de proyección DP; esto es:

DPAR´DP k,Nk, ••= −θ (214) La nueva posición corresponde con las transformaciones realizadas al volumen de vista. En ellas sólo se tiene en consideración las transformaciones relacionadas con el sistema normalizado lo cual provoca que la dirección de proyección se alinee al volumen de vista. Del resultado anterior se puede escribir los componentes de DP´ como sigue:

kDPjDPiDPDP zyx ´´´´ ++= (215) Cambiada la dirección del vector de proyección la transformación cortante se realiza preservando los nuevos vectores base del volumen de vista en la dirección i, j y cortando DP´ al vector DP´x k, esto provoca que la transformación requerida es la matriz:

10000100

´10

0´´

01

z

y

z

x

DP

DPDPDP

Sh −

= (216)

x

y

z

Lb

Rb

Lf

Rf L

R

170

Al multiplicarse la nueva matriz por el volumen de vista se convierte el volumen oblicuo en recto, según se puede observar en la figura 136.

Figura 136: Volumen de vista recto al plano XY

6to Paso Ahora se traslada el nuevo volumen de vista de manera que su esquina inferior izquierda L´f esté en el origen. Para esto, se observa que las primeras 4 transformaciones corresponden a la transformación del sistema coordenado del plano de vista. De modo que después de efectuar estas transformaciones L(Pmin, Qmin) (coordenadas del plano de vista) se encuentra en la esquina inferior izquierda de la ventana del plano de vista se transforma en un punto L´ sobre el plano XY cuyas coordenadas son L´(Pmin, Qmin, 0). De manera semejante, la esquina superior derecha R se trasforma en R´. Una vez realizada la transformación cortante Sh, se ve que el volumen de vista es vertical (Alineado con el eje Z) y las caras posterior y frontal están, respectivamente a b y f unidades del plano XY. En esta forma la esquina inferior izquierda del volumen de vista está en L´f (Pmin, Qmin, F) y las cotas del volumen de vista son Pmin ≤ x ≤ Pmáx, Qmin ≤ y ≤ Qmáx, f ≤ z ≤ b. La transformación requerida será la de traslada - L’f hacia el centro de coordenada, quedando la matriz como:

1000

100

010

001

f

Qmim

Pmim

T Lf−

=− (217)

b

f

x

y

z

R L

Lb

Rb

Rf

Lf

171

Después de efectuar esta transformación el volumen de vista queda como se observa en a figura 137.

Figura 137: Volumen de vista en el primer octante positivo

7mo Paso Ahora se pone en escala el volumen rectangular de vista con respecto al cubo unitario, La base del volumen actual de vista tiene las dimensiones de la base del volumen original, que corresponden a la ventana del plano de vista, esto es:

l = Pmáx – Pmin (largo) (218)

w = Qmáx – Qmin (ancho) (219) La altura del nuevo volumen de vista es la distancia del plano frontal al plano posterior de recorte h = b – f. La matriz de escala requerida es:

1000

0/100

00/10

000/1

h

wSe

l

= (220)

Aplicando esta última transformación se lleva el volumen de vista paralelo a su volumen canónico, quedando como muestra la figura 138. Finalmente, la transformación de normalización, o simplemente, normalización paralela es el resultado de la multiplicación de todas las transformaciones necesarias para llevar el volumen de vista paralelo a su volumen canónico, quedando como sigue:

Npar = S l . T-L’f . Sh . FRL . R θ ,k . AN, -k . T -Rθ (221)

x

y

z

Lb

Rb

Rf

Lf

172

Figura 138: Volumen de vista canónico paralelo

Observe que el orden de multiplicación es el proceso inverso a los pasos dados para mantener como resultado la matriz idéntica.

Figura 139: Ubicación del plano de vista normalización paralela

Después de efectuar esta transformación Npar, el plano de vista se transforma en el plano Z = -f / (b-f), paralelo al plano XY. También la dirección del vector de proyección DP se transforma en un vector paralelo al vector –k que tiene la dirección del eje z negativo. Al colocar L’f en el origen se desplaza el plano de proyección –f unidades y al realizar el escalado ocurre que es la distancia del plano de vista queda como – f / h, según se puede observar en la figura 139.

Normalización Perspectiva Las transformaciones requeridas para obtener la transformación normalizante, que modifica el volumen de vista perspectivo en el volumen de vista canónico fijado por una pirámide truncada, posee los siguientes pasos: 1er Paso Se traslada el centro de proyección CP al origen utilizando la traslación T – CP.

x

y

z 1

1 1

x

y

z 1

1

1

PV

DP

- f / h

173

1000

CP100CP000CP0011

Tz

y

x

CP −−−

=− (222)

2do Paso Se aliena la normal N al plano de vista con el vector –k mediante AN,-k, determinando los valores de Ip’ y J’p sobre el plano XY del sistema de coordenadas globales. 3er Paso Se gira al vector Ip’ hasta I utilizando la rotación R k,θ . 4to Paso Se cambia de coordenadas derecha a coordenadas izquierdas al aplicarse la transformación F RL. Las transformaciones dadas por los pasos del 2do al 4to, son identicas a las expuestas en la normalización paralela. 5to Paso El volumen de vista recientemente transformado se oblicua a lo largo de la línea central que une al origen (Centro trasladado de proyección) con el centro de la ventana del plano de vista (transformado). Esta línea central, no es más que determinar el vector que une el centro de proyección con el centro de la ventana que determina el volumen de vista. Sea CW las coordenadas del centro de la ventana del plano original de vista, entonces CW tiene como coordenadas del plano de vista a:

CW = ( ,2

min PMáxP +)

2min qmáxq + (223)

Estas coordenadas deben ser referidas al sistema de coordenadas mundiales para obtener al CPCW vector que une los dos puntos, que se denotará como CC’w

CC’w = Rθ, k • A N, - k • CCw (224) Siendo CCw el vector que une al centro de proyección al centro de pantalla para hacer una reducción del vector obtenido, se denominará como:

CC’w = C’xi + C’yj + C’z.k (225) Una vez obtenido este vector, se corta el volumen de vista de manera que descanse sobre el eje Z, por tanto, la matriz de transformación será:

174

Sh =

1000

0100

0z'Cy'C

10

0z'Cx'C

01

(226)

La ventana después de aplicar la transformación cortante Sh esta localizada sobre el eje Z en Z = C’z. 6to Paso Centrando el eje CCw se debe realizar el escalado de la pirámide observando que el largo (L), l ancho (W) y la altura (h) se determinan a través de las siguientes formulas:

L = Pmax – Pmin (227)

W = Qmax – Qmin (228)

h = b – f (229) La ventana transformada esta centrada en el eje z en Z = C’z y acotado por:

- (L / 2) = x = (L / 2) (230)

- (W / 2) = x = (W / 2) (231) El plano frontal transformado de recorte está localizado en Zf = C’z + f; y el plano posterior de recorte se halla ahora en Zb = C’z + b. Después de un proceso de análisis matricial donde se realiza el escalado el z y después con respecto al plano xy se obtiene la matriz de escala como sigue:

SL =

1000

0bz'C

100

00)bz'C(w

z'C20

000)bz'C(

z'C2

+

+

+l

(232)

Donde; Zf = bzCfzC

++

'' (233)

175

La transformación completa puede escribirse como:

Nper = SL • Sh • FRL • Rθ,k • AN, -k • T – CP (234) Obsérvese que después de efectuar la transformación Nper, el plano de vista se convierte en un plano paralelo al plano XY caracterizado por la siguiente ecuación:

Z = bzC

zC+'' (235)

Además el centro de proyecciones CP se encuentra en el origen del Sistema de Coordenadas. Observe la figura 140.

Figura 140: Volumen de vista canónico perspectivo

Ejercicios propuestos: 1. Obtener la matriz de Normalización de la proyección Paralela . 2. Obtener la matriz de Normalización de la proyección Perspectiva.

Recorte El proceso hasta ahora estudiado presupone que las entidades geométricas a representar se encuentran dentro del volumen canónico, quedando un grupo de ellas fuera del volumen o interceptándolo. Al objeto poseer vértices dentro y fuera de los límites del volumen, sus aristas o caras se interceptan con los planos que delimitan el volumen. Por consiguiente, el recorte consiste en determinar la intercepción y desechar todo lo que queda fuera del volumen. El proceso inverso al recorte es el blindaje, el cual cubre una parte de la imagen para que no sea visible. Existen varios tipos de recortes según la forma que posee la entidad que se analiza, contando con Recorte de punto, Recorte de segmento de recta y Recorte de polígono. Para realizar el recorte de segmento y polígono se hace referencia a

1

zf

x = z

y = -z x = -z

y = z

z

x y

allá

acá

176

la posición del punto con respecto al volumen por lo que no se explicara el Recorte de punto. En cada uno de ellos se presentan diferentes algoritmos, se hará referencia a los básicos.

Recorte de segmento de recta El proceso de recorte de segmento de recta se divide en dos fases, una en identificar aquellos segmentos que se intersecan con los planos del volumen canónico, de manera que necesitan recortarse y segundo, realizar el recorte. Por tanto, conociendo que será proyectado a visible las entidades que se encuentran dentro del volumen canónico, los segmentos de rectas poseen una de las siguientes situaciones: 1. Visible: cuando los puntos extremos se encuentran dentro del volumen. 2. Candidato a recorte: cuando posee un punto visible y el otro no, o cuando es

posible que parte del segmento se encuentre atravesando el volumen. 3. No visible: cuando los puntos extremos, después de analizar todos los planos

se encuentran fuera del volumen. Observe que la condición de visibilidad de un punto está dada por la pertenencia del punto al cubo unitario. Por tanto han existido algunas propuestas algorítmicas que permiten resolver estas interrogantes, de todas ellas se analizará el algoritmo Cohen-Sutherland para el recorte de un segmento de recta en el espacio. Es necesario aclarar, que a pesar de existir estas tres condiciones la salida del proceso de recorte es VISIBLE o NO VISIBLE. La situación de CANDIDATO A RECORTE significa que puede existir una parte del segmento de recta que se analiza que sea visible en el volumen. El algoritmo Cohen-Sutherland para el recorte de un segmento de recta en el espacio consiste en determinar si un segmento se encuentra dentro, fuera o interceptando al volumen canónico. Para ello avanza en dos pasos: Primeramente, se crea una mascara de 6 bits para cada extremos del segmento, esto se hace ya que el volumen canónico se encuentra limitado por 6 planos, tanto para la proyección paralela como la proyección perspectiva, cada bit se asigna a un plano del volumen. Todo punto que se encuentre dentro del volumen canónico tendrá como código 000000 y cada bit tomará valor 1 según el lugar geométrico que ocupe fuera del volumen con respecto a este. Empezando a partir del bit de la izquierda, cada bit del código es igualado a verdadero (1) si el punto se encuentra fuera con respecto a ese plano o falso (0), se está dentro, de acuerdo con el volumen de vista. La aplicación del algoritmo Cohen-Sutherland se toma que el volumen de vista se desarrolla en un sistema izquierdo de coordenadas donde el vector z se encuentra entrando en la pantalla del monitor y los ejes x, y están desarrollados hacia la

177

derecha y arriba respectivamente. Observe a través de la figura 141, cuales son los valores que toman los dos primeros bits.

Figura 141: Ubicación de un punto por Encima y Debajo del volumen

Los dos primeros bits del código corresponden a la ubicación del punto encima del volumen y debajo, siendo que si el punto se encuentra encima del volumen, o sea, posee una coordenada y > 1, implica que el primer bit toma valor 1, sino, será cero. Observe en la figura 141a, el plano que delimita esta posición. Igualmente se puede establecer el valor del segundo bit, un punto se encuentra debajo si posee una coordenada y inferior a cero, lo cual queda definido por el plano y = 0, según se muestra en la figura 141b, lo que provoca que el bit asuma un valor igual a uno. La tercera y cuarta posición del código corresponde a si un punto se encuentra a la derecha e izquierda del volumen según se puede observar en las figuras 142a y 142b. Observe que el plano x = 1, define la posición de la derecha y el plano x = 0, la izquierda. De igual forma, que en el caso anterior, si el punto se encuentra a la derecha o izquierda de los planos se colocaran con valor de 1 los bits correspondientes con esas posiciones.

Figura 142: Ubicación de un punto por Izquierda y Derecha del volumen

Figura 143: Ubicación de un punto por Detrás y Frente del volumen

a) b) x

y z

x

y z

a) b) x

y z

x

y z

x

y z

a) b) x

y z

178

Los últimos bits corresponden a las posición Detrás y Frente, según se muestra en la figura 143a y 143b, respectivamente. De igual forma se puede establecer una relación para el volumen canónico perspectivo. Por tanto, a forma de resumen se muestra la tabla de la figura 144:

BIT Lugar del punto Paralela Perspectiva Resultado 1 Encima Y > 1 Y > Z 1 0 2 Debajo Y < 0 Y < - Z 1 0 3 Derecha X > 1 X > Z 1 0 4 Izquierda X < 0 X < - Z 1 0 5 Detrás Z > 1 Z > 1 1 0 6 Frente

Si

Z < 0 Z < Zf 1

Sino

0

Figura 144: Valores del código según la relación entre las coordenadas

Tómese los cinco segmentos P1P2, P3P4, P5P6, P7P8 y P9P10 que se escriben en la tabla de la figura 145, y observe cual es el código que le corresponde a cada extremo:

Segmento Extremos Código P1 (0.25, 0.25, 0.5) 000000 P1 – P 2 P2 (0.75, 0.25, 0.25) 000000 P3 (-0.7, 0.5, 0.5) 000100 P3 – P4 P4 (0.7, 0.5, 0.5) 000000 P5 (0.5, 0, -3) 000001 P5 – P6 P6 (0.5, 3, 1) 100000 P7 (1.5, 0, 0.5) 001000 P7 – P8 P8 (0, 1.5, 0.5) 100000 P9 (0, 1.5, 0.7) 100000 P9 – P10 P10 (2, 1.5, 0.7) 101000

Figura 145: Ejemplo de codificación de puntos

Se puede comentar que los extremos del segmento P1P2 se encuentran dentro del volumen lo que posibilita afirmar que el segmento se encuentra dentro del volumen canónico. El segmento P3P4 tiene el punto P4 dentro del volumen y el otro fuera hacia la izquierda, lo cual afirma que una parte del segmento se encontrará dentro del volumen. El resto de los segmentos tiene sus dos extremos fuera, pero no se puede afirmar que sea no visible, hasta que no se haga el próximo paso. Una vez que se han determinado los códigos de los puntos extremos de un segmento de recta, se busca la situación de visibilidad o candidato a recorte como segundo paso de avance de este algoritmo. Si el segmento es candidato a recorte se buscará el punto de intersección del segmento con el plano realizándose

179

nuevamente la codificación, este proceso sólo termina cuando se obtiene que el segmento es visible o no. El trabajo con los códigos propuesto por el algoritmo Cohen – Sutherland determina que la situación de un segmento será: 1. Visible: cuando los puntos extremos tienen un código igual a 000000. 2. Candidato a recorte: si el AND lógico de los códigos de punto extremo es

000000. 3. No visible: si el AND lógico de los códigos de punto extremo no es 000000. Analizando los segmentos de la tabla de la figura 145, se obtiene que el segmento P1P2 es VISIBLE y el resto de los segmentos obtienen un AND lógico que es mostrado en la tabla de la figura 146.

Segmento Extremos Código AND P3 (-0.7, 0.5, 0.5) 000100 P3 – P4 P4 (0.7, 0.5, 0.5) 000000

000000

P5 (0.5, 0, -3) 000001 P5 – P6 P6 (0.5, 3, 1) 100000

000000

P7 (1.5, 0, 0.5) 001000 P7 – P8 P8 (0, 1.5, 0.5) 100000

000000

P9 (0, 1.5, 0.7) 100000 P9 – P10 P10 (2, 1.5, 0.7) 101000 100000

Figura 146: Ejemplo de codificación de AND lógico

Al utilizar el AND lógico como determinación de la No visibilidad, se aplica el hecho de estar con respecto al volumen al mismo lado, o sea, cuando en el lugar del bit donde el resultado sea uno, significa que los puntos extremos del segmento están del mismo lado con respecto al volumen. Observe le segmento de recta P9P10, en la tabla de la figura 146, que el resultado del AND lógico dice que los valores de Y son mayores que .a unidad, ‘por tanto el segmento se encuentra por encima del volumen. Del resultado del resto de los segmentos no se puede concluir nada, por tanto, se hace necesario obtener el punto de intersección con el plano. El análisis del punto de intersección se realiza con el segmento de recta y la ubicación del punto que se encuentra fuera con respecto al plano. En el caso del segmento de recta P4P5, en la tabla de la figura 146, se puede apreciar que el punto P3 posee un código diferente de cero, e incluso indica que la intersección se realiza con el plano x = 0. Por tanto, se debe determinar la intersección del segmento con dicho plano y cambiar el valor de P3 por el valor del punto de intersección. Conociendo los extremos del segmento de recta y los parámetros que definen un plano se puede determinar el parámetro t del punto de intersección a través de la expresión:

180

12

1o

PPN

PRNt

•−= (236)

Donde: P1 y P2 son los extremos del segmento de recta N es el vector normal del plano R0 es un punto de referencia sobre el plano

Observe que se conoce del volumen canónico las características de los seis planos que o conforman por tanto la expresión 236 se puede escribir para cada uno de ellos, en función de los puntos extremos del segmento P1P2. El resultado de esta ecuación se debe sustituir en las ecuaciones que se escriben a continuación para determinar el valor de la x, y, z del punto de intersección que se calcula:

x = x0 + t (x – x0) (237)

y = y0 + t (y – y0) (238)

z = z0 + t (z – z0) (239) Si se realiza esta operación con el segmento de recta P3P4 se obtiene que el nuevo valor de P3 es (0, 0.5, 0.5) al cual le corresponde un código igual a 000000, Esto determina, que el nuevo segmento P3P4 es visible en ese intervalo y por tanto, debe mostrarse en la proyección. En el caso de este segmento se ha obtenido el resultado a partir de un sólo análisis, en múltiples ocasiones se hace necesario realizar varias veces estas intersecciones tanto para un punto como `para el otro. Estudie que ocurre con el resto de los segmentos, de ejemplo, que se muestran en la tabla de la figura 146. Al analizar el algoritmo, hay que tener en cuenta que, es eficiente si el volumen contiene a la mayoría de los segmentos pues los acepta rápidamente Los cortes son hechos en un orden fijo por lo que en ocasiones se calculan intersecciones que no están en el volumen. Por otro lado, no se conoce cual es la configuración que posee una cara de un cuerpo con relación al volumen ya que sólo se analizan sus aristas.

Recorte de polígono Los algoritmos dedicados al recorte de polígonos consisten en evaluar la ecuación del plano, de los puntos extremos de los segmentos que compone un polígono, comparando su signo con la evaluación de la ecuación de un punto conocido. Si el punto de análisis tiene un signo diferente se determina la intersección y se continúa hasta obtener el punto siguiente. Como resultado de estos algoritmos se

181

obtiene si es visible o no un polígono y el caso afirmativo, cual parte del mismo es visible. Un procedimiento para el estudio del recorte de polígonos es el algoritmo Sutherland-Hodgman para el recorte de un polígono en el espacio. Sea P1, P2,..., Pn, la lista de vértices del polígono que se va ha recortar. Sea N y R0 las componentes de un plano y PA un punto del espacio, ambos conocidos. Se recorta cada arista del polígono por turno contra los planos de recorte, obteniendo un nuevo polígono. El plano caracterizado por N y R0, divide al espacio en dos partes cuya ecuación en caracterizada por:

n1 (x – x0) + n2 (y – y0) + n3 (z – z0) = 0 (240) Donde:

N = n1 i + n2 j + n3 k; vector normal del plano R0 = (x0, y0, z0); punto sobre el plano P = (x, y, z); punto cualquiera de análisis

Esta ecuación surge de determinar la distancia de un punto al plano, si esta distancia es cero, el punto esta en el plano. Para la aplicación del algoritmo, se define como una función escalar f(P), para cualquier punto P(x, y, z) se tiene que:

f (P) = n1 (x – x0) + n2 (y – y0) + n3 (z – z0) (241) Se dice que los puntos P y Q están sobre el mismo lado con respecto al plano si:

Signo f (P) = Signo f (Q) (242) Definiendo, de esta forma, si f (P) esta en el semiplano visible o no. El semiplano visible es el lado del plano con respecto al cual se encuentra el punto Q conocido. Observe, en la figura 147, la configuración del volumen para este algoritmo.

Figura 147: Ubicación de un punto por Encima y Debajo del volumen

Tomando como referencia a los puntos: borde inferior del plano acá (Lf) como L y el borde superior derecho del plano allá (Rb) como R, se puede decir que si un

a) b)

x

y z

x

y z Rb

Lf

Rb

Lf

182

punto P esta en el mismo lado de L con respecto al plano superior, este se encontrará dentro del volumen, ver figura 147a. Observe que esta condición no es suficiente, pero si necesaria. De igual forma, si un punto P esta en el mismo lado de R con respecto al plano inferior, ver figura 147b, se puede decir que el punto se encontrará dentro del volumen. Procediendo de la misma forma, se puede establecer las condiciones para que un punto se encuentre dentro del volumen con respecto a cada plano, quedando entonces un punto P esta dentro del volumen de vista si se cumplen todas las siguientes condiciones: • P esta en el mismo lado de L con respecto al PLANO SUPERIOR • P esta en el mismo lado de R con respecto al PLANO INFERIOR • P esta en el mismo lado de L con respecto al PLANO DERECHO • P esta en el mismo lado de R con respecto al PLANO IZQUIERDO • P esta en el mismo lado de R con respecto al PLANO FRONTAL • P esta en el mismo lado de L con respecto al PLANO POSTERIOR Se ha descrito la condición que posee un punto en este algoritmo, la cual debe ser analizada para cada punto del polígono. Observe en la figura 148, que el polígono puede poseer puntos externos e internos con respecto a un plano. Cada punto del polígono es analizado por separado, realizado las intersecciones necesarias en cada caso. El punto de auxiliar (PA) puede ser L o R y definirá siempre el lado visible del polígono. Cuando un segmento del polígono posea un punto fuera y otro dentro, será necesario determina la intersección. En el caso de la figura 148, ilustra un ejemplo en el cual un polígono al ser recortado por un plano se convierte en dos polígonos que serán posteriormente analizados antes de pasar a otro.

Figura 148: Visibilidad de un polígono con respecto a un plano

El proceso del algoritmo de recorte de polígono, se debe realizar para cada polígono de la cara de un objeto o cuerpo definido geométricamente por una lista de vértices, otra de aristas y la de caras. El recorte de segmento de recta actuará en la lista de aristas solamente. Note que sería optimo, eliminar de la lista de exhibición los objetos que se encuentren totalmente fuera del volumen canónico

P1

P2 P3

P4

P5

P6

1

2

3

4

PA

183

para lo cual se puede realizar un algoritmo que determine la posición relativa de un cuerpo con respecto al volumen canónico. Se debe tomar como salida del algoritmo los resultados de Fuera, Dentro o en Contacto. Los cuerpos que como resultado se obtenga que están fuera no se incluirá en la lista de exhibición y los que se obtenga que están dentro, serán incluidos, sólo se realizará el recorte a aquellas entidades que se obtenga en su clasificación que están en Contacto. Los algoritmos explicados pertenecen a la evaluación de las entidades con relación al volumen canónico, pero según lo explicado en el epígrafe de proyecciones, no siempre se tienen los cuerpos en el espacio, sino de forma proyectado. Cuando se proyectan los puntos sobre el plano de proyecciones, no siempre se visualizarán todos, sino sólo una parte definida por una ventana, de la misma forma que cuando fueron analizadas para el volumen de vista. Al obtener todos los objetos proyectados sobre el plano de proyección, en coordenadas (p, q) de la misma forma en que se establecen los puntos L y R implica que el recorte se debe realizar sobre el plano. El análisis del recorte sobre el plano, es tomando como área de recorte un polígono rectangular, donde el recorte de segmentos y el recorte de polígono se realizará contra los segmentos que definen los contornos de la ventana. El estudio de los mismos, se realizará de forma independiente debido a que constituyen una versión más reducida de los presentados aquí. Ejercicios Propuestos: 1. Hacer un procedimiento en forma de seudo código que permita obtener el

código a partir de las coordenadas de un punto en el plano. 2. Escribir un procedimiento en seudo código que permita desarrollar el algoritmo

Cohen – Sutherland en el plano. 3. Realice una función que determine cuando un cuerpo se encuentra Fuera,

Dentro o en Contacto con respecto a un volumen canónico paralelo. 4. Construir una función que determine cuando un cuerpo se encuentra Fuera,

Dentro o en Contacto con respecto a un volumen canónico perspectivo. 5. Hacer un procedimiento en forma de seudo código que permita obtener el

código a partir de las coordenadas de un punto en el espacio. 6. Hacer una función que determine el punto de intersección del segmento de

recta de análisis con el plano especificado por el Bit de entrada. 7. Escribir un procedimiento en seudo código que permita desarrollar el algoritmo

Cohen – Sutherland en el espacio. 8. Escribir un procedimiento en seudo código que permita desarrollar el algoritmo

Sutherland – Hodgman en el plano 9. Escribir un procedimiento en seudo código que permita desarrollar el algoritmo

Sutherland – Hodgman en el espacio

184

Transformación de Dispositivo La transformación de dispositivo también es denominada transformación de Ventana – Puerto de visión o simplemente Windows – Viewport, según las palabras en inglés, que describen la región finita del plano de proyección en el mundo real y el área o una subregión de exhibición del dispositivo o periférico de salida. La formación de una vista depende del tipo de proyección y la ubicación de cada componente del mismo. Con las matrices de proyección se obtiene sobre el plano , la forma y colocación de las entidades que reflejan el mundo tridimensional. Cuando se aplica la normalización y posteriormente la proyección sobre el plano XY, también se obtiene el reflejo del mundo tridimensional pero en un área bien definida o conocida, ya que el volumen canónico así lo permite. En el primer caso se tiene la proyección sobre un área rectangular o cuadrada cuyo tamaño depende de la ventana elegida, en el segundo, siempre se obtiene la proyección sobre un área cuadrada de magnitud igual a la unidad. Todo ello determina que se analice las transformaciones que ocurren para llevar de una ventana del mundo real al puerto de vista del dispositivo cuando se realiza una proyección. Ver figura 149.

Figura 149: Visualización en coordenadas mundiales y de pantalla

Normalmente a la ventana de coordenadas mundiales se le dice solamente ventana o Windows, pero es necesario destacar que no tiene nada que ver con los manipuladores de ventana o Windows manager que es un concepto diferente. El término de coordenadas mundiales es empleado ya que la aplicación esta haciendo interactivamente una representación de un objeto real. Aunque las entradas sean en coordenadas del mundo real, las subrutinas gráficas deben convertirlas a las coordenadas del dispositivo de exhibición, normalmente denominadas coordenadas de pantalla por ser este dispositivo el más común, aunque sería más apropiado llamarlas coordenadas del dispositivo, ya que el proceso es idéntico para cualquier dispositivo de exhibición como puede ser una impresora o un plotter.

Ventana

Coordenadas mundiales Coordenadas de pantalla

Viewport

185

Un aspecto importante a la hora de realizar esta transformación es que si la ventana del mundo real y el viewport no tienen la misma razón de aspecto el objeto sobre el dispositivo de exhibición se verá deformado. La transformación de coordenadas globales a pantalla se puede expresar a través de una matriz de transformación la cual se obtiene tres pasos. Primero se traslada la ventana al sistema de coordenadas normalizado, segundo se cambia su escala para que coincida en tamaño con el viewport y por último se traslada la ventana a su posición final, en caso de que el viewport no coincida con el tamaño máximo del área de exhibición se adopta la forma que garantice la isotrópica de la vista.

Transformación de la ventana al sistema de coordenadas normalizado La ventana del mundo real se encuentra ubicada en el sistema de coordenadas normalizado en una posición tal que puede coincidir con de forma paralela con los ejes o no. En caso de no coincidencia se hace necesario realizar una rotación para que su pueda observar como aparece en la figura 150.

Figura 150: Transformación de la ventana al sistema de coordenadas normalizado

Se ha tomado una transformación intermedia entre la ventana y el sistema de dispositivo normalizado, como una ventana de tamaño unitaria, primero para una mejor claridad en las transformaciones y segundo, para observar que transformaciones no son necesarias realizar si el volumen de vista es canónico. Basados en las transformaciones presentadas en la figura 150, observe las matrices que determinan las transformaciones. Se ha tomado como coordenadas del mundo real el área de la ventana w1x, w1y, w2x, w2y y como área de pantalla v1x, v1y, v2x, v2y.

w1 v1

v2

w2

Ventana Puerto de visión

1

1

1 – Trasladar (– w1x, – w1y) 2 – Escalar 1/ (w2x – w1x)

4 – Trasladar (v1x, v1y) 3 – Escalar (v2x – v1x) (v2y – v1y)

x

y y

x

186

La primera transformación a realizar es la traslación de la ventana al origen de coordenadas globales, expresado como Trasladar (– w1x, – w1y) al origen:

100

y1w10

x1w01

T 1w −

=− (243)

La segunda transformación es normalizar (escalar) ventana a tamaño unidad:

100

0y1wy2w

10

00x1wx2w

1

Sw−

= (244)

Escalar de tamaño unidad a ventana tamaño de viewport:

100

0y1vy2v0

00x1vx2v

Sv −

= (245)

Trasladar origen a (v1x, v1y):

100

y1v10

x1v01

T 1v = (246)

Transformación final de la ventana al sistema de coordenadas normalizado es el producto de las sucesivas transformaciones realizadas con anterioridad lo que arroja como resultado la matriz:

TRN =

100y1wy2w

y1vy2vy1wy1v

y1wy2wy1vy2v

0

x1wx2wx1vx2v

x1wx1v0x1wx2w

x1vx2v

−−

−−−

−−

−−−

(247)

La expresión de esa matriz TRN en términos de coordenadas sobre el sistema normalizado es:

187

xRN, yRN, 1 = ( ) ( )

−−

−+−−

−+ 1,y1wy2w

y1vy2vy1wyy1v,

x1wx2wx1vx2v

x1wxx1v RR (248)

Donde, xR, yR son las coordenadas de las entidades en el mundo real. La transformación realizada se hace sobre las coordenadas en punto flotantes del objeto. Por tanto, es necesario hacer el redondeo o truncar el número en el valor entero, lo que provoca una aproximación en la representación. Este proceso no afecta los valores de datos en la estructura del objeto ya que este conserva sus valores reales. Hasta ahora se ha trabajado con coordenadas en puntos flotantes siendo necesario ahora llevarlas a entero antes de continuar con la transformación. La finalidad de esta transformación es llevar el mundo real hacia un sistema que después pueda ser exportado hacia un periférico de salida cualquiera. Se continuará asumiendo que la exhibición será en la pantalla de un monitor para computadoras.

Transformación del sistema de coordenadas normalizado a la pantalla El puerto de visión concebido en un sistema de coordenadas normalizado será transformado un área física de la pantalla del monitor. La figura 151 muestra, en la imagen de la derecha, las características que posee el área de la pantalla y la colocación del sistema de referencia.

Figura 151: Transformación del sistema de coordenadas normalizado a la pantalla

Los puntos P1, P2, representan la diagonal del área a utilizar donde se exhibirán las entidades u objetos observados a través de la ventana situada en el plano de

p1

p2

Pantalla

1 – Trasladar (0, – scy) 2 – Reflexión (x, – y)

x y

v1

v2 Puerto de Visión

y

x

scy

188

proyección. Las transformaciones necesarias para este cambio son descritas a seguir: Trasladar (– w1x, – w1y) al origen:

T-scy = 100

scy10001

− (249)

Reflexión sobre el eje x:

Fy = 100

010001

− (250)

Resultado de la transformación del sistema de coordenadas normalizado a la pantalla se obtiene a través de la multiplicación de Fy y T-scy, quedando:

100

scy10

001

T −= (251)

Resultado final de la transformación desde la ventana hasta las coordenadas en la pantalla viene dada por la multiplicación de la matrices 247 y 251, quedando la transformación de pantalla como:

Tp =

100

scyy1vy1wy2w

y1vy2vy1w

y1wy2wy1vy2v

0

x1wx2wx1vx2v

x1wx1v0x1wx2w

x1vx2v

+−−−

−−

−−

−−−

(252)

La expresión de esa matriz Tp en términos de coordenadas sobre la pantalla es:

( ) ( ) ( )

−−

−+−−−

−+=y1wy2w

y1vy2vyy1wy1vscy,

x1wx2wx1vx2v

x1wxx1vy,x rwrwPP (253)

La aplicación de esta transformación sobre un objeto puede provocar que no se visualice con las mismas proporciones que posee en el mundo real debido a la relación que existe entre las resoluciones de las áreas tomadas en cada sistema.

189

Esto hace que surjan dos tipos de transformaciones, las isotrópicas y las anisotrópicas. Las transformaciones isotrópicas, conservan las proporciones de los objetos del mundo real a través de una redefinición del área de exhibición en la pantalla y las transformaciones anisotrópicas, no se conserva la proporcionalidad ya que existen dos factores de escala, uno para cada eje. La figura 152 ilustra la forma en que puede aparecer un círculo observado a través de una ventana cuadrada y exhibido en un área de pantalla rectangular.

Figura 152: Tipos de transformaciones

El tipo de transformación deseado en todas las aplicaciones gráficas es la isotrópica. Para mantener la isotropía es necesario tener en consideración los valores que asumen los coeficientes de escala durante el proceso de transformación. De las relaciones obtenidas se puede apreciar que los coeficientes en análisis son:

x1wx2wx1vx2v

Sx−−

= (254)

y1wy2wy1vy2v

Sy−−

= (255)

Entre ambos coeficientes, se tomará el valor que más próximo se encuentre de la unidad lo que garantiza que la transformación de la escala será la mínima y se asume un valor único de escala para ambos ejes, o sea, Sy = Sx. La forma de determinar las coordenadas en pantalla sustituyendo los coeficientes de escala estará dada por las expresiones:

XP = v1x + (XW – w1x) * Sx (256)

YP = scy – v1y + (w1y – YW) * Sy (257) Donde:

XP, YP: coordenadas de puntos de pantalla en píxel XW, YW: coordenadas del punto en el plano de proyección

Isotrópica Anisotrópica

190

Ejercicios Propuestos: 1. Hacer un procedimiento en forma de seudo código que permita obtener las

coordenadas de un punto en un sistema de coordenadas normalizado. 2. Escribir un procedimiento en seudo código que permita obtener los valores

enteros de los vértices de un objeto manteniendo las relaciones en las proyecciones de las entidades que lo componen.

3. Describa el proceso completo para obtener la proyección sobre una pantalla de un objeto en el espacio conociendo el tipo de proyección.

191

Capitulo 5: Realismo Virtual El Realismo en arte y en literatura, supone el intento por describir el comportamiento humano y su entorno, o por representar figuras y objetos tal y como actúan o aparecen en la vida cotidiana. Esta tendencia ha existido periódicamente a través de la historia en todas las artes; sin embargo, el té rmino se restringe habitualmente al movimiento que comenzó a mediados del siglo XIX, después de las revoluciones de 1848. Con la aparición de las computadoras y el desarrollo del hardware gráfico se ha abierto una nueva posibilidad a los diseñadores y artistas. Los cuales, modelan objetos o escenarios, reales o que no existen, con diferentes propósitos entre los cuales se encuentra: someterlo a criterio de clientes y/o usuarios antes de su construcción; el estudio del comportamiento bajo ciertas condiciones iniciales o de operación; recorridos virtuales; desarrollo de videojuegos; películas de cine o simplemente como expresiones plásticas digitales. La representación digital de objetos, reales o no, recibe el nombre de Realismo Virtual. Existen diferentes procesos y técnicas indispensables, dentro del realismo virtual, para obtener imágenes lo más parecidas al mundo que nos rodea. Los procesos abarcan diferentes etapas que pueden clasificarse como: eliminar las partes ocultas, selección del modelo de iluminación y coloreado, determinación del tipo de sombras, aplicación de texturas y propiedades de comportamiento físico. En las siguientes páginas se estudiarán los aspectos relacionados con los tres primeros procesos ya que sólo dependen de los conocimientos que proporciona la gráfica por computadoras, los otros aspectos serán objeto de estudio en cursos superiores. Cuando se observa a nuestro entorno, se perciben los objetos de forma volumétrica según las características físicas de cada uno. Este proceso de percepción es muy complejo ya que intervienen diferentes órganos sensoriales y de control por lo cual, se realizará una simplificación de los objetos que serán estudiados. Los objetos ha representar serán: no traslúcidos, no especulares y en estado sólido. Las escenas donde estos objetos se encuentren serán estáticas y no intervendrán las condiciones meteorológicas y el tiempo. Los objetos a representar están determinados por un conjunto de caras planas delimitadas por polígonos de los que se conocen sus aristas y vértices. Por tanto, la estructura de datos de estos objetos tendrá un identificador, una lista de vértices con los valores de las coordenadas, una lista de arista constituida por dos vértices y una lista de caras que la constituyen polígonos y la normal del polígono exterior. Cualquier duda sobre este particular, puede consultar en los epígrafes Cuerpos geométricos y Construcción de sólidos del capitulo 1.

192

Eliminación de partes ocultas La representación realista, de objetos y escenas tridimensionales según los supuestos asumidos, hace necesario eliminar las partes que quedan ocultas desde la posición en que se halla el observador. Por lo cual, sólo se proyectarán en la pantalla del monitor las partes del objeto o escena que son visibles. La ambigüedad de la representación de cubo de la figura ilustra la necesidad de eliminar sus lados ocultos para poder obtener una proyección realista según el observador.

Figura 153: Ambigüedad en la representación realista del cubo.

La figura 153a, muestra la representación de un cubo a través de las aristas que lo componen lo cual presupone un menor uso del procesador computacional para su exhibición en la pantalla del monitor. Cuando se aplica una herramienta gráfica que permita eliminar las partes ocultas del mismo, se podrá determinar la forma en que se encuentra según el observador, las cuales son mostradas en las figuras 153b y 153c. Debido a que sólo una de las dos es la correcta, se describen algunas de las técnicas usadas para determinar las líneas y superficies, de un objeto o escena, que son parcial o totalmente visibles desde la posición que es observado. Si la imagen a visualizar en la pantalla del ordenador debe ser un “dibujo por líneas” del objeto o escena, las ambigüedades de la representación se podrán evitar generalmente, procediendo a la eliminación de las líneas ocultas. Si la imagen que se quiere visualizar debe ser una “imagen realista” de un objeto o escena, en primer lugar se eliminarán las superficies ocultas y a continuación se realizarán operaciones de modelado del aspecto: iluminación, sombras, etc. Siempre que una imagen contenga objetos y superficies opacas, aquellos que están más cerca del ojo, en la línea de visión de otros objetos, los bloquearan a la vista. Las superficies bloqueadas u ocultas deben eliminarse a fin de presentar una imagen realista en pantalla. La identificación y eliminación de estas superficies es conocido como el problema de superficies ocultas. La solución implica determinar profundidad y visibilidad de todas las superficies en la imagen. Esta solución también es utilizada para eliminar las ambigüedades existentes en modelos de marco de alambre como se muestra en epígrafe Modelos de alambre del capítulo 1.

a) b) c)

193

Observe que se han presentado dos situaciones, la primera dirigida a conocer cuales son las partes visibles para un objeto, y la segunda cuales partes de las superficies visibles de los objetos son visibles en la escena desde el punto de vista del observador. La solución de estas interrogantes provocará cambios en las listas de aristas y caras de los objetos que se exhibirán en la pantalla, pero no brindan solución al color del píxel de la misma. En el desarrollo del capitulo dedicado a las transformaciones, se estudio el proceso que lleva una escena tridimensional a la pantalla del monitor. Se pudo apreciar que el final de estas transformaciones consiste en determinar cual es el píxel que debe iluminarse, cuyo color será el que posea la entidad trazada. Extrapolando estas transformaciones, el resultado de la eliminación de las superficies consiste en conocer según la posición del usuario y la colocación del plano de vista cual será el color que llevará el píxel para la escena. Observe en la figura 154 que, se puede reducir el problema de las superficies visibles a determinar cual será el color del píxel según el recorrido inverso del rayo que parte desde el observador (OP) y recorre desde el objeto más alejado hasta el que se encuentra más cerca del plano de proyección.

Figura 154: Problema de la visibilidad

Si el punto P2 posee un color negro y el punto P1 un color blanco, ambos pertenecientes a superficies de objetos en una escena, el color que llevará el píxel será blanco ya que este punto se enc uentra más cerca del plano. El procedimiento completo para la solución del problema de la visibilidad consta de los siguientes pasos: 1. Análisis de la visibilidad de las caras 2. Análisis de la visibilidad de las aristas 3. Iluminación de los píxel

Tipos de algoritmos de eliminación La dificultad de eliminar las partes ocultas de un objeto o escena ha dado lugar a un gran número de algoritmos que resuelven el problema en casos diversos. Un algoritmo general de eliminación de partes ocultas de cualquier objeto o escena no sería eficaz porque requeriría mucho tiempo de cálculo y una gran cantidad de memoria. En la gran mayoría de los casos es mejor utilizar un algoritmo desarrollado específicamente para el tipo de objeto o escena que se desea representar. Cada algoritmo tiene unas características propias que hacen que sea

OP P1 P2

¿? z

y

x

194

preferible a otro algoritmo en una aplicación determinada. Según que el algoritmo de eliminación de partes ocultas permita eliminar aristas o caras de la escena u objeto a representar, se hablara de eliminación de líneas o de superficies ocultas. En función del sistema de coordenadas en donde trabajan los algoritmos de eliminación de superficies ocultas se pueden clasificar en tres tipos: Espacio imagen, Espacio objeto y Espacio objeto – imagen; a continuación se describen estos tres tipos de algoritmos. Tipo espacio imagen. Trabaja en el sistema de coordenadas de la pantalla. Estudia la imagen a representar en pantalla, preocupándose del estado final en que debe quedar cada píxel. Los cálculos se realizan con la precisión imprescindible dependiente de la resolución de la pantalla para que no aparezcan errores en la representación de la imagen. Entre los algoritmos de espacio imagen se hallan los Z-Buffer, de J. Warnock y el de líneas de barrido de G. S. Watkins. Tipo espacio objeto. Trabajan en el sistema de coordenadas del espacio al que se refiere el objeto o escena a representar. Estudian las relaciones entre los objetos de la escena y entre las distintas caras de un objeto con el fin de determinar que partes de cada uno de los objetos son visibles. Los cálculos se realizan con la mayor precisión posible, solo limitada por la precisión del propio ordenador. Entre los algoritmos de eliminación de partes ocultas del tipo espacio objeto se puede citar los de L. G. Roberts (que en el año 1963 construyó el primer algoritmo conocido de eliminación de partes ocultas) de A. Appel y de P. R. Atherton y K. Weiler. Tipo espacio objeto – imagen. Son algoritmos mixtos que trabajan en parte en el sistema de coordenadas del espacio y en parte en el sistema de coordenadas de la pantalla. Entre los algoritmos de eliminación de partes ocultas del tipo espacio objeto – imagen están el de R. A. Shumacker y el del “pintor” de T. L. Sacha y M. E. Newell. La mayoría de los algoritmos de eliminación de líneas ocultas usan algoritmos del tipo espacio objeto o precisión objeto, mientras que los algoritmos de eliminación de superficies ocultas usan generalmente algoritmos del tipo espacio imagen o precisión imagen. Muchos de los algoritmos de eliminación de partes ocultas (tanto los de eliminación de líneas como los de eliminación de superficies) incluyen algún método de orientación geométrica para determinar que elementos (puntos, líneas, polígonos) quedan ocultos a otros. La eficiencia de los algoritmos de eliminación de partes ocultas depende en gran medida de os métodos de ordenamiento usados. En el caso de la Precisión del Objeto las proyecciones son analizadas en espacio objeto, o sea, independientes del dispositivo. Para cada objeto de la escena se

195

determinan las partes visibles y se dibujan esas partes con el color correcto. Las principales características de estos algoritmos son: 1. Precisión dependiente de la resolución del dispositivo de visualización;

visibilidad determinada en cada píxel. 2. Algoritmos orientados para dispositivos “raster”. 3. Susceptibles al fenómeno de “aliasing”. 4. Para n objetos y p pixels, complejidad algorítmica (n x p). 5. Operaciones elementales y de baja carga computacional. Para la Precisión de Imagen se analizan los puntos en dependencia de la resolución del dispositivo de exhibición (espacio imagen). Para cada píxel de la imagen se determina el objeto más próximo visible a través del píxel y se dibuja el píxel con el color correcto. Las principales características de estos algoritmos son: 1. Precisión infinita, resolución de la visibilidad al nivel de porción de los objetos. 2. Algoritmos inicialmente orientados para dispositivos vectoriales. 3. Para n objetos presentes en la escena tenemos una carga computacional

proporcional a n2. 4. Las operaciones individuales son típicamente complejas y de carga

computacional.

Coherencia Las propiedades de los objetos varían, típicamente de una forma suave a lo largo de su extensión (color, textura profundidad, etc.), manteniendo un cierto grado de coherencia. Esto permite distinguir objetos dentro de una misma escena. En base a diferentes tipos de coherencia es posible reutilizar cálculos, efectuados para una parte de la escena, en el tratamiento de la parte que le son próximas. Como la reutilización no es directa basta con efectuar cálculos incrementales a “saltos” lo que corresponde a una solución más simple que el procesamiento de raíz. Los tipos de coherencias más frecuentes son: Objetos, Cara o superficie, Arista, Aristas implícitas, Líneas de barrido y Profundidad. El estudio de las mismas permite plantear dos hipótesis: 1. Una arista es no visible si está contenida en dos caras no visibles y 2. una arista es parcialmente visible si es cruzada por aristas totalmente visibles. Para demostrar las hipótesis se estudiará la visibilidad de las caras y la de aristas.

Visibilidad de las caras Para determinar la visibilidad de las caras se puede seguir la siguiente técnica: Suponga un cuerpo poliédrico formado por vértices, aristas, polígonos. Modelado mediante poliedros conexos del que se conozca su estructura de datos, por tanto, se tienen los vectores normales a estos polígonos, como muestra la figura 155.

196

Figura 155: Estructura de un cuerpo poliédrico

Supóngase que para cada cara del poliedro, orientada de forma antihoraria, hay un vector normal N que apunta hacia fuera, unido a un punto P de la cara. Para determinar si una cara del poliedro es visible se usaran dos vectores: un vector n normal al plano que contienen la cara del poliedro y un vector v en la dirección de visión. Para cada cara del poliedro, considérese al vector de línea de visión V como el vector que apunta desde un punto de la cara al observador u origen de vista. El vector de visibilidad V depende del tipo de proyección. Cuando se está en presencia de una proyección paralela, el vector de visibilidad V es contrario al vector de la dirección de proyección DP (ver capitulo transformaciones de vista). Cuando se desea realizar una proyección perspectiva, el vector de visibilidad debe ser determinado como la diferencia entre el cent6ro de proyección (CP) y el punto del polígono o cara P que se esté analizando. Por tanto, el vector V es conocido a partir de imponer un tipo de proyección, aspecto tratado en otros epígrafes. La prueba de visibilidad se basa en el hecho de que para una cara es visible, si el ángulo θ que forman N y V está comprendido entre 0º ≤ θ ≤ 90º, de lo contrario no es visible. Observe la figura 156.

Figura 156: Representación del vector de visibilidad V

El ángulo formado por los vectores puede ser asociado al producto escalar entre los mismos, si se toma siempre a N y V como vectores unitarios quedando que:

Cos θ = N • V (258)

P

θ N

V

a) b)

N

V θ

x y

z

P

Lista de vértices Lista de aristas Lista de Polígonos P1: ACDB; NP1 P2: FBDG; NP2 P3: EFGH; NP3 P4: AEHC; NP4 P5: EABF; NP5 P6: CHGC; NP6

A B

C D

E

G H

F

NP1

NP2

NP3

NP4

NP5

NP6

197

Por tanto, si se conoce las componentes de los vectores N y V, en la base (ortogonal) asociada a la referencia que define el sistema de coordenadas del usuario, para cada cara del poliedro, el producto de N y V podrá calcularse mediante la expresión:

N • V = n1 * v1 + n2 * v2 + n3 * v3 (259) Redefiniendo matemáticamente la visibilidad de la cara en función del coseno del ángulo (θ), una cara será visible si cumple con:

0 ≤ N • V ≤ 1 (260) Lo expuesto, permite desarrollar un algoritmo que teniendo en cuenta la estructura de datos de un cuerpo y el tipo de proyección, se obtenga la lista de caras visibles. Esto, escrito a modo de ejemplo sería: Ejemplo: Elabore una función, en forma de seudo código, que determine la lista de caras visibles de un objeto en una escena dado el tipo de proyección. Solución: El estudio de epígrafes anteriores, aclaró que cuando se posee un tipo de proyección o vista, se toman sus componentes como parámetros globales, por tanto, no es necesario calcular o solicitarlos, sino simplemente tomarlos como variables globales. La visibilidad de la cara de un cuerpo poliédrico depende solamente del lugar de origen de la proyección o vista, DP para proyección la paralela y CP para la proyección Perspectiva. Se tomará como valores de entrada del algoritmo la lista de caras del objeto (LC) y el tipo de proyección (TP). Siendo TP = 0 para la proyección paralela y TP = 1 para la perspectiva. La salida del algoritmo será una lista de caras visibles. El nombre de la función será VCP (Visibilidad de las Caras de un Poliedro). Conociendo todo lo referente al modelo matemático necesario para este ejemplo se propone el algoritmo 21:

1 Nombre de la función: VCP 2 Entran: LC lista de caras de un cuerpo poliédrico 3 TP tipo de proyección 4 Sale: LCV lista de caras visibles del cuerpo 5 Si TP = 0 entonces 6 V = - DP 7 Desde la primera cara hasta la última de LC(i) tomar la N y Hacer 8 Si (n1 * v1 + n2 * v2 + n3 * v3 = 0) entonces Agrega LC (i) a LCV 9 Sino 10 Desde la primera cara hasta la última de LC(i) Hacer 11 Tomar P como primer punto del primer polígono de la cara y calcular 12 V = (CPx – Px)i + (CPy – Py)j +(CPz – Pz)k

198

13 Si (n1 * v1 + n2 * v2 + n3 * v3 = 0) entonces Agrega LC (i) a LCV

Algoritmo 21: Seudo código de la función VCP

El punto 7 del algoritmo toma el último elemento de cada cara que lo constituye la normal de la misma según se declaró en la estructura de datos. En el punto 11 se toma el primer punto del primer polígono aunque puede ser cualquier punto del mismo. Observe que cuando la proyección es paralela sólo se calcula una vez el vector V y en la perspectiva se determina para cada cara del cuerpo prismático. De la misma forma que se determinó la lista de caras visibles se podría extraer de la lista de aristas solo las visibles, formando una lista de aristas visibles del objeto. La visibilidad de las caras no basta para determinar la visibilidad realista de un objeto, pues puede ocurrir la intersección entre aristas para caras visibles como muestra la figura 157.

Figura 157: Aristas parcialmente visibles en un cuerpo poliédrico

Observe que la arista AB pertenece a dos caras visibles del cuerpo por tanto según la visibilidad de las caras esta arista es visible. La solución de este nuevo problema es a través del análisis de la visibilidad de aristas.

Visibilidad de aristas La determinación de las partes de las aristas que son visibles al observador se hace teniendo en consideración su posición relativa con las caras del cuerpos. Para conocer como se lleva a cabo este algoritmo, tómese como ejemplo en cuerpo geométrico de la figura 157. Lo primero que se debe hacer es seleccionar una arista visible del objeto y comparar su posición con respecto a las caras del mismo. Si se encuentra delante o en el mismo plano de la cara analizada, la arista es visible para la misma, pero si está detrás se hace necesario un segundo análisis que corresponde con la proyección de las entidades sobre el plano. Observe la secuencia de imágenes de la figura 158. Al observar la cara C1 del cuerpo de la figura 158a, se aprecia que se superpone a la arista AB. Se planteo que el primer paso era determinar la posición relativa de la arista con relación a la cara. En la figura 158b, se muestra que la arista AB se encuentra detrás de la cara, ya que la normal de dicho plano está saliendo del objeto, por consiguiente se debe analizar. Si se proyecta la cara C1 junto con la

A

B

199

arista se puede determinar que existe intersección entre ambas entidades, como se muestra en al figura 158c.

Figura 158: Visibilidad de las aristas

Al determinar los puntos de intersección se puede descomponer el segmento AB en tres segmento A1, 12, 2B. Se puede determinar que un segmento se encuentra fuera o dentro de la cara proyectada si el punto medio de segmento está dentro o fuera del polígono. De esta forma se elimina el segmento 12, quedando los segmentos A1, 2B. Tomando este resultado se analiza la próxima cara. Suponga que la cara C2 es la representada en la figura 159a. El análisis de la posición de las aristas con relación a la cara determina que está están detrás, ver figura 159b, por tanto se debe realizar el análisis de a proyección.

Figura 159: Visibilidad de las aristas

El estudio de la posición relativa del segmento A1 con respecto a C2 en la proyección brinda como resultado que se encuentra fuera del polígono, por tanto no sufre variación alguna. Sin embargo, el segmento 2B está interceptando al polígono C2 determinando el punto de intersección 3, que lo descompone en dos nuevos segmentos, 23 y 3B. Tomando el punto medio de ambos y analizando su situación con respecto al polígono, se elimina uno quedando el segmento 3B. Si se continúa analizando los segmentos A1, 3B, con el resto de las caras, se podrá determinar que, a pesar de estar detrás de algunas de ellas, no sufren variación quedando la visibilidad del objeto como muestra la figura 160.

B

A

B

C1

C2 1

2 A 1

2

a) b) c)

C2

A

B

C1

C2 1

2

3

B

A

B

C1 C1

1 2 A

a) b) c)

A C1

1 2

B

200

Figura 160: Representación después del análisis de la visibilidad

El resultado del proceso de visualización de las aristas es una lista de aristas o partes de aristas visibles al observador. Este resultado, puede constituir una herramienta dentro de una aplicación de desarrollo gráfico, ya que sin tener en consideración aspectos físicos de los objetos de una escena, el usuario podría conocer su relación con el observador. También es posible llegar a este mismo resultado si se aplica la posición relativa entre las caras y las transformaciones boolenas en las proyección de las mismas. Lo estudiado permite valorar la visibilidad para un objeto, pero cuando en la escena existe más de uno puede darse la situación que muestra la figura 161a.

Figura 161: Visualización de objetos

La coherencia de objetos mostrada en la figura 161b, presupone el análisis de la posición relativa entre las caras visibles de los objetos, lo cual llevaría al estudio de la posición relativa entre polígonos en el espacio y en el plano. Este proceso se propone de estudio independiente.

Descripción de Algunos Algoritmos Algoritmo de Roberts Este algoritmo considera que cada arista pertenece a una cara de un poliedro convexo. Luego no permite la formación de otro cuerpo poliédrico. Por tanto, la secuencia de pasos para obtener la visibilidad de los objetos es: 1. Eliminar las aristas compartidas por un par de polígonos no visibles, lo que da

solución a la visibilidad de un solo objeto. 2. Cada una de las aristas de un poliedron es comparada con los restantes

poliedros. Como el poliedro es convexo cada arista esconde totalmente o muestra partes de la misma.

a) b)

201

Algoritmo de Z-Buffer También se conoce como Buffer de profundidad (Z-Buffer), Catmull, Presición de imagen, etc. En este se tiene un gran arreglo bidimensional donde en cada elemento de este buffer se almacena el valor de Z más cercano al observador que ha sido proyectado sobre X, Y de la pantalla. Note que las dimensiones de este arreglo están en correspondencia con el tamaño X, Y del espacio imagen, ósea, la pantalla o dispositivo de salida. El algoritmo consiste en que se calcula X y Y del punto proyectado y si la Z que existía en esta X, Y del buffer es mayor que la Z del punto entonces se actualiza el elemento por la Z del punto que es la más cercana. Observe una propuesta de seudo código en el algoritmo 22.

1 Nombre de la función: ZBuffer 2 INICIALIZAR BufferZ en 1 3 PARA CADA polígono 4 PARA CADA pixel proyectado 5 HACER Pz IGUAL valor de Z en las coord del pixel 6 SI Pz es menor BufferZ en las coord del pixel ENTONCES 7 HACER BufferZ en las coord del pixel igual Pz 8 DIBUJAR en las coord del pixel color del polígono 9 FIN SI 10 FIN PARA 11 FIN PARA

Algoritmo 22: Seudo código de la función ZBuffer

Las ventajas del Algoritmo de Z-Buffer son: 1. Ejecuta de raíz los ordenamientos en X y Y, no se requiere comparación de

profundidad, y el ordenamiento en Z toma sólo una comparación por píxel para cada polígono que contenga ese píxel.

2. El tiempo de cálculo de las superficies visibles tiende a ser independiente del número de polígonos en el objeto porque, como promedio, el número de píxel que cubren cada polígono disminuye cuando el número de polígonos en el volumen de vista aumenta.

3. Es fácil de implementar. La principal desventajas es que requiere de una gran cantidad de memoria. Algoritmo de profundidad (Depth-Sort) Este tipo de algoritmo se fundamenta en hacer el proceso de visibilidad de la escena teniendo en consideración todos los polígonos de los objetos que la contienen dibujándolos en forma decreciente de la distancia al observador. Los pasos que proponer este algoritmo son: 1. Ordenar todos los polígonos que constituye la escena por orden creciente de

su menor coordenada Z

202

2. Resolver las situaciones ambiguas cuando en los intervalos de ocupación de los polígonos, según Z, se sobreponen. A veces la resolución de esas ambigüedades pasa por la fragmentación de los polígonos que es realizada a través de operaciones booneanas .

3. Rasterizar los polígonos (originales y resultantes de la fragmentación) por orden creciente de su menor coordenada (dibujar los polígonos por orden decreciente de profundidad)

En el proceso de proyección, los polígonos P y Q pueden ocupar una distribución como muestra la figura 162. La proyección en 162a, presenta a los polígonos en una posición lateral que no se intersecan debido a que las coordenadas X de Q son mayores que las del polígono P, lo mismo puede ocurrir en caso que sean menores. Una situación similar se obtiene en relación a las coordinas y como se puede observar en la figura 162b.

Figura 162: Situaciones sin sobre posición de polígonos en la proyección

La figura 162c, representa aquellos casos en que a pesar de existir superposición en cuanto a los valores extremos de los polígonos, no existe pertenencia de un punto de un polígono en el otro. Tomando en consideración que los polígonos P y Q sean polígonos perpendiculares al plano XZ, dispuestos como presenta la figura 163, y un observador ocupando un lugar en la dirección de Z, como se indica, la proyección en el plano XY presentará ambigüedades, ya que, en la figura 163a, el polígono Q hará no visible al polígono P o parcialmente visible, según figura 163b, Si no está en las posiciones que mostró la figura anterior.

Figura 163: Ambigüedades en la proyección de polígonos

Q P

Q

P Q P

a) b) c)

x

y

x

y y

x

P

Q

Observador

P

Q

Observador a) b)

z

x x

z

203

Uno de los algoritmos que proporciona una solución para estas ambigüedades es el algoritmo del pintor, cuyo estudio y aplicación permite, una vez aplicado, obtener la visibilidad en la disposición de polígonos como se muestra en la figura 164a y 164b.

Figura 164: Aplicación de los algoritmos de visibilidad. a) Antes de la aplicación del algoritmo y; b) después de su aplicación.

Algoritmo de Línea de Rastreo Consiste en dos ciclos anidados. Un ciclo de rastreo en X anidado dentro de otro ciclo de rastreo en Y. Por consiguiente, en el método de Línea de Rastreo se considera por turno cada una de las líneas horizontales de pixels en el exhibidor. En un exhibidor de 640 X 200, implica en considerar cada una de las 200 líneas por turno. Un ejemplo de cómo se puede expresar esta función en seudo código se muestra en el algoritmo 23.

1 Nombre de la función: Linea_rastreo 2 PARA CADA Y de la pantalla 3 INTERCEPTAR todos los polígonos con el plano Y = β 4 PARA CADA X de la pantalla 5 INTERCEPTAR todos los segmentos obtenidos con el plano X = α 6 DETERMINAR el punto (X, Y, Z) con el menor valor de Z 7 DIBUJAR el pixel α, β con el color del polígono en ese pixel 8 FIN PARA 9 FIN PARA

Algoritmo 23: Seudo código de la función Linea_rastreo

La ventaja fundamental de este algoritmo es que requiere de poca memoria en dependencia de la cantidad de polígonos. Sus principales desventajas son: que se recorre toda la pantalla y no es tan sencillo de implementar. Ejercicios propuestos: 1. Hacer una herramienta en forma de seudo código que elimine las superficies

ocultas de un objeto a partir del punto de vista. 2. Escriba en forma de seudo código los pasos necesarios para obtener las

aristas o tramos de aristas visibles, a partir de conocer las caras visibles de un objeto.

3. Escriba en forma de seudo código el algoritmo de Profundidad

A

D B

C

D B´

a) b)

204

4. Escriba en forma de seudo código un procedimiento que realice la visualización del segmento de forma general, tomando como ejemplo la figura 165. El segmento de recta AB se encuentra detrás del polígono en forma de “L. Mientras el usuario está trabajando en el diseño, observa la proyección como aparece en la figura 165a, una vez que aplica el criterio de visibilidad se observa la figura 165b. Este resultado se enviará a la memoria de video para la visualización.

Figura 165: Visualización del segmento

Iluminación ¿Qué gracia tendría un mundo sin luz?... imaginemos por un momento un lugar en donde los colores sean simples y vanos...donde no existan matices... Aburrido, ¿no? Siempre las luces dan un sentido realístico a las escenas. Así es como en el mundo de la plástica tenemos a verdaderos maestros del “claroscuro”, que han legado importantes obras que combinan las luces y las sombras. La luz se puede definir como “la forma de la energía radiante que es capaz de estimular la retina del ojo humano provocando un proceso consciente que da lugar a las sensaciones visuales”. Ciertamente el manejo eficiente de las luces y las sombras para realizar representaciones estéticas no es tarea sencilla. Ya que en esto siempre se requiere de buen gusto e imaginación. La correcta posición de las luces, y la intensidad de cada una de estas es de gran relevancia en el área de la fotografía por ejemplo: una luz tenue puede darle a una escena un ambiente de melancolía, tristeza o invitar a la reflexión, mientras que una luz intensa y brillante puede servirnos para representar alegría, gozo y regocijo. Como vemos las luces tienen múltiples aplicaciones, estéticamente hablando. La iluminación puede estar compuesta por diferentes fuentes emisoras o incluso por los reflejos emitidos por los materiales que componen los objetos de nuestra escena. Existen diferentes modelos de iluminación que pueden ser utilizados a la hora de sintetizar una escena. Estos modelos abarcan varios aspectos de importancia para lograr escenas que parezcan lo más reales posible. Estos modelos se dividen en Modelos de iluminación simple y Modelos de iluminación complejos.

A

B

A

B

b) a)

205

Cuando la luz viaja directamente de la fuente luminosa y se refleja de la superficie se llama modelo de iluminación local. Para este modelo, el sombreado de cualquier superficie es independiente del sombreado de todas las otras superficies. Un modelo de iluminación global agrega al modelo local, la luz el resto de las fuentes que se reflejan de otras superficies e inciden en la superficie de análisis. Un modelo de iluminación global es más comprensivo, más físicamente posible y produce las imágenes más realistas. También es más costoso computacionalmente. Los modelos de iluminación tienen presente dos aspectos de la escena, la fuente de luz y las propiedades ópticas. De las fuentes de luz se debe considerar, su color e intensidad, la ubicación en las escena y el tipo de fuente. De las propiedades ópticas se debe tomar en cuenta el color, la reflexión, refracción y la textura. La combinación de las fuentes con las propiedades de los objetos hace que la escena adquiera un carácter real. Debido a estas características, se estudiarán fuentes de color blanco del tipo puntual, los objetos tendrán color negro y solo se analizara la reflexión. Por todas las razones expuestas, se estudiaran los modelos de iluminación simple, dejándose de estudio independiente otros métodos utilizados en las aplicaciones gráficas.

Modelo de Iluminación Simple En cualquier escenario donde interviene la luz ocurren un grupo de fenómenos físicos que definen las características de dicha escena a partir de las diferentes fuentes de iluminación. Cuando un fotón golpea una molécula generalmente trasmite energía como el calor y el fotón es absorbido. Para algunos fotones su energía es igual a la energía de resonancia de la molécula. Cuando esto pasa el fotón es absorbido y la molécula pasa a un estado de excitación. La molécula se relaja retornando a su estado inicial después de haberse excitado emitiendo un fotón con igual energía que la del fotón original entonces el fotón parece haber sido reflejado. El fotón emitido puede ir en cualquier dirección entonces éste es el mecanismo de la reflexión difusa. Para la reflexión del especular los fotones "rebotan" fuera de la superficie, por tanto son irradiados. La luz emitida por las diferentes fuentes hacia una superficie o superficies de la escena puede ser:

1. Absorbida por la superficie y convertida en calor (Absorción), 2. Reflejada por la superficie (Reflexión), 3. Transmitida a través del cuerpo (vidrio) (Refracción)

Un modelo de iluminación se puede definir como el cálculo de la intensidad luminosa observada en un punto P y puede ser escrito como:

206

I = f(p, PV, {O}, {F}) (261) Donde:

• p: punto de cálculo de la iluminación. • PV: posición del punto de vista. • {O}: modelo geométrico y material de los objetos. • {F}: modelo geométrico e intensidad de las fuentes de luz. • I: intensidad luminosa observada en p.

El modelo geométrico y material de los objetos esta dado por las caras visibles de los objetos en la escena y los vectores normales a las mismas así como las propiedades del material que intervienen en la iluminación (Coeficiente reflexión difusa, Coeficiente reflexión especular, Color, etc.) El modelo geométrico e intensidad de las fuentes de luz esta dado por la forma geométrica de la fuente emisora. El modelo de iluminación definido en la ecuación XXX, tendrá en consideración la incidencia del ambiente y de las propiedades de reflexión del material. Por tal motivo, se analizarán estos aspectos. Iluminación Ambiente Luz ambiente: se considera que hay una fuente de luz no direccional que no posee un origen en particular, es el producto de múltiples reflexiones de luz desde muchas fuentes presentes en el entorno, o sea, es la luz que choca contra los objetos en muchos ángulos, desde otros objetos y desde el ambiente. Debido a que posee un alto costo computacional se considera incidente en todas las superficies en todas las direcciones afectada solamente por el coeficiente de reflexión de la luz ambiental, su ecuación:

I = Ia • ka (262) Donde Ia, es la intensidad de la luz ambiente ka, el coeficiente de reflexión ambiente

Figura 166: Influencia del valor del coeficiente de atenuación ambiente

207

El coeficiente de atenuación ambiente varia entre 0 y 1, su influencia en una escena se puede apreciar en la relación que existe entre las figuras 166a y 166b. La figura de la izquierda posee un coeficiente menor que la figura de la derecha. Reflexión Los materiales tienen un espectro de reflexión que esta en función del ángulo de incidencia de la luz que entra. El color de un objeto es una función del espectro de color de la luz incidente y el espectro de reflexión de la superficie del objeto. Por ejemplo, si un objeto absorbiera toda la luz excepto el rojo entonces el objeto parecería ser rojo en una luz blanca. Considerando la fuente de luz incidente sobre un punto se puede determinar el valor de intensidad en el mismo por la relación que existe entre los diferentes vectores:

Figura 167: Vectores que intervienen en el cálculo de la intensidad

Donde L: vector de dirección de la fuente de luz que parte desde el punto de análisis N: normal a la cara. Vector hacia afuera R: rayo reflejado de la luz, saliendo desde la cara V: vector de visibilidad. Vector que toma la dirección desde el punto hacia el ojo del observador P: punto de análisis de la superficie donde se calcula el valor de la intensidad.

Luz difusa Reflexión difusa: parte de la luz reflejada por la superficie de un objeto de manera adireccional (igual intensidad en cualquier dirección)

• La intensidad de luz reflejada en un punto es independiente de la posición del observador.

• Ley de Lambert: “la componente difusa de la luz reflejada por una superficie es proporcional al coseno del ángulo de incidencia”. Es característico de las superficies mate: (tiza, paredes, telas,...).

Figura 168: Reflexión difusa

L

N

R

V

P

θ

L

N R

V

P

208

• El brillo depende únicamente del ángulo θ entre la dirección de L y de N (ángulo de incidencia).

Id = IP kd (N • L) (263)

Donde (N • L) = cos (θ): representa fracción de luz incidente que da en la cara kd : coeficiente de reflectividad difusa

• Se deben considerar efectos de la distancia y variación de la intensidad de

la fuente por tiempo de trabajo.

Reflexión especular La reflexión especular es la componente de la luz reflejada sobre una superficie brillante o pulida en una dirección preferente formando un brillo. La reflexión especular depende de la posición del observador.

En un espejo perfecto la dirección desde la que se observa el reflejo es la dirección de reflexión perfecta R. En las superficies normales, el brillo decae cuando el observador se aleja de la dirección de reflexión perfecta. Se podría modelar este efecto teniendo en cuenta el ángulo entre R y V.

Figura 169: Reflexión especular

También observamos que dependiendo de la superficie (grado de pulido) el brillo está más o menos concentrado alrededor del punto donde R y V coinciden. El modelo de Phong asume que la máxima reflectancia especular ocurre cuando α es cero y decae rápidamente conforme α se incrementa. Esta disminución puede aproximarse mediante cosn(α). De este modo, la intensidad especular reflejada por la superficie quedaría como

Is = Ip ks (R • V)n (264) Donde R • V = cos (ϕ): coseno de ángulo (proyección) entre rayo reflejado y dirección de visión n: exponente de brillo (glossiness): aproxima espejos imperfectos (coarse surfaces) que reflejan en torno a una dirección El rayo reflejado se obtiene a través de expresión:

L N

R

V

P

θ

α

209

R = 2 (N * L) N – L (265)

Atenuación de la luz del foco con la distancia Toda fuente de luz posee una distancia considerada desde el punto de análisis hasta el lugar de la fuente, a dicha distancia se le denominará dL. A medida que una fuente de luz se aleja del punto la incidencia de su intensidad disminuye. Por tanto, se busca una función de atenuación que haga decaer la intensidad del foco con la distancia. Algunos autores han utilizado un polinomio de segundo grado cuyos coeficientes se determinaron empíricamente y cuya función es descrita a seguir:

fat = ( )2L3L21 dCdCC

1** ++

(266)

Donde C1, C2, C3: Coeficientes (constante, lineal y cuadrático) de atenuación dependientes de la fuente dL: Distancia a la fuente puntual fat: Función de atenuación [0..1]

Modelo para una fuente de luz

I = Ia * ka + IP * fat [ kd (N • L) + ks (R • V)n ] (267) Para varias fuentes de luz la ecuación se transforma en:

I = Ia * ka + ∑=

m

1i

Vi* Ii * fat i [ kd (N • L) + ks (R • V)n ] (268)

Se introduce el término Vi significando la visibilidad de la fuente de luz con respecto al punto de análisis, ya que para el cálculo de la intensidad en un punto se tendrán en consideración solo las fuentes de luz que para este, son visibles. Modelos más complicados tienen en cuenta otros fenómenos que aquí se han simplificado, mejorando notablemente la calidad de la imagen a costa de un mayor coste computacional. Ejercicios propuestos: 1. Hacer una función que determine si una fuente de luz es visible para una cara

o superficie del objeto. 2. Hacer una función que determine la intensidad de una fuente de luz puntual

sobre un objeto no traslúcido.

210

3. Hacer una función que determine la intensidad de una fuente de luz puntual teniendo en consideración el resultado de la trayectoria del rayo por dos objetos de la escena.

Coloreado El color es un atributo de la visión. Si el ser humano no poseyera ojos que detectan un ámbito poco extenso de las radiaciones electromagnéticas, no sería posible identificar subjetivamente cada uno de los colores que se perciben en la vida real. Pero ¿qué es el color? El color, como otros términos, tiene diferentes significados. Los físicos lo aplican a las variaciones en las distribuciones espectrales de las luces, tanto si son emitidas directamente por fuentes como si lo son indirectamente reflejadas o transmitidas por objetos. Observe la figura 170.

Figura 170: Espectro electromagnético de la luz Los químicos utilizan la palabra color para referirse a diferencias espectrales debidas a variaciones en la composición molecular o en las configuraciones de los compuestos químicos. En sociología color significa un aspecto de la respuesta de un observador humano, una percepción que tiene lugar en el cerebro del observador como resultado de la estimulación visual. En el lenguaje normal el color se asocia con objetos, de modo que el mismo objeto debe de tener siempre el mismo color; así decimos rojo sangre o verde césped. Por lo tanto todos usamos la palabra color de manera diferente dependiendo del interés del momento. Si se tuviera que definir el color, sería quizá más simple y más directo utilizar la definición dada por Judd, que dice: “si dos objetos de igual forma y textura iluminados con la misma luz y en iguales condiciones de observación pueden

211

diferenciarse, el atributo de esos objetos que produce esa diferenciación es el color ”. Si se desea otra definición más rigurosa podría decirse que: “el color es el atributo de la luz que hace corresponder de forma unívoca a cada distribución espectral una sensación. Esta sensación está condicionada por la intensidad y duración del estímulo, el estado de adaptación del observador, el área de la retina afectada y el contraste luminoso y cromático con que se recibe”. Es evidente, entonces, que los colores dependen de los objetos, al mismo tiempo que de la luz que los ilumina. Sea cual fuere el iluminante empleado, sus propiedades físicas permanecerán inalterables; sin embargo, su apariencia psicológica dependerá de la composición espectral del iluminante; es por tanto un fenómeno psicofísico. La calidad de la imagen se puede mejorar incrementando: la resolución de la pantalla , el número de píxeles del dibujo y el número de colores disponibles.

Modelos de Color El propósito de los modelos es facilitar la especificación de colores en algún formato estándar. Se definen como una especificación de un modelo de coordenadas 3-D y un subespacio dentro de ese sistema donde cada color se representa por un punto único. Los modelos más difundidos son el CMY y RGB. Modelo CMY Se define el modelo a través de un proceso sustractivo y se obtienen los colores por luz reflejada. Se toma como espacio vectorial un cubo unitario como indica la figura 171. El vértice (1, 1, 1) representa el negro, el origen representa la luz blanca. Por tanto, todas las componentes de la luz incidente se sustraen. Cantidades iguales de cada uno de los colores primarios producen grises a lo largo de la diagonal principal del cubo.

Figura 171: Modelo de color rectangular CMY

Cyan (Verde-Azul)

Azul

Magenta

Rojo

Amarillo Verde

Blanco

Negro

1

1 1

212

Modelo RGB Este modelo se fundamenta en como nuestros ojos perciben el color a través de la simulación de tres pigmentos visuales en los conos de la retina rojo (Red), verde (Green) y azul (Blue). Es un modelo aditivo ya que las intensidades se suman para producir otros colores. Es basado en un sistema de coordenadas cartesiano y tiene como salida los tres colores primarios. La forma de este modelo puede observarse en la figura 172. Cada punto de color es una tríada (R,G,B), según se aprecia en la figura 172, cuyos valores están en el intervalo de [0, 1]. El modelo de color está formado por tres planos de imágenes independientes, cada una de los colores primarios. Las tres imágenes se combinan en la pantalla de fósforo para producir una imagen de color compuesta.

Figura 172: Modelo de color rectangular RGB

Modelos de coloreado de polígonos Coloreado constante Es el modelo más simple. Se calcula un solo valor de intensidad en un punto del polígono y con ese se colorea el polígono completo. Este enfoque es válido sólo si se cumple que: 1. La fuente de luz está en el infinito. De esta forma N L⋅ es constante.

2. El observador está en el infinito. De esta forma R V⋅ es constante. 3. El polígono es una superficie modelada y no una aproximación de una

superficie curva. Coloreado por interpolación En este modelo se obtienen por interpolación lineal los valores de intensidad de cada pixel a partir de los valores de intensidad en los vértices del polígono que se calculan aplicando el modelo de iluminación correspondiente. Es fácil implementar un algoritmo de líneas de exploración (scan - line) que ya interpole el valor de z a los tramos a partir de los valores en los vértices; pues la

Cyan Azul

Magenta

Rojo Amarillo

Verde

Blanco

1

1

1

213

interpolación de los valores de intensidad en cada pixel puede realizarse de forma análoga.

( )2s21

212a yy

yyII

II −−−

+= (269)

( )3s31

313b yy

yyII

II −−−

+= (270)

( )apab

abap xx

xxII

II −−−

+= (271)

Figura 173: Interpolación Observe la figura 173, donde el cálculo de la intensidad de un punto p intermedio a los puntos a y b se realiza a través de las expresiones 269, 270 y 271. Este enfoque mejora el coloreado constante en los casos en que no se cumplan las premisas 1 y 2, es decir, que la fuente o el observador no esté en el infinito. Sin embargo, en aquellos casos en que no se cumpla la premisa 3, es necesario colorear mallas de polígonos. Coloreado de mallas de polígonos Suponga que una superficie curva es aproximada a una malla de polígonos. Si cada polígono en la malla es coloreado individualmente, entonces los polígonos vecinos con orientaciones diferentes tienen límites marcados, siendo fácilmente distinguibles, produciendo un efecto de fraccionamiento de la superficie en caras. Esto ocurre utilizando para el coloreado de polígonos, cualquiera de los modelos vistos anteriormente o incluso, si para cada píxel se realiza el cálculo de intensidad, porque la diferente orientación de los polígonos provoca diferente iluminación en sus bordes coincidentes. Se presentarán dos métodos para el coloreado de mallas que al colorear un polígono tienen en cuenta sus vecinos para superar los problemas señalados anteriormente. Se tratarán estos métodos en orden creciente de complejidad y efecto realista. Coloreado de Gouraud (Interpolación de la intensidad) Extiende el modelo de coloreado por interpolación de polígonos a mallas. Primeramente deben ser conocidos los vectores normales a las superficies en los vértices de los polígonos de la malla, y de no ser conocido se obtiene una aproximación de la normal a la superficie en el vértice promediando las normales de los polígonos adyacentes a dicho vértice según la expresión:

Ip Ia

I2 I3

Ib

I1

ys

214

=

==n

1i

i

n

1i

i

v

N

NN (272)

Una vez que se tienen las normales a cada vértice se calcula la intensidad en cada uno de ellos utilizando el modelo de iluminación que se desee. Luego se aplica el modelo de coloreado por interpolación de intensidad a cada uno de los polígonos de la malla. Observe en la figura 174, que efecto provoca sobre una malla de polígonos la aplicación de este método.

Figura 174: Efecto del coloreado de Gouraud

En el método se interpolan las intensidades obtenidas en los vértices sobre la superficie del polígono, a través de los siguientes pasos: • Se determina el vector normal promedio en cada vértice del polígono • Se aplica un modelo de iluminación a cada vértice para calcular su intensidad • Se interpolan linealmente las intensidades de los vértices sobre la superficie

del polígono Coloreado de Phong (Interpolación de la normal) En este método se pasa a colorear cada polígono después de obtenido el vector normal en cada vértice (sean conocidos u obtenidos por aproximación). Al colorear un polígono se obtiene por interpolación de la normal en cada pixel y se calcula entonces por el modelo de iluminación utilizado, la intensidad de cada pixel. Este método mejora el coloreado de Gouraud, logrando mejor definición de las zonas de brillo cuando se utiliza reflexión especular. La interpolación lineal de la intensidad de Gouraud provoca que las zonas de brillos interiores al polígono no se noten o que una zona muy brillante que incluye un vértice del polígono se extienda prácticamente por todo el polígono. Los métodos de interpolación para mallas de polígonos logran mejorar los problemas planteados anteriormente, pero las aristas de los polígonos

215

generalmente se notan en las imágenes obtenidas. Los mejores resultados son obtenidos con mallas más finas, pero debe tenerse en cuenta el aumento del tiempo en la obtención de dichos resultados. Este método consiste en interpolar los vectores normales, aplicando el modelo de iluminación sobre cada punto de la superficie del polígono a través de los siguientes pasos: • Determinar el vector normal promedio en cada vértice del polígono • Interpolar linealmente los vértices normales sobre las superficie del polígono • Aplicar modelo de iluminación sobre los puntos de la superficie utilizando las

normales interpoladas Ejercicios propuestos: 1. Hacer una función que determine el vector normal promedio en un vértice de

un polígono. 2. Elaborar una función que determine la intensidad lineal de interpolación

conociendo las intensidades en los extremos de la arista . 3. Construir una función que determine la interpolación lineal de las normales de

sobre una superficie del polígono. 4. Hacer una función que determine el valor de intensidad en un punto utilizando

el modelo de Gouraud 5. Realice una función que determine el valor de intensidad en un punto utilizando

el modelo de Phong

216

217

Bibliografía 1. Allen; Natural Lenguage Understanding. Menlo Park, Benjamin Cummings Co.

1987. 2. Carroll; Designing Interaction. Cambridge. Cambridge University Press. 1991. 3. Carvalho, P. C. P. y Figueiredo, L. H.; Introduçäo a Geometria Computational,

18º Coloquio Brasileiro de Matemática, IMPA, 1991. 4. Castleman, K. R.; Digital Image Processing, Prentice Hall, 1979. 5. Chiyokura, H.; Solid Modeling with DesingBase: Theory and Implementation,

Addison – Wesley, 1988. 6. Cohen and Wallace.; Radiosity and Realistic Image Synthesys, Academic

Press, 1993. 7. Dodkin, D. P.; Computational Geometry: Then and Now, in: R. A. Earnshaw,

Theoretical Foundations of Computer Graphics and CAD, Springer – Verlag, 1988.

8. Eberts; User Interface Design, Prentice – Hall, 1994. 9. Edelsbrunner, H.; Algorithms in Combimatorial Geometry, Springer – Verlag,

1987. 10. Faugeras, O.; Three – Dimensional Computer Vision: a Geometric ViewPoint,

MIT Press, 1993. 11. Foley, J., van Dam, A., Feiner, S. y Hughes, J.; Computer Graphis: Principles

and Practice, 2nd edition in C. Addison – Wesley, Reading, MA, 1995. 12. Fosner, R.; OpenGL Programming for Windows 95 and Windows NT. Addison

– Wesley. Developers Press, 1997. 13. Genesereth, M. R. y Nilson, N. J.; Logical Foundations of Artificial Intelligence,

Morgan Kaufmann, 1987. 14. Gero, J. y Sudweeks, F.; Artificial Intelligence in Design, vols. 1992. 1994 &

1996, Kluwer Academic Pub. 15. Gomes, J. Y Velho, L.; Introduçäo a Computaçäo Gráfica, SBC – Sociedade

Brasileira de Computaçäo. Säo Paulo, 1990. 16. Gonzalez, R. C. y Woods, R. P.; Digital Image Processing, Addison – Wesley,

1993. 17. Gonzalez, R. y Wintz, P.; Digital Image Processing, Addison – Wesley, 1987. 18. Guibas, L. J. Y Stolfi, J.; Notes on Computational Geometry, Notas de aulas,

Stanford University, 1982. 19. Hall.; Illumination and Color in Computer Generated Imagery. Springer –

Verlag. 1989. 20. Hoffmann, C. M.; Geometric and Solid Modeling. 21. Jain, K. A.; Fundamentals of Digital Image Processing, Prentice – Hall, 1989. 22. Mantylla, M.; An Introduction to Solid Modeling, Computer Science Press, 1988 23. Maybury; Intelligent Multimedia Interfaces, Cambridge, Ma. MIT Press. 1993. 24. Melhorn, K.; Data Structures and Algorithms, Springer – Verlag, 1984. 25. Mortenson, M. M.; Geometric Modeling. John Wiley & Sons, 1997.

218

26. Neider, J., Davis, T. y Woo, M.; The OpenGL Programming Guide, Addison – Wesley, Reading, MA, 1993.

27. Norman y Draper; User – Centered System Design. Hillsdale – NJ, Lawrence Erlbaum and Associates. 1986

28. O´Rourke, J.; Art Gallery Theorems and Algorithms, Oxford University Press, 1987. Sedgewick, R. Algorithms, Addison – Wesley, 1988.

29. Preece et al.; Human – Computer Interaction. Addison – Wesley, 1994 30. Preparata, F. P. y Shamos, M. I.; Computacional Geometry: an Introduction,

Springer – Verlag, 1985. 31. Rich, E. y Knight, K.; Inteligencia Artificial (2ª Ed. Bras.) Rio de Janeiro,

Makron. 1994. 32. Rockwood, A. y Chambers, P.; Interactive Curves and Surfaces. Morgan

Kaufmann, 1996. 33. Rogers, D. F.; Procedural Elements for Computer Graphics, McGraw – Hill,

1985. 34. Rogers, D.F. and Alan Adams, J.: Mathematical Elements for Computer

Graphics, McGraw Hill, 1990 35. Russ, J. C.; Computer Assisted Microscopy, Plenum Press, 1990. 36. Russ, J. C.; Image Processing Handbook, CRC Press, 1992. 37. Schalkoff, R. J.; Digital Image Processing and Computer Vision, Wiley, 1989. 38. Schneiderman.; Designing the User Interface. Addison – Wesley. 1998. 39. Stilling, N. A. Et alii, Cognitive Science: an Introduction, MIT Press, 1987. 40. Tavares, G., Castelo, A. y Lopes, H.; Topological Methods in Geometric

Modeling. Livro para CNMAC93. 41. Toussaint, G. (ed); Computational Geometry, North-Holland, 1985. 42. Vince, J.; 3D Computer Animation. Addison – Wesley, 1992. 43. Watt, A. y Watt, M., Advanced Animation and Rendering Techniques. Addison

– Wesley, 1992. 44. Watt, A., 3D Computer Graphics, (2nd ed.), Addison-Welsley, 1992. 45. Winograd.; Bringing Design to Software. ACM Press. 1996. 46. Yao, F.; Computational Geometry, in: J. Van Leeuwen (ed), Handbook of

Theoretical Computer Science, MIT, 1990.

Otras publicaciones Computer Aided Geometric Design Cumputing Surveys Discrete and Computational Geometry Journal of ACM Proceedings of ACM Conferences on Computational Geometry