Unidad 2





Trazado de líneas
Diferentes tipos de líneas y situaciones en que se dibujan se resuelven con técnicas diferentes.
- Líneas cortas, o líneas que corren paralelas a otras que nos sirven de referencia.
- Líneas largas. Es el caso de líneas que unen dos puntos alejados, sin ninguna otra referencia. Las primeras líneas de cualquier croquis entran en esta categoría.
Líneas cortas o líneas paralelas a otras ya existentes se las puede dibujar de un solo trazo. Primero se deben mirar bien los puntos de inicio y terminación para luego ejecutar el trazo.
Para el trazado de líneas largas vamos a dar tres técnicas que se utilizarán según las circunstancias.

Líneas punto a punto
La técnica más rápida es, una vez determinados los puntos a unir se comienza moviendo el lápiz desde uno de ellos hacia el otro. Mientras se hace este movimiento se debe mantener la vista sobre el punto de destino. Esto último nos permitirá conservar la dirección.


Líneas compuestas
Una segunda técnica es proceder mediante trazos de cinco a siete centímetros; como si se estuviesen dibujando una sucesión de líneas más cortas. La interrupción del trazo permite verificar el rumbo del trazo y se corregir si es necesario. Los trazos sucesivos no se superponen a fin de posibilitar uniformidad de espesor. Se deja una pequeñísima luz entre ellos de forma tal que apenas resulte perceptible la interrupción y mantenga el espesor uniforme. 

Líneas de construcción
Una tercera técnica, particularmente aplicable cuando se está planteando el dibujo, es utilizar líneas de tanteo. Resulta un poco más lenta que las anteriores, pero es de gran ayuda para obtener líneas rectas particularmente cuando son muy largas. Consiste en insinuar la línea en forma apenas visible con trazos muy suaves. Idealmente, solo el dibujante debería percibir esos trazos de tanteo. Se observa el resultado obtenido. Se introducen las correcciones necesarias hasta lograr definir el trayecto correcto. Entonces se comienza el trazado de la línea en forma similar al primer método, pero ahora con una guía visual. Si fuese necesario, porque se utilizaron demasiadas líneas de tanteo, se podrán borrar las que no sirven, antes del trazado definitivo.

Modelo de Representación Polígonal sobre OpenGL.

La librería gráfica OpenGL es por naturaleza una librería orientada al trabajo con modelos poliédricos, por tanto nos será fácil realizar representación de esta naturaleza. Puntualizaremos que se trata de una librería de funciones orientada principalmente a modelos interactivos, por ello se premia la rapidez frente al espacio, el tipo de representación poligonal que empleara será por tanto explícita.

Las definiciones de primitivas poligonales en OpenGL se encierran entre las llamadas a las funciones:

glBegin(GLEnum tipo_primitiva) y glEnd(void). Entre dichas funciones deberemos especificar la lista de vértices que componen nuestro polígono. La función para pasar las coordenadas de cada vértice es glVertex3fv(GLFloat *coor), donde ‘coor’ es un vector que contiene las tres coordenadas del vértice.

Los valores normales para el tipo de primitiva son las constantes:

Valor de la Cte GL Tipo de Primitiva Poligonal

GL_POINTS Puntos aislados
GL_LINES Líneas de dos vértices
GL_LINE_STRIP Línea de cualquier numero de vértices
GL_LINE_LOOP Línea Cerrada.
GL_POLYGON Polígono de Cualquier tipo
GL_TRIANGLES Polígonos de tres lados
GL_TRIANGLE_STRIP Tira de Triangulos
GL_QUADS Polígonos de cuatro vertices
GL_QUAD_STRIP Tira de Cuadrilateros.
GL_TRIANGLE_FAN Abanico de triangulos.


Algoritmo de Línea Bresenham Básico

Un algoritmo preciso y efectivo para la generación de líneas de rastreo, desarrollado por Bresenham (1965), convierte mediante rastreo las líneas utilizando solo cálculos incrementales con enteros que se pueden adaptar para desplegar también curvas.

El algoritmo busca cual de dos pixeles es el que esta mas cerca según la trayectoria de la línea.

