Algoritmos basicos de dibujo en 2 d

46
JUAN CARLOS PACHON RODRIGUEZ YENNIFER CARDENAS REYES ALGORITMOS BÁSICOS DE DIBUJO EN 2 DIMENSIONES

Transcript of Algoritmos basicos de dibujo en 2 d

Page 1: Algoritmos basicos de dibujo en 2 d

JUAN CARLOS PACHON RODRIGUEZ

YENNIFER CARDENAS REYES

ALGORITMOS BÁSICOS DE DIBUJO

EN 2 DIMENSIONES

Page 2: Algoritmos basicos de dibujo en 2 d

Que es un algoritmo

Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.

Una secuencia de pasos que conducen a la realización de una tarea.

Page 3: Algoritmos basicos de dibujo en 2 d

Que es un algoritmo básico

Son algoritmos que ayudan a crear graficas primitivas comolíneas, circunferencias y arcos.

Que es un dibujo en una dimensión

Un dibujo con una dimensión tendrá solo lo largo.

Page 4: Algoritmos basicos de dibujo en 2 d

Que es un dibujo en dos y tres dimensiones

Un dibujo en dos dimensiones, tiene el largo y el ancho. Por ejemplo un cuadrado, rectángulo, círculo. (figuras geométricas)

Y un dibujo en tres dimensiones mostrará largo, ancho y profundidad. Por ejemplo una esfera, un cubo, una pirámide. (Cuerpos geométricos)

Page 5: Algoritmos basicos de dibujo en 2 d

Que es una recta

Una sucesión infinita de puntos, situados en una misma dirección. Una recta tiene una sola dimensión: la longitud.

Page 6: Algoritmos basicos de dibujo en 2 d

Que es una circunferencia

Se llama circunferencia al lugar geométrico de los puntos del plano que equidistan de un punto fijo llamado centro.

Page 7: Algoritmos basicos de dibujo en 2 d

Que es un polígono

Un polígono es una figura geométrica formada por segmentos consecutivos no alineados, llamados lados.

Page 8: Algoritmos basicos de dibujo en 2 d
Page 9: Algoritmos basicos de dibujo en 2 d

Cambio de escala

Supongamos que se nos pide el dibujo de un objeto que mide 1,00

X 2,00 metros.Evidentemente, el tamaño a que ejecutaremos el dibujo no ha de

ser el real, pues resultaría demasiado grande, por lo tanto

será necesario reducirlo proporcionalmente.

Page 10: Algoritmos basicos de dibujo en 2 d

Cambio de escala

Page 11: Algoritmos basicos de dibujo en 2 d

Puntos: Se especifican a partir de su localización y color.

Segmentos de recta: especifican a partir de un par de puntos que representan sus extremos.

Algoritmos básicos

Page 12: Algoritmos basicos de dibujo en 2 d

Escoger un método de discretización para una primitiva gráfica.

permitan evaluar y comparar las ventajas y desventajas de las distintas alternativas.

Especificaciones de una discreción

Page 13: Algoritmos basicos de dibujo en 2 d

Apariencia: tenga una “apariencia recta” más allá de que se hallan escogido los pixeles matemáticamente más adecuados.

Especificaciones de una discreción

Page 14: Algoritmos basicos de dibujo en 2 d

Simetría e invariancia geométrica

Es la discretización de un segmento no debe variar si dicho segmento setraslada a otra localización en el espacio, o si es rotado, etc.

Especificaciones de una discreción

Page 15: Algoritmos basicos de dibujo en 2 d

Simplicidad y velocidad de cómputo:

Son métodos que tienden a no depender de estructuras complejas y a ser directamente implementables en hardware específico de baja complejidad.

Especificaciones de una discreción

Page 16: Algoritmos basicos de dibujo en 2 d

Dada una primitiva gráfica a discretizar, debemos encontrar los pixeles que larepresenten de la manera más correcta posible. Para ello, lo más adecuado escaracterizar matemáticamente a dicha primitiva.

Métodos de discretización

Page 17: Algoritmos basicos de dibujo en 2 d

Evaluar su ecuación diferencial a diferencias finitas: Este método,denominado DDA (discrete diference analyzer) consiste en plantear la ecuacióndiferencial de la primitiva a discretizar, y luego evaluar dicha expresión a intervalosadecuados.

Métodos de discretización

Page 18: Algoritmos basicos de dibujo en 2 d

Análisis del error: Estos métodos fueron desarrollados por Bressenham y sebasan en analizar, dado un pixel que pertenece a la discretización de la primitiva, cuál es el próximo pixel que minimiza una determinada expresión que evalúa el error que comete la discretización.

Métodos de discretización

Page 19: Algoritmos basicos de dibujo en 2 d

El análisis de los métodos de discretización de rectas parte de considerar el comportamiento esperado en determinados casos particulares. Dichos casos surgen de suposiciones específicas que simplifican el problema.

Segmentos de recta

Page 20: Algoritmos basicos de dibujo en 2 d

La Figura, donde el origen es el pixel que corresponde a la discretización del punto(x0;y0) y la zona sombreada a los lugares donde puede ubicarse el punto (x1;y1 ).

Segmentos de recta

Page 21: Algoritmos basicos de dibujo en 2 d

El método busca encontrar una secuencia de n + 1 puntos tales que (x0;y0) =(x0;y0); (x1;y1 ); … (xn;yn) = (x1;y1 ). La discretización de cada uno de ellos son los pixeles de la discretización del segmento.

Segmentos de recta DDA

Page 22: Algoritmos basicos de dibujo en 2 d

E Determina la “frecuencia” de muestreo del segmento.

