Relleno de Polígonos 1

Documentos relacionados
2 RELLENO DE AREA ARISTAS HORIZONTALES SLIVERS COHERENCIA DE ARISTA Y EL ALGORITMO DE CONVERSIÓN DE LÍNEA...

Seminario de problemas-bachillerato. Curso Hoja 8

Introducción a la Geometría Computacional. Análisis de Algoritmos

Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte

IES Fco Ayala de Granada Junio de 2012 (Común Modelo 4) Soluciones Germán-Jesús Rubio Luna

Soluciones oficiales Clasificación Olimpiada Nacional Nivel Mayor

Trigonometría. 1. Ángulos:

SEGUNDA OLIMPIADA ESTATAL DE MATEMÁTICAS

Academia de Matemáticas T.M Geometría Analítica Página 1

x-z = 0 x+y+2 = [2012] [EXT-B] Halla el punto simétrico del P(2,1,-5) respecto de la recta r definida por

Geometría Computacional

La variable independiente x es aquella cuyo valor se fija previamente. La variable dependiente y es aquella cuyo valor se deduce a partir de x.

AYUDAS SOBRE LA LINEA RECTA

El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:

La recta se define como el lugar geométrico de todos los puntos de un plano que al tomarse de dos en dos se obtiene la misma pendiente.

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO PLANTEL IGNACIO RAMÍREZ CALZADA DE LA ESCUELA PREPARATORIA PROBLEMARIO GEOMETRÍA ANALÍTICA

Algebra lineal y conjuntos convexos

Computación Gráfica. Eduardo Fernández

Materia: Matemática de Tercer Año Tema: Pendiente

Visión artificial y Robótica Modelos de movimiento y mapas. Depto. de Ciencia de la Computación e Inteligencia Artificial

Método de diferencias finitas para ecuaciones diferenciales parciales elípticas. (Parte II)

No es otra cosa, que la representación de los resultados de una función sobre el plano carteciano.

UNIDAD 8 Geometría analítica

IES Fco Ayala de Granada Junio de 2011 (Específico Modelo 5) Solución Germán-Jesús Rubio Luna. Opción A

Colegio Portocarrero. Curso Departamento de matemáticas. Análisis. (Límites/Asíntotas/Continuidad/Derivadas/Aplicaciones de las derivadas)

Colegio Universitario Boston

Precálculo 1 - Ejercicios de Práctica. 1. La pendiente de la línea (o recta) que pasa por los puntos P(2, -1) y Q(0, 3) es:

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

EDUCACIÓN PLÁSTICA Y VISUAL. Trabajo de Recuperación de Pendientes Para 3º ESO. Geometría. IES Ramón Menéndez Pidal DPTO. DE DIBUJO 3º ESO 1

Puntos: Se especifican a partir de su localización y color. Su discretización es directa, como se mencionó con anterioridad.