Consideremos el proceso de conversion para líneas con pendiente positiva 0 < m < 1.

Las posiciones de pixel a lo largo de la trayectoria de una línea se determinan al efectuar un muestreo de x en intervalos unitarios.

Si se inicia desde el extremo izquierdo (x0,y0) de una línea determinada, se pasa a cada columna sucesiva y se traza el pixel cuyo valor de y se aproxima mas a la trayectoria de la línea de rastreo.
Si suponemos que se debe desplegar el pixel en (xk,yk), a continuación se necesita decidir que pixel se debe desplegar en la columna xk+1.

Las alternativas son los pixeles (xk+1,yk), y (xk+1,yk+1).


Al realizar el muestreo en la posición xk+1 designamos la separación de pixeles verticales de la trayectoria de la línea matemática como d1 y d2.


Algoritmo DDA (Digital Differential Analyzer)

Es un algoritmo que se basa en el cálculo y la evaluación de un DeltaX ( X) y un DeltaY( Y). Por medio de las siguientes ecuaciones:
Se efectúa un muestreo de la línea en intervalos unitarios en una coordenada y se determinan los valores enteros correspondientes más próximos a la trayectoria de la línea para la siguiente coordenada.
Se aceptan como datos de entradas las dos posiciones de los pixeles correspondientes a los extremos de la línea P1(Xinicial,Yinicial) y P2(Xfinal,Yfinal). Las diferencias horizontal y vertical entre las posiciones de los extremos dados, se asignan a las varialbles DeltaX y DeltaY respectivamente. La diferencia con la mayor magnitud determina el valor del parámetro Pasos. Se procede a determinar la compensación necesaria(incremento), para generar la posición del pixel siguiente a lo largo de la trayectoria de la línea.
Luego, se ilumina la posición en la pantalla. y se repite este proceso cíclico Pasos Veces, hasta obtener la línea deseada.

Traslación



Se aplica una traslación en un objeto para cambiar su posición a lo largo de la trayectoria de una línea recta de una dirección de coordenadas a otra. Convertimos un punto bidimensional al agregar las distancias de traslación, tx y ty la posición de coordenadas original (x,y)

El par de distancia de traslación se llama vector de traslación o vector de cambio. Se pueden expresar las ecuaciones anteriores en una sola ecuación matricial al utilizar vectores de columna para representar las posiciones de coordenadas y el vector de traslación

Los polígonos se trasladan al sumar el vector de traslación a la posición decoordenadas de cada vértice y se vuelve a generar el polígono utilizando un nuevo conjuntode coordenadas y vértices y las especificaciones actuales de los atributos.

















Escalación
Una transformación de escalación altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por los factores de escalación s x y s  y para producir las coordenadas transformadas (x’, y’ )
Rotación
Se aplica una rotación bidimensional en un objeto al cambiar su posición a lo largo de la trayectoria de una circunferencia en el plano de xy . Para generar una rotación, especificamos un ángulo de rotación θ y la posición (x r , y r ) del punto de rotación (o punto pivote) en torno al cual se gira el objeto.

















Coordenadas y matrices homogéneas
La representación mediante coordenadas homogéneas de la localización de sólidos e n un espacio dimensional se realiza a través de coordenadas de un espacio (n+1)-dimensional. Es decir, un espacio n-dimensional se encuentra representado en coordenadas homogéneas por (n+1) dimensiones, de tal forma que un vector p(x,y,z) vendrá representado por p(wx,wy,z,w), donde w tiene un valor arbitrario y representan un factor de escala.
A partir de la definición de las coordenadas homogéneas surge inmediatamente el concepto de matriz de transformación homogénea. Se define como matriz de transformación homogénea T a una matriz de dimensión 4*4 que representa la transformación de un vector de coordenadas homogéneas de un sistema de coordenadas a otro.
Así pues, se puede considerar que una matriz homogénea se haya compuesta por cuatro submatrices de distinto tamaño: una submatriz R3*3 que corresponde a una matriz de rotación; una submatriz p3*1 que corresponde al vector de traslación; una submatriz f1*3 que representa una transformación de perspectiva, y una submatriz w1*1 que representa un escalado global. En robótica generalmente solo interesara conocer el valor de R3*3 y de p3*1 , considerándose las componentes f1*3 nulas y la de w1*1 la unidad, aunque mas adelante se estudia su utilidad en otros campos. Al tratarse de una matriz 4*4, los vectores sobre los que se aplique deberán contar con 4 dimensiones, que serán las coordenadas homogéneas del vector tridimensional de que se trate.
Si como sé a mencionado, se considera la transformación de perspectiva nula y el escalado global unitario, la matriz homogénea T resultara de la siguiente forma:

que representa la orientación y posición de un sistema 0’UVW rotado y trasladado con respecto al sistema de referencia 0XYZ. Esta matriz sirve para conocer las coordenadas (rx,ry,rz) del vector r en el sistema 0XYZ a partir de sus coordenadas (ru,rv,rw) en el sistema 0’XYZ:
En resumen, una matriz de transformación homogénea se puede aplicar para:
1.-Representar la posición y orientación de un sistema girado y trasladado O’UVW con respecto a un sistema fijo de referencia oxyz, que es lo mismo que representar una rotación y traslación realizada sobre un sistema de referencia.
2.-Transformar un vector expresado en coordenadas con respecto a un sistema O’UVW, a su expresión en coordenadas del sistema de referencia OXYZ.
3.-Rotar y trasladar un vector con respecto a un sistema de referencia fijo 0XYZ.



Ventana y puesto de visión 

COLOCACIÓN DE VENTANAS Y RECORTE
Los programas de aplicaciones definen imágenes en un sistema de coordenadas mundiales. Este puede ser cualquier sistema de coordenadas Cartesianas que un usuario halle conveniente. Las imágenes definidas en coordenadas mundiales son procesadas por el sistema de graficas en coordenadas de dispositivo. Comúnmente, un paquete de graficas permite a un usuario especificar qué área de la definición de la imagen se desplegara y donde se colocara en el dispositivo de despliegue. Podría elegirse una sola área para el dispositivo de despliegue o bien podrían seleccionarse varias áreas. Estas áreas pueden colocarse en localidades aparte del despliegue o bien un área puede servir como una pequeña inserción en un área mayor. Este proceso de transformación implica operaciones para trasladar y escalar áreas seleccionadas y para borrar partes de la imagen que estén fuera de las áreas. Estas operaciones se conocen como colocación de ventanas y recorte.
CONCEPTOS DE COLOCACIÓN DE VENTANAS
Un área rectangular que se especifica en coordenadas mundiales se denomina ventana. El área rectangular en el dispositivo de despliegue en el cual se coloca la ventana se llama puerta de visión. La figura 1 ilustra el trazo o planimetría de la selección de una imagen que queda dentro del área de ventana en una puerta de visión designada. Esta planimetría se llamatransformación de la visión o bien transformación de normalización.


Los límites de la ventana se especifican en coordenadas mundiales. Las coordenadas de dispositivo normalizadas se usan con mayor frecuencia para la especificación de la puerta visión, aunque las coordenadas del dispositivo pueden emplearse si hay solamente un dispositivo de salida en el sistemas. Cuando se usan coordenadas de dispositivo normalizadas, el programador considera el dispositivo de salida como aquel que tiene valores coordenados dentro del intervalo de 0 a 1.


Figura 2

Planimetría de una ventana en puerta de visión en coordenadas de dispositivo normalizadas.
Las posiciones de coordenadas que se expresan en coordenadas de dispositivo normalizadas deben convertirse a las coordenadas del dispositivo antes de que un dispositivo de salida específico haga el despliegue. Una rutina específica del dispositivo se incluye en paquetes de gráficas con este fin. La ventaja de emplear coordenadas de dispositivo normalizadas es que el paquete de gráficas es considerablemente independiente del dispositivo. Pueden utilizarse distintos dispositivos de salida ofreciendo los conductores adecuados del dispositivo.
Cambiando la posición de la puerta de visión, los objetos pueden desplegarse en diferentes posiciones en un dispositivo de salida. Asimismo, variando el tamaño de las puertas de visión, el tamaño y las proporciones de los objetos pueden alterarse. Cuando se trazan en forma sucesiva ventanas de diferentes tamaños en una puerta de visión, pueden lograrse efectos de acercamiento. Conforme las ventanas se hacen pequeñas, un usuario puede lograr el acercamiento de alguna parte de una escena para visualizar detalles que no se muestran con las ventanas mayores.
Analógicamente, puede obtener un panorama general más amplio realizando un acercamiento de una sección de escena con ventanas cada vez más mayores. Los efectos de toma panorámica se producen moviendo o desplazando una ventana de tamaño fijo a través de una imagen grande.
Un ejemplo del uso de comandos múltiples de colocación de ventanas y puertas de visión se da en el siguiente procedimiento. Se despliegan dos graficas en diferentes mitades de un dispositivo de despliegue (Figura 3).