Observese que los puntos extremos (x0; y0) a (x1;y1 ) son en efecto puntos y por lo tanto están ubicados en cualquier lugar dentro del pixel quecorresponde a su discretización.

Segmentos de recta DDA

Page 23: Algoritmos basicos de dibujo en 2 d

Segmentos de recta DDA

Page 24: Algoritmos basicos de dibujo en 2 d

La ejecución del algoritmo daría como resultado algo similar a lo mostrado en la Figura

Segmentos de recta DDA

Page 25: Algoritmos basicos de dibujo en 2 d

Desventajas de DDA

• Requiere aritmética de punto flotante (valores reales), la que es más lenta y costosa.• Es inapropiado para implementar por hardware (aritmética real).• El redondeo es una operación real adicional.• Las líneas largas pueden verse afectadas por el error de redondeo.

Segmentos de recta DDA

Page 26: Algoritmos basicos de dibujo en 2 d

Son algoritmos que consiste en que todas las operaciones se realizan en aritmética entera por medio de operaciones sencillas, y por lo tanto, su ejecución es más rápida y económica, y es de fácil implementación con hardware específico.

Segmentos de Bressenham

Page 27: Algoritmos basicos de dibujo en 2 d

Es conveniente efectuar la llamada al algoritmo luego de discretizar losextremos. Esto significa que (x0;y0) y (x1; y1 ),y por lo tanto Dx y Dy son enteros.

Segmentos de Bressenham

Page 28: Algoritmos basicos de dibujo en 2 d

Luego, si p es un pixel que pertenece a ladiscretización del segmento, entonces enlas condiciones particulares mencionadas,el próximo pixel solamente puede ser elubicado a la derecha (E o “hacia el este”),o el ubicado en diagonal hacia la derecha y hacia abajo (D o “en diagonal”) como semuestra en la Figura

Segmentos de Bressenham

Page 29: Algoritmos basicos de dibujo en 2 d

Segmentos de Bressenham

Page 30: Algoritmos basicos de dibujo en 2 d

La decisión de ir hacia el paso E o D se toma en función del error que se comete en cada caso. En este algoritmo se considera que el error es la distancia entre el centro del pixel elegido y el segmento de recta, medida en dirección del eje Y positivo del espacio de pantalla (es decir, hacia abajo). Si el error en p fuese cero, entonces al ir hacia E el error pasa a ser m (la pendiente del segmento), y en D elerror pasa a ser m - 1 (ver Figura).

Segmentos de Bressenham

Page 31: Algoritmos basicos de dibujo en 2 d

Segmentos de Bressenham

Page 32: Algoritmos basicos de dibujo en 2 d

En general, si en p el error es e, la actualización del error es:Paso a E : e = e + mPaso a D : e = e + m –1Por lo tanto, la elección del paso E o D depende de que el valor absoluto de e+msea o no menor que el valor absoluto de e+m-1. Expresado de otra manera, sea e el error en un determinado pixel.

Segmentos de Bressenham

Page 33: Algoritmos basicos de dibujo en 2 d

Segmentos de Bressenham

Page 34: Algoritmos basicos de dibujo en 2 d

Si e +m> 0.5 entonces el segmento de recta pasa más cerca del pixel D, y si no, pasa más cerca del pixel E (ver Figura anterior)

Segmentos de Bressenham

Page 35: Algoritmos basicos de dibujo en 2 d

 Como en el caso de los segmentos de recta, en la discretización de circunferencias o círculos es posible trabajar un sólo segmento de la circunferencia y se obtienen las demás por simetría. Igualmente se dispone de algoritmos DDA y de Bressenham para el dibujo de circunferencias.

Discretización de circunferencias

Page 36: Algoritmos basicos de dibujo en 2 d

Para poder realizar el dibujo de la circunferencia usaremos las ecuaciones de la circunferencia en coordenadas polares que son:x = r * cosqy = r *senq

Discretización de circunferencias

Page 37: Algoritmos basicos de dibujo en 2 d

Estas ecuaciones serán las que ocuparemos para calcular cada punto (x,y) del círculo, donde el r será obviamente el radio de círculo y q será el ángulo que forma el radio con la parte positiva del eje x. En forma gráfica sería así:

Discretización de circunferencias

Page 38: Algoritmos basicos de dibujo en 2 d

Discretización de circunferencias

Page 39: Algoritmos basicos de dibujo en 2 d

El ángulo deberá estar en radianes ya que las funciones de seno y coseno que incluye Java, trabajan con los ángulos en radianes. La fórmula para transformar grados a radianes es la siguiente:

Discretización de circunferencias

Page 40: Algoritmos basicos de dibujo en 2 d

Discretización de circunferencias

Page 41: Algoritmos basicos de dibujo en 2 d

Se considera un polígono una figura cerrada, formada a partir de varias líneas. Para la discretización de polígonos se considerarán 2 tipos de polígonos: los irregulares y los regulares,

Dibujo de polígonos

Page 42: Algoritmos basicos de dibujo en 2 d

La graficación de polígonos irregulares se realiza a partir de un conjunto de puntos que se unen secuencialmente, el polígono se cierra al unir el primer y último puntos.

Dibujo de polígonosirregulares

Page 43: Algoritmos basicos de dibujo en 2 d

Dibujo de polígonosirregulares

Page 44: Algoritmos basicos de dibujo en 2 d

Un polígono regular se compone de aristas/lados de igual longitud. Esto implica que el ángulo entre cada arista contigua es el mismo.Podemos usar la siguiente fórmula: a= 2 / N, donde a es el ángulo, y N es la cantidad de lados

Dibujo de polígonosregulares

Page 45: Algoritmos basicos de dibujo en 2 d

Dibujo de polígonosregulares

Page 46: Algoritmos basicos de dibujo en 2 d

Gracias