Ecuaciones de la forma. y se sabe que pasa por el punto ( 4 ;16 ), cuál es la ecuación de la recta? con m > 0. contenga los puntos ( 2;? por qué?

Grafos. Amalia Duch Brown Octubre de 2007

RESUMEN PARA EL ESTUDIO

Vectores y rectas. 4º curso de E.S.O., opción B. Modelo de examen (ficticio)

ÁLGEBRA VECTORIAL Y MATRICES. Ciclo 02 de Circunferencia.

Funciones Cuadráticas en una Variable Real

m=0 La ecuación de una recta se puede obtener a partir de dos puntos por los que pase la recta: y y1 = m(x x1)

GUÍA NÚMERO 22 TRANSFORMACIONES ISOMÉTRICAS

GUÍA DE ESTUDIO PARA EL EXAMEN EXTRAORDINARIO DE GEOMETRÍA ANALÍTICA

MATHEMATICA. Geometría - Triángulos. Ricardo Villafaña Figueroa. Ricardo Villafaña Figueroa. Material realizado con Mathematica y Geometry Expressions

Cálculo Diferencial en una variable

MÓDULO 1. Personalización del área visual y creación de objetos

2.2 Rectas en el plano

Senos (truco): (Coseno truco = pero el cero ponerlo del 90 a la izquierda y /2.

UNIDAD: ÁLGEBRA Y FUNCIONES ECUACIÓN DE LA RECTA

LA RECTA Y SUS ECUACIONES

Guía de Estudio Algebra y Trigonometría Para Ciencias Agropecuarias

ECUACIÓN DE LA RECTA. 6. Hallar la ecuación de la recta que pase por el punto A ( 1, 2) y que determina en el eje X un segmento de longitud 6.

ECUACIÓN DE LA RECTA

Geometría Computacional

I. E. S. ATENEA. SAN SEBASTIÁN DE LOS REYES EXAMEN GLOBAL. PRIMERA EVALUACIÓN. ANÁLISIS

OPTIMIZACIÓN VECTORIAL

SISTEMAS DE ECUACIONES LINEALES. Método de reducción o de Gauss. 1º DE BACHILLERATO DPTO DE MATEMÁTICAS COLEGIO MARAVILLAS AUTORA: Teresa González.

3.1. Distancia entre dos puntos. Definición 3.1. Sean a, b e, se llama distancia entre los números a y b que se denota por d (a, b), a la cantidad:

Seminario de problemas. Curso Hoja 10

POLÍGONOS POLÍGONOS. APM Página 1

IES Fco Ayala de Granada Septiembre de 2011 (Septiembre Modelo 2) Solución Germán-Jesús Rubio Luna

UNIDAD 6.- PROGRAMACIÓN LINEAL

ejercicios t e c n o l o g í a 4 º e s o

Olimpiada Internacional de Matemáticas Fórmula de la Unidad / El Tercer Milenio Año 2016/2017 Primera ronda Problemas para el grado R5

TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS

PENDIENTE MEDIDA DE LA INCLINACIÓN

UNIDAD III NÚMEROS FRACCIONARIOS

Forma pendiente-ordenada al origen

MAQUETERÍA 02: POLIEDROS, CUERPOS REDONDOS Y SU CONSTRUCCIÓN

Manual de utilización del Módulo DEM_Ascii. El archivo creado se utiliza con Arc Gis o ENVI por ejemplo.

IES EL PILES SELECTIVIDAD OVIEDO DPTO. MATEMÁTICAS Geometría

Derivadas e integrales

Introducción a Microsoft Paint

EJERCICIOS DE SELECTIVIDAD DE GEOMETRIA

Nombre: Objetivo: Reforzar contenidos aprendidos durante el segundo semestre.

Las únicas funciones cuyas gráficas son rectas son las siguientes:

GEOMETRÍA. que pasa por el punto P y es paralelo a π. (0,9 puntos) b) Determinar la ecuación del plano π

ACTIVIDADES A REALIZAR EN TORTUGARTE. Áreas del Conocimiento Matemático. Geometría

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Introducción La Circunferencia Parábola Elipse Hiperbola. Conicas. Hermes Pantoja Carhuavilca

4. ANÁLISIS DE FUNCIONES DE UNA VARIABLE

Coordenadas de un punto

Definición y Clasificación de Polígonos. Definición

FUNCIONES CUADRÁTICAS

1. GENERALIDADES SOBRE LOS POLINOMIOS.

DISTANCIA ENTRE DOS PUNTOS EN EL PLANO CARTESIANO.

IES Fco Ayala de Granada Sobrantes del 2010 (Modelo 6) Soluciones Germán-Jesús Rubio Luna. Opción A

Curso SIG. Curso SIG Conceptos Básicos y Funciones. Conceptos Básicos y Funciones. Representaciones del mundo. Curso SIG - Pablo Rebufello 1

Problemas Tema 1 Solución a problemas de Repaso de 1ºBachillerato - Hoja 02 - Todos resueltos

Seminario de problemas. Curso Hoja 5

Áreas entre curvas. Ejercicios resueltos

5to. ESTANDARES MATEMATICOS COMUNES FUNDAMENTALS

PSU Matemática NM-4 Guía 23: Isometrías. Nombre: Curso: Fecha: -

Tema 3: Multiplicación y división.

Unidad V. 5.1 Recta tangente y recta normal a una curva en un punto. Curvas ortogonales.

1. Halla la ecuación de la recta r, sabiendo que pasa por A(1,-2) y B(-1,2)

Seminario de problemas-eso. Curso Hoja 10

Ejercicios de Rectas y planos.

UNIDAD DE APRENDIZAJE I

UNIVERSIDADES DE ANDALUCÍA PRUEBA DE ACCESO A LA UNIVERSIDAD

Ejercicios tipo final

APUNTE TABLAS MICROSOFT WORD 2003

III: Geometría para maestros. Capitulo 1: Figuras geométricas

Transcripción:

Relleno de Polígonos 1

Relleno de Polígonos El caso más sencillo de relleno es el del triángulo Luego le sigue en complejidad el de polígonos convexos de N-lados Finalmente le sigue el relleno de polígonos cóncavos scanline 2

Relleno de Polígonos Método de fuerza bruta (naive approach) Calcular caja contenedora del objeto Hacer un barrido interno de la caja, comprobando para c/pixel si está dentro o no del polígono fuera dentro 3

Relleno de Polígonos Método de fuerza bruta Con polígonos simétricos basta con hacer un barrido en una sección y replicar los demás píxeles Requiere aritmética punto-flotante, lo que lo hace impreciso y costoso 4

Algoritmo ScanLine También llamado scan conversion algorithm Detectar la intersección de los scanlines del dispositivo con los bordes de la primitiva Por cada scanline, rellenar el span de píxeles entre cada par de intersecciones scanline primitiva 5

Algoritmo ScanLine Cuando el polígono es convexo, como las primitivas que vimos aquí, solo hay dos intersecciones por scanline, en cualquier dirección 6

.. Algoritmo ScanLine Encontrar las intersecciones de los scanlines con el polígono Almacenar las intersecciones en alguna estructura de datos ET (Edge Table), de forma ordenada, ascendentemente en y y en x, en buckets Rellenar los spans usando la estructura y y2 y2 x2 x3 x4 x5 y1 x1 x2 x3 x4 x5 x6 x y1 x1 x6 7

.. Algoritmo ScanLine Utilizar algún criterio de paridad para saber cuando un intervalo debe ser rellenado o no Ej: (x2, x3) debe ser rellenado; (x3,x4) no ; (x4, x5) si debe ser rellenado y y2 y2 x2 x3 x4 x5 y1 x1 x2 x3 x4 x5 x6 x y1 x1 x6 8

Algoritmo ScanLine Un ejemplo más concreto Cada bucket contiene: Ymax Xmin 1/m 9

Algoritmo ScanLine El método de fuerza bruta para calcular las intersecciones sería con ecuaciones punto-flotante, probando cada scanline contra los bordes de la primitiva En lugar de ello, las intersecciones se pueden calcular de forma incremental, de forma similar al algoritmo del punto medio Para hacer esto eficientemente, se puede utilizar una tabla de bordes activos (AET Active Edge Table), que no es mas que otra lista de buckets Es importante no salirse de los bordes de la primitiva, debido a problemas de redondeo de las coordenadas 10

Algoritmo ScanLine Para los scanlines 15 y 16 del ejemplo anterior Scanline 16 Scanline 15 11

Algoritmo ScanLine Para el calculo de las intersecciones se utiliza un algoritmo incremental X i, Y i X i+1, Y i+1 Y i+1 =Y i +1 X i+1 = X i + 1/m = X i + dx/dy Para m > 1 1/m ocasiona que X pueda tener una parte fraccional.. 12

Relleno de Polígonos Para rellenar un polígono entre el intervalo real (Xmin, Xmax) para un scanline especifico, se despliegan los píxeles entre ceiling(xmin) y el floor(xmax) X i, Y i X i+1, Y i+1 Y i+1 =Y i +1 X i+1 = X i + 1/m = X i + dx/dy Para m > 1 13

Algoritmo ScanLine Se puede seguir las siguientes reglas para llevar el calculo de X a aritmética entera Cuando la parte fraccional de X es cero: se dibuja el pixel (x,y) que está en la línea Cuando la parte fraccional de X es mayor que cero pero menor que uno: se redondea hacia un X mayor para obtener el pixel que esta estrictamente dentro de la línea (hacia la derecha). Cuando la parte fraccional de X se hace mayor que uno: se incrementa X en uno y se resta uno a la parte fraccional. Se aplica a la nueva especificación de X la consideración de fracciones menores a uno pero mayores a cero. 14

Algoritmo ScanLine Ejemplo: si el Xmin de la linea es 0 y la pendiente es 7/3 dx = 3, dy =7 Y i+1 =Y i +1 X i+1 = X i + 1/m = X i + dx/dy 15

Algoritmo ScanLine Manejo de vértices Una línea de rastreo que pasa a través de un vértice intersecta dos aristas del polígono en esa posición, agregando dos puntos a la lista de intersecciones para la línea de rastreo. Esto puede causar problemas en la paridad Las líneas horizontales también pueden ser un problema, porque producen múltiples intersecciones 4 Intersecciones 5 intersecciones Este span se va a rellenar y no debería 16

Algoritmo ScanLine Solución? Aplicar la siguiente política Se cuenta el vértice ymin de una arista en el cálculo de paridad pero no el vértice ymax; por lo tanto, un vértice ymax se dibuja solo si equivale al vértice ymin de la arista adyacente. Con esta política este vértice solo se cuenta una vez, solucionando el problema 17

Algoritmo ScanLine Con esta misma política, en el caso de aristas horizontales, el efecto deseado es que las aristas de abajo se tracen pero no las de arriba. Esto ocurrirá de forma automática, si no se cuentan los vértices de estas aristas, ya que no son ni ymin,ni ymax IH no se dibuja AB se dibuja 18

Algoritmo ScanLine El algoritmo queda 1. Asignar la primera línea de rastreo y a la coordenada y mas pequeña que tenga una entrada en el ET, i.e. y para el primer bucket no vacío. 2. Inicializar AET para que este vacío. 3. Repetir hasta que AET y ET estén vacíos: 3.1 Mover de ET al AET los buckets de aquellas aristas cuyos ymin= y (aristas entrantes), luego ordenar el AET en x 3.2 Pintar los pixel deseados en la línea de rastreo, usando los x de AET 3.3 Quitar del AET aquellas entradas cuyos ymax= y (aristas no involucradas en la línea de rastreo siguiente). 3.4 Incrementar y en 1 (a la coordenada de la siguiente línea de rastreo). 3.5 Para cada arista no-vertical en el AET, actualizar los x para el nuevo y. 19

Algoritmo ScanLine Este método funciona para polígonos convexos o cóncavos Pero no funciona si el polígono se intersecta a si mismo, porque el algoritmo se confunde Dicho caso no se tomará en cuenta en este curso Este segmento forma parte del polígono pero no se rellena Este segmento NO forma parte del polígono pero si se rellena 20

División en Triángulos Otra forma de rellenar un polígono es dividirlo en triángulos, y reducir el problema al relleno de secuencias de triángulos La subdivisión en triángulos de un polígono convexo es sencilla Se escoge un punto cualquiera y se construyen triángulos desde este punto hasta cada par de vértices consecutivos que no incluyan este punto Este método no funciona para polígonos cóncavos P1 P1 P0 P2 P0 P2 P4 P3 P4 P3 21

División en Triángulos El siguiente método funciona para polígonos cóncavos o convexos La idea general es formar triángulos y probar si ningún vértice del polígono queda dentro de un triángulo Se comienza desde el triángulo más a la izquierda Encontrar vértice más a la izquierda (con el x más pequeño), y llamarlo A Formar un posible triángulo entre A y dos vértices adyacentes B y C Comprobar que ningún otro vértice queda dentro de ABC Si todos los otros puntos quedan fuera de ABC, se separa el triángulo del polígono y se procede con el próximo vértice más a la izquierda Si un punto esta dentro del triángulo, se forma un nuevo triángulo de prueba con A y el punto interno más a la izquierda 22

División en Triángulos Para comprobar que un punto está dentro de un triángulo ABC se utiliza la prueba estándar de comprobar la posición del punto con respecto a los tres planos P1, P2 y P3 definidos por los lados del triángulo Sin embargo, para acelerar la comprobación se puede comprobar la posición del punto con respecto a la caja contenedora del triángulo Si el punto pasa esta primera prueba entonces se comprueba contra los lados del triángulo A C P1 P2 P3 B 23

Relleno por inundación Otra solución es el Flood-Fill Algorithm (FFA) o Algoritmo de Relleno por Inundación Se comienza desde un píxel dentro del polígono, al cual se le asigna el color de relleno El color se propaga desde este hacia sus píxeles vecinos, y de estos a sus vecinos y así sucesivamente, simulando una inundación dentro del polígono La propagación continúa hasta encontrar los píxeles del borde, o simplemente encontrar píxeles de un color diferente al color de la semilla inicial Se pueden usar dos patrones distintos para hacer la propagación 4-Fill 8-Fill 24

Relleno por inundación El Flood-Fill Algorithm (FFA) o Algoritmo de Relleno por Inundación es un algoritmo inherentemente recursivo Es posible una implementación iterativa? Ventajas y desventajas de escoger una vecindad 4-Filll o 8-Fill? 4-Fill 8-Fill 25

Relleno por inundación El Flood-Fill Algorithm (FFA) o Algoritmo de Relleno por Inundación es un algoritmo inherentemente recursivo Ventajas y desventajas de escoger una vecindad 4-Filll o 8-Fill? Error! 4-Fill 8-Fill 26

Comparación Muy Simple Inundación Algoritmo discreto en espacio de despliegue (screen) Requiere llamada al sistema GetPixelVal() Requiere una semilla Requiere una pila amplia Común en paquetes para pintar imágenes (paint bucket) Más complejo ScanLine Algoritmos discreto en espacio de despliegue (screen) o de objeto Independiente del dispositivo No requiere una semilla Requiere una pila pequeña Usada en el render de imágenes 27

Relleno con patrones Alternativamente el relleno puede realizarse siguiendo un patrón (pattern filling) El patrón puede ser un matriz de NxN con un patrón El patrón se distribuye a lo largo del polígono, usando un apuntador a columna y un apuntador a fila del patrón Para pintar el píxel (x,y) entonces se utiliza PaintPixel(x, y, Patron[rowptr,colptr] ) patrón polígono 28

Relleno de Polígonos Posibles problemas Dibujar bordes compartidos En algunos casos, la discretización de las coordenadas puede ocasionar artefactos Ejemplo: Series de triángulos. Solución?. Agujeros causados por la discretización 29

Relleno de Polígonos Posibles problemas Dibujar bordes compartidos Redespliegue de los pixeles de los bordes Ejemplo: Series de triángulos. Solución?. Este borde se despliega dos veces 30

Relleno de Polígonos Posibles problemas Astillas (Slivers). Se encienden muy pocos pixeles aliasing Solución? 31