Figura 3
Despliegue simultaneo de dos gráficas, utilizando especificaciones múltiples de colocación de ventanas y puertas de visión.
Otro método de establecer múltiples áreas para la colocación de ventanas y puertas de visión en un paquete de gráficas consiste en asignar un rotulo a cada especificación. Esto podría hacerse incluyendo un quinto parámetro en los comandos de ventana y puertas de visión para identificar cada área definida. El parámetro puede ser un índice entero (0, 1, 2,…) que numere la definición de la ventana o puerta de visión. Entonces se necesita un comando adicional para indicar un conjunto de proporciones de salida. Este esquema de enumeración podría utilizarse también para asociar una prioridad con cada puerta de visión de manera que la visibilidad de las puertas de visión superpuestas se decida sobre una base de prioridad. En la Figura 4 se muestran puertas de visión desplegadas según su prioridad.

Figura 4
Despliegue de puertas de vision en orden de prioridad. A las puertas de vision con numeración inferior se les da mayor prioridad.
Para implantaciones que incluyen estaciones de trabajo múltiples, podría definirse un conjunto adicional de comandos de colocación de ventanas y puertas de visión. Estos comandos incluyen un número de estación de trabajo para establecer diferentes áreas de ventana y puertas de visión en diferentes estaciones de trabajo. Esto permitirá a un usuario desplegar varias partes de la imagen final en diferentes dispositivos de salida. Por ejemplo, un arquitecto podría desplegar la totalidad de un plano de una casa en un monitor y solamente el segundo piso en un segundo monitor.
ALGORITMOS DE RECORTE
El trazo del área de una ventana en una puerta de visión produce el despliegue solamente de las partes de la imagen que están dentro de la ventana. Todo lo que está afuera de la venta se desprecia. Los procedimientos para eliminar todas las partes de una imagen definida situada fuera de fronteras específicas se conocen como algoritmos de recorte de recorte o simplemente recorte.
La transformación de colocación de ventanas a menudo se realiza por recorte de la ventana, trazando después el interior de la ventana en la parte de visión . Alternativamente, algunos paquetes trazan la definición en coordenadas mundiales en coordenadas de dispositivo normalizadas primero y después se recortan los límites de la puerta de visión.
El recorte de puntos contra una especificación de ventana simplemente significa que se prueban valores coordenados para determinar si están o no dentro de las fronteras. Un punto en la posición (x,y) se salva para la transformación en una puerta de visión si satisface las siguientes desigualdades:
Si alguna de estas cuatro desigualdades no se cumple, el punto se recorta. En la figura 5, el punto P, se salva y el punto P2 se recorta.
FIGURA 5
Recorte de punto y líneas contra una frontera de ventana.
Recorte de Líneas.
La figura 5 ilustra las posibles relaciones existentes entre las posiciones de líneas y las fronteras de ventanas. Se hace la prueba de recorte de una línea determinando si los puntos extremos están dentro o fuera de la ventana.
Un algoritmo de recorte de líneas determina cuales líneas están totalmente dentro de las fronteras de la ventana y las cuáles se recortarán total o parcialmente. Para las líneas que se recortarán en forma parcial, los puntos de intersección con las fronteras de la ventana deben calcularse. Como la definición de una imagen puede contener miles de segmentos de línea, el proceso de recorte debe efectuarse lo más eficientemente posible. Antes de realizar cálculos de intersecciones, un algoritmo debe identificar todas las líneas que se salvarán o que se recortarán por completo. Una vez que se prescinde de estas líneas la determinación de los puntos de intersección de las líneas restantes debe efectuarse con un mínimo de cálculos.
Un punto de vista de recorte de líneas se basa en un esquema de color creado por Cohen y Sutherland. Todos y cada uno de los extremos de las líneas de una imagen son asignados a un código binario de cuatro dígitos o cifras, llamado código de región, que identifica la región coordenada del punto. Las regiones se establecen en relación con las fronteras de la ventana, como se muestra en la figura 6. Cada posición de bit del código de región se utiliza para indicar una de las cuatro posiciones coordenadas relativas del punto con respecto a la ventana: a la izquierda, derecha, arriba o abajo. Numerando las posiciones de los bits del código de región como de 1 a 4 de izquierda a derecha, las regiones coordenadas pueden correlacionarse con las posiciones de los bits como
Bit 1 - Izquierda
Bit 2 - Derecha
Bit 3 - Abajo

Bit 4 – Arriba

FIGURA 6
Códigos binarios de región para extremos de una línea que se usan para definir áreas coordenadas relativas a una ventana.
Un valor de 1 en cualquier posición de bit indica que el punto está en esa posición relativa; en caso contrario, la posición del bit se hace 0. Si un punto está dentro de la ventana, el código de región es 0000. Un punto que está dentro de la ventana, tiene un código de región de 0101.
Los valores de los bits del código de región se determinan comparando los valores coordenados de los extremos (x , y) en los límites de la ventana. El bit 1 se hace 1 si x < xwmin. Los tres valores de los bits pueden determinarse mediante el uso e comparaciones análogas. Para lenguajes en los cuales es posible la manipulación de bits, los valores de los bits del código de región pueden determinarse por medio de estas etapas: (1) Calcule las diferencias entre las coordenadas de los extremos y las fronteras de la ventana. (2) Utilice el bit del signo resultante de cada cálculo de diferencia para fijar el valor correspondiente en el código de región. El bit 1 es el bit signo de x -xwmin ; el bit 2 es el bit signo de xwmax – x ; el bit 3 es el signo de y- ywmin y el bit 4 es el bit signo ywmax – y.
Una vez que se han establecido códigos de región de todos los puntos extremos de las líneas, se puede determinar rápidamente cuáles líneas están completamente dentro de la ventana y cuales están afuera con toda claridad.
Las líneas que no pueden identificarse como completamente dentro o completamente fuera de una ventana por medio de estas pruebas se verifican de intersección con las fronteras de la ventana. Cómo se muestra en la figura 7 tales líneas pueden o no atravesar el interior de la ventana. Podemos procesar estas líneas comparando un punto externo que esta fuera de la ventana con una frontera de la ventana para determinar qué cantidad de la línea puede despreciarse. Por tanto la parte remanente de la línea se verifica contra las otras fronteras y se continua hasta que la línea se descarta por completo o bien en hasta que se halla una sección en el interior de la ventana. Se construye el algoritmo para verificar extremos de líneas contra las fronteras de ventanas en el orden izquierda, derecha, abajo, arriba.

FIGURA 7

Las líneas que se extiende de una región coordenada a otra pueden atravesar la ventana o bien pueden cortar las fronteras de la ventana sin entrar en la ventana.
Para ilustrar las etapas específicas del recorte de líneas contra las fronteras de ventanas mediante el uso del algoritmo Cohen-Sutherland, se muestra la forma en que las líneas de la figura 7 podrían ser procesadas. Comenzando con el extremo inferior de la línea P1 a P2, se verifica P1 contra las fronteras izquierda, derecha e inferior en turno y se halla que este punto está debajo de la ventana. Después se encuentra el punto de intersección P’1 con la frontera inferior y se desprecia la sección de la línea que va de P1 a P’1. La línea ahora se ha reducido a la sección de P’1 a P2. Como P2 está fuera de la ventana, se verifica este punto extremo contra las fronteras y se observa que está arriba de la ventana. El punto de intersección P’2 se calcula y se salva la sección de la línea P’1 a P’2.
Los puntos de intersección con la frontera de la ventana se calculan mediante el uso de los parámetros de la ecuación de la recta. Para una recta con coordenadas de puntos extremos (x1y1) y ( x2y2), la coordenada y del punto de intersección con una frontera vertical de ventana puede obtenerse con la operación
y1 + m ( x - x1)
Donde el valor x se hace igual a xwmin o bien xwmax y la pendiente m se calcula como = ( y2 –y1) / ( x2 –x1). Analógicamente, se busca la intersección con una frontera horizontal, la coordenada x puede calcularse como

Con y que se hace igual a ywmin o bien ywmax .
Cada calculo de una coordenada de punto medio implica sólo una adición y una división por 2 (una operación de corrimiento). Una vez que se han determinado las coordenadas del punto medio, cada mitad de la línea puede ser probada para aceptación o rechazo total. Si la mitad de la línea puede aceptarse o despreciarse, entonces la otra mitad se procesa en la misma forma. Esto continúa haciéndose hasta que se halle un punto de intersección. Si una mitad de la línea no puede ser aceptada o despreciada trivialmente, cada mitad se procesa hasta que la línea se desprecie por completo o bien se advierta una sección visible.

Fonteras de la puerta de visión después de que las descripciones de los objetos se hayan transformado en coordenadas de dispositivo.

Otras técnicas de recorte de líneas que se han creado se valen de una forma paramétricasde la ecuación de la recta. podemos escribir la ecuación de un segmento de recta definido entre los puntos extremos (x1. y1 ) y (x2 y2) en la forma paramétricas.







X=X1 + (X2 .X1)u=X1 + rXu
Y=Y1 + (Y2 .Y1)u=Y1 + rYu
Donde rx=x2 -x1 y ry=y2 -y1. al parámetro u se le asigna valores entre 0 y 1, y las coordenadas (x , y) representan un punto en la línea especificado por un punto en línea especifica por un valor de u =0,( y , x ) = ( x1 , y2 ). en el otro extremo de la línea, u = 1 y ( x, y) = (x2, y2).
un algoritmo de recorte de líneas eficaz que utiliza estas ecuaciones paramétricas ha sido creado por liang y barsky. ambos advierten que si un punto (x. y ) a lo largo de la recta esta dentro de una ventana definida por las coordenadas (xw min yw min) y (xw min yw min) , se cumplen las condiciones siguientes:



xw mín < x1 + rx u < xw mín
yw mín < y1 + ryu < yw mín

estas cuatro desigualdades pueden rescribirse en la forma
pk u qk, k=1,2,3,4

donde p y q se definen como
p1=-rX, q1=x1 - xwmín q1 =x1 -xw min
p2=rX, q2= xwmáx - xq2 =xw máx x1
p3=-rY, q3=y1 - ywmín q2 =y1 - yw min
p4=ry, q4= ywmáx - yq4 =yw máx - y1



Cualquier recta que es paralela a una de las fronteras de la ventana tiene pk = 0 para el valor del correspondiente a la frontera (k - 1, 2, 3 y 4 corresponden a las fronteras de la izquierda, derecha, abajo y arriba, respectivamente). si. para el valor de k, se halla también que 0, entonces la línea está completamente afuera de la frontera y puede eliminarse sin mayor consideración. si a, la recta paralela esta dentro de la frontera.


cuando pt < 0, la extensión finita de la linea procede del exterior por la interior de la extensión infinita de esta frontera particular de la ventana. si pk > 0, la linea procede del interior al exterior. para ten valor de diferente de cero, se puede calcular el valor de u que corresponde al punto donde la línea infinitamente extendida corta la extensión de la frontera de la ventana k como



u=qk/pk


Para cada línea, se pueden calcular los valores de los parámetros h, y u, que definen esa parte de la recta que está dentro de la ventana. El valor de u, de­termina observando las aristas de la ventana para las cuales la línea procede des­de el exterior al interior. Para estas aristas de la ventana, se calcula rt = qk/pk. El valor de u se toma como el mayor del conjunto que consta de 0 y los diversos valores de r. a la inversa, el valor de u2 se determina examinando las fron­teras para las cuales la línea procede del interior al exterior (p > 0). Se calcula „0 valor de rk para cada una de estas fronteras de la ventana y el valor de u2 es el mínimo del conjunto que consta de 1 y de los valores de r calculadas. si u1 > u2 línea está completamente fuera de la ventana y puede despreciarse. en caso contrario, los extremos de la línea recortada se calculan a partir de los dos valores el parámetro u.

Este algoritmo se presenta en el procedimiento que sigue. Los parámetros de intersección de la recta se inicializan a los valores ul = 0 y u2 = 1. Para cada frontera de la ventana, los valores adecuados de p y q se calculan y se utilizan en la función cliptest para determinar si la línea puede despreciarse o si los paráme­tros de intersección se ajustarán. Cuando p < 0, el parámetro r se utiliza para actualizar ul cuando p > 0. el parámetro r se usa para actualizar u2. Si la actualizaciónde u1 o u2 produce ul > u2, se desprecia la línea.
El algoritmo de recorte de líneas de Liang y Barsky reduce las cálculos que se necesitan para recortar líneas. cada actualización de uy u2 . Requiere sólo una división y las intersecciones en la ventana de la línea se calculan solamente una vez, cuando los valores de u1 y u2 se hayan terminado. en cambio, el algoritmo de Cohén y Sutherland calcula repetidamente puntos de intersección entre las fronteras de la línea y la ventana y cada cálculo de intersección requiere una división y una multiplicación.
Cuando las ventanas giradas o los polígonos estructurados arbitrariamente se utilizan en ventanas y puertas de visión. los algoritmos de recorte de líneas.

Recortes de Áreas
Las áreas de polígonos se definen especificando una secuencia ordenada de vértices. Para recortar un polígono, se compara cada uno de los vértices en turno contra una frontera de la ventana. Los vértices contenidos dentro de esta arista de esta ventana se salvan para cortarse contra la siguiente frontera; los vértices situados fuera de la arista de la ventana se desprecian. Si se procede desde un punto interno de la arista de la ventana hasta un punto exterior, se salva la intersección como el vértice se salva si se cruza el exterior de la arista de una ventana al exterior. Las cuatro situaciones posibles que pueden ocurrir cuando se procesa un punto (P) y el punto anterior (S) contra la frontera de una ventana.



Una vez que todos los vértices se han procesado de la frontera de la ventana de la izquierda, el conjunto de puntos salvados se recorta contra la siguiente frontera de la ventana.
Recorte de un polígono contra la arista de una ventana, comenzando con el vértice 1. Los números primos se utilizan para rotular los puntos salvados por el algoritmo de recorte.

La implantación del algoritmo como se desarrollo necesita espacio de almacenamiento extra para los puntos salvados. Esto puede evitarse si se toma cada punto que se salvaría e inmediatamente se pasa a la rutina de recorte, junto con las instrucciones para recortarlo contra la siguiente frontera. Se salva un punto (un vértice original o bien una intersección calculada) sólo después de que se haya procesado contra todas las fronteras. Es como si se tuviera una serie de rutinas de recorte, con cada fase de la serie efectuando el recorte contra una frontera diferente de la ventana. Un punto que está dentro o bien sobre la frontera de la ventana en una fase se pasa a la siguiente fase. Un punto que se esté fuera en alguna fase simplemente no continúa en la serie.
Cuando un polígono cóncavo se recorta contra una ventana rectangular, el área recortada final puede representar realmente dos o más polígonos distintos. Como este algoritmo de recorte de áreas produce solo una lista de vértices, estas áreas separadas se unirán con líneas conectivas. Un ejemplo de este efecto se muestra en la siguiente figura.

Pueden darse consideraciones especiales a casos como la supresión de líneas extra o bien pueden emplearse algoritmos de recorte más generales.

El recorte de áreas diferentes a polígonos requieren un poco más de trabajo, ya que las fronteras de las áreas no se definen con ecuaciones de líneas rectas. Por ejemplo, en la siguiente figura, se necesitan ecuaciones de la circunferencia para hallar los dos puntos en la frontera de la ventana.

Recorte de Texto
El método más simple para procesar cadenas de caracteres relativas a la frontera de una ventana consiste en utilizar la estrategia del “recorte de texto todo o nada”. Como se muestra en la siguiente figura. Si la cadena de texto está dentro de una ventana, se conserva. En caso contrario, la cadena se desprecia.

Este procesamiento puede implementarse considerando un rectángulo limítrofe alrededor del modelo de texto. Las posiciones en la frontera del rectángulo se comparan después con las fronteras de la ventana y la cadena se desprecia si hay alguna sobreposición. Este método produce el recorte de textos más rápido.
Una alternativa para despreciar toda una cadena de caracteres que está sobre puesta en una frontera de la ventana consistente en emplear la estrategia “recorte de texto todo o nada”. Aquí se desprecian solo aquellos caracteres que no están completamente dentro de la ventana. En este caso, los límites de la frontera de caracteres individuales se comparan con la ventana. Cualquier carácter que cubre o bien esté fuera de la frontera de una ventana se recorta.










Un método final para manejar el recorte de texto consiste en recortar caracteres individuales. Ahora, los caracteres se tratan casi en la misma forma en que se recortan las líneas. Si un carácter individual cubre una frontera de la ventana, se recortan las partes que están fuera de la ventana. Loa caracteres formados con segmentos de líneas pueden procesarse en esta forma utilizando un algoritmo de recorte de líneas. El procesamiento de caracteres formados con mapas de bits requiere el recorte de pixeles individuales comparando la posición relativa de los modelos de retícula con las fronteras de la ventana.

Antes

Supresión
En vez de salvar información dentro de una región definida, el área de una ventana puede utilizarse para suprimir (borrar) cualquier elemento que éste dentro de sus fronteras. Lo que se salva es lo que está en el exterior.
La supresión de todas las primitivas de salida que están dentro de un área definida es un medio adecuado para superponer diferentes imágenes.

Cuando se van sobreponer dos despliegues utilizando métodos de supresión, un despliegue puede pensarse como el frente y el otro como el fondo. Una ventana con supresión, que encompasa el área de despliegue del frente, se superimpone sobre la imagen del fondo y las partes de la imagen dentro del área de la ventana se suprimen. Después se combinan los dos despliegues con la información del frente colocada dentro del área de la ventana suprimida.
2.4 Transformación ventana-área de vista
El modelo del mundo que se quiere representar almacena los objetos expresados usando un sistema de coordenadas reales llamado sistema de coordenadas del mundo, en el que los objetos se expresan en cualquier unidad que tenga significado par la aplicación.
La aplicación dibuja los objetos en un sistema de coordenadas enteras, llamado sistema de coordenadas de dispositivo. Es necesario hacer una correspondencia que transforme coordenadas de un sistema en otro y viceversa. Lo que hacemos es expresar una ventana en coordenadas del mundo, en un puerto de visión expresado en coordenadas de dispositivo. La pantalla viene definida por un sistema de coordenadas enteras (píxeles).


Estos cálculos de transformación de ventana en puerta de visión pueden expresarse de la siguiente forma:
xv=sx(xw-xwmín)+xvmín
yv=sx(yw-ywmín)+yvmín
Incluyen factores de escalación y traslación.



En esta unidad aprendimos como las imágenes en dos dimensiones son mas complejas de lo que parecen los cuales se crean del trazo de lineas rectas o piligonos que aparecen después en nuestras pc´s todo esto se crea por el movimiento de pixeles mas cercanos para hacer una linea recta y siguen un famoso Algoritmo de Línea Bresenham Básico.

Gracias a esto nos podemos dar cuenta que las lineas rectas no son tan rectas como aparentan sino que son una seria de pixeles que se rellenan asta formarla si quisiéramos ver este movimiento de pixeles o ver como es que esta formada la linea tendríamos que utilizar una computadora muy antigua para verlo ya que en las de hoy en día es muy difícil darse cuenta de ello y si no podríamos darle zoom lo mas que se pueda y veríamos como es que la linea pierde su forma para mover sus pixeles.

No hay comentarios.:

Publicar un comentario