arreglos y dualidad - cinvestavertello/gc/sesion17.pdf · lo que requerimos es que la diferencia...

Post on 10-May-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arreglos y Dualidad

Giomara Lárraga, Sotero Martínez

CINVESTAV-Tamaulipas

19 de marzo del 2013

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 1 / 96

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

2 DualidadDefiniciónInterpretación geométricaAplicaciones

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

4 Niveles y DiscrepanciaNiveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 2 / 96

Arreglos

El material de la clase de hoy está basado en el capítulo 8 delsiguiente libro:Mark de Berg, Otfried Cheong, Marc van Kreveld and MarkOvermars. Computational Geometry: Algorithms and Applications.Springer, 3rd edition (April 16, 2008), ISBN-10: 3540779736.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 3 / 96

Arreglos Ray Tracing

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 4 / 96

Arreglos Ray Tracing

Ray Tracing

Hoy en día, es difícil distinguir entre imágenes generadas porcomputadora y fotografías.

Una técnica que ha ayudado a este desarrollo es el ray tracing.

El ray tracing genera una imagen de un espacio tridimensionalusando una malla bidimensional para simular la pantalla de lacomputadora, y disparando un rayo ortogonal de la malla hacia laescena por cada pixel de la pantalla.

Cada pixel muestra entonces el primer objeto que toca el rayo.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 5 / 96

Arreglos Ray Tracing

Ray Tracing

Sin embargo, un pixel no es necesariamente un punto, sino unapequeña área cuadrada.

La mayoría de los pixeles tocan un objeto por completo, sinembargo, surge un problema cuando se procesan los bordes de unobjeto.

Para resolver este problema, se lanzan varios rayos por pixel y secalcula cuántos tocaron el objeto.

Esto es llamado supersampling.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 6 / 96

Arreglos Ray Tracing

Ray Tracing

Una muestra de 100 rayos por pixel nos daría directamente elporcentaje de cobertura del pixel.

Intuitivamente, se podría pensar en un arreglo equitativo de 10por 10, sin embargo, esto atrae ciertos problemas.

Al distribuir equitativamente, se creará cierta regularidad entrelas filas y columnas de los pixeles.

Esto activa el sistema visual humano y vemos ciertos artefactosmolestos, por lo que un arreglo equitativo puede no ser la mejoridea.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 7 / 96

Arreglos Ray Tracing

Ray Tracing

Entonces requerimos una arreglo aleatorio.

Definiendo un arreglo de prueba aleatorio, requerimos saber si esun arreglo adecuado.

Lo que requerimos es que la diferencia entre el porcentaje deaciertos para un objeto y el porcentaje de área del pixel donde elobjeto es visible sea pequeña.

A esta diferencia se le conoce como discrepancia del arreglo deprueba con respecto al objeto.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 8 / 96

Arreglos Ray Tracing

Ray Tracing

Como no sabemos por adelantado qué objetos serán visibles,debemos prepararnos para el peor escenario.

Queremos que la discrepancia máxima de entre todas las posiblesformas en que se puede ver un objeto en el pixel sea pequeña.

Esto es llamado discrepancia del arreglo de prueba, y dependedel tipo de objetos presentes en la escena.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 9 / 96

Arreglos Ray Tracing

Ray Tracing

Formalmente, basados en la discrepancia del arreglo con respectoa ciertos objetos, decidimos si es adecuado.

Si la discrepancia es suficientemente baja, mantenemos el arreglo

De otra forma, generamos un nuevo arreglo aleatorio.

Requerimos entonces un algoritmo que determine la discrepanciade un arreglo de puntos dados.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 10 / 96

Arreglos Definición de la discrepancia

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 11 / 96

Arreglos Definición de la discrepancia

Definición de la discrepancia

Los objetos que debemos considerar son las proyecciones de losobjetos tridimensionales que se encuentran en nuestra escena

Dichos objetos son las facetas de los poliedros, y estamosinteresados en la discrepancia con respecto a la clase de polígonos

Si un pixel es interceptado por el borde de un polígono, elpolígono dentro se comporta como un semiplano.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 12 / 96

Arreglos Definición de la discrepancia

Definición de la discrepancia

Sea U un pixel, y S un conjunto de n puntos en U.

H denota el conjunto (infinito) de todos los posibles semiplanoscerrados.

La medición continua de un semiplano h ∈ H es el área de h⋂

Uy se denota por µ(h).

Si un semiplano h que cubra completamente U, tenemos queµ(h) = 1.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 13 / 96

Arreglos Definición de la discrepancia

Definición de la discrepancia

La medición discreta de h, denotada como µs(h), son los puntoscontenidos en h.

Formalmente, definimos µs(h) := card(S⋂

h)card(S) donde card() denota la

cardinalidad de un conjunto.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 14 / 96

Arreglos Definición de la discrepancia

Definición de la discrepancia

La discrepancia de h con respecto a S, denotada como ∆S(h), es ladiferencia absoluta entre las mediciones continuas y discretas:

∆S(h) :=| µ(h)− µS(h) |

Finalmente, la discrepancia del semiplano de S es la máximadiscrepancia de entre todos los posibles semiplanos:

∆H(S) := sup∆S(h); h ∈ H

Ya teniendo en claro lo que requerimos, podemos determinar elcómo conseguirlo.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 15 / 96

Arreglos Cálculo de la discrepancia

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 16 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

Es siempre una buena idea reemplazar un conjunto infinito poruno finito.

Éste último debe contener los elementos que nos interesan.

Para determinar los elementos interesantes, tomaremos elsemiplano con máxima discrepancia local.

Uno de estos semiplanos tendrá el máximo real.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 17 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

Cualquier semiplano que no contenga un punto de S en su límitepuede ser alterado de manera que se incremente su discrepancia,por lo que buscamos entonces un semiplano con un punto de S ensu límite.

Consideremos un semiplano h con solo un punto p ∈ S en sulímite.

Si rotamos h alrededor de p podemos alcanzar un extremo en lafunción de medición continua.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 18 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

Si este extremo es un máximo local, cualquier leve rotaciónreducirá la medición continua.

Si la medición discreta es menor que la medición continua en estemáximo, una rotación reduciría la discrepancia, y viceversa parael mínimo local.

Por lo tanto, la discrepancia máxima podría ser encontrada endicho extremo.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 19 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

Sea p un punto en S.

Sea `p(φ) para 0 ≤ φ < 2π una línea que cruza p y hace un ánguloφ con el eje x positivo.

Denotamos el semiplano encima de `p(φ) como hp(φ).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 20 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

Un extremo puede ocurrir cuando φ se incrementa de 0 a 2π, locual puede pasar como máximo 8 veces.Cuando `p(φ) intersecta el límite superior y el izquierdo de U, porejemplo, tenemos:

µ(hp(φ)) =12

(1− py + px tanφ)(px +1− py

tanφ)

En este caso tenemos dos extremos locales.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 21 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

LemaSea S un conjunto de n puntos en una unidad cuadrada U. Unsemiplano h que llega a la discrepancia máxima con respecto a Spertenece a uno de los siguientes tipos:

1 - h contiene un punto p ∈ S en su límite.2 - h contiene dos o más puntos de S en su límite.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 22 / 96

Arreglos Cálculo de la discrepancia

Cálculo de la discrepancia

El número de candidatos de tipo 1 es O(n) y pueden ser halladosen tiempo O(n).

Para cada uno de los O(n) semiplanos, debemos calcular sumedición continua en tiempo constante, y su medición discreta entiempo O(n).

Por lo tanto, el máximo de las discrepancias puede ser calculadoen tiempo O(n2).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 23 / 96

Dualidad

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

2 DualidadDefiniciónInterpretación geométricaAplicaciones

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

4 Niveles y DiscrepanciaNiveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 24 / 96

Dualidad Definición

2 DualidadDefiniciónInterpretación geométricaAplicaciones

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 25 / 96

Dualidad Definición

Definición

Un punto en un plano tiene 2 parámetros principales: unacoordenada x y otra coordenada y.

Una línea no vertical tiene también dos parámetros: la pendiente yla intersección con el eje Y.

Por lo tanto, podemos representar un conjunto de puntos como unconjunto de líneas, y viceversa.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 26 / 96

Dualidad Definición

Definición

Diferentes representaciones son posibles, y son llamadastransformaciones de dualidad.

La imagen de un objeto bajo una transformación de dualidad esllamada el dual del objeto.

Decimos que la transformación de dualidad representa objetos delplano primario al plano dual.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 27 / 96

Dualidad Definición

Definición

Sea p := (px, py) un punto en el plano, el dual de p, denotado p∗ sedefine cómo:

p∗ := (y = pxx− py)

El dual de una línea ` : y = mx + b es el punto p tal que p∗ = `, esdecir:

`∗ := (m,−b).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 28 / 96

Dualidad Definición

Definición

ObservaciónLa transformación de dualidad o 7→ o∗ tiene las siguientespropiedades:

Preserva la incidencia: p ∈ ` si y sólo si `∗ ∈ p∗.Preserva el orden: p se encuentra sobre ` si y sólo si `∗ está sobrep∗.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 29 / 96

Dualidad Definición

Definición

Sea p := (px, py) un punto en el plano, el dual de p, denotado p∗ sedefine cómo:

p∗ := (y = pxx− py)

El dual de una línea ` : y = mx + b es el punto p tal que p∗ = `, esdecir:

`∗ := (m,−b).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 30 / 96

Dualidad Interpretación geométrica

2 DualidadDefiniciónInterpretación geométricaAplicaciones

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 31 / 96

Dualidad Interpretación geométrica

Interpretación geométrica

Es posible aplicar la dualidad a otros objetos, como un segmentode línea.

Si tenemos s := p̄q, es lógico tomar la unión de los duales de todoslos puntos en s como s∗.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 32 / 96

Dualidad Interpretación geométrica

Interpretación geométrica

Como todos los puntos de s son colineales, las líneas dualespasarán por un solo punto.

Su unión forma un semiplano triangular (cuña) doble, que esacotado por los duales de los puntos finales de s.

Los duales de dichos puntos finales forman en total dos cuñasdobles: de izquierda a derecha, y de arriba a abajo.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 33 / 96

Dualidad Interpretación geométrica

Interpretación geométrica

La transformación dual recién expresada tiene una buenainterpretación geométrica.

Sea U : y = x2/2, y p un punto en U.

La derivada de U en p es px, asi que p∗ tiene la misma pendienteque la linea tangente de U en p, por lo que la tangente es de hechoalgún punto p ∈ U.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 34 / 96

Dualidad Interpretación geométrica

Interpretación geométrica

Dos puntos en la misma línea vertical tienen duales con la mismapendiente.

Si tomamos otro punto q que no esté en U, q∗ es paralelo a p∗ si ptiene la misma coordenada x que q.

Un tercer punto qi con la misma coordenada X que q tal queqi

y − py = py − qy

Por lo tanto, q∗ es la línea que cruza qi y es paralela a la tangentede U en p.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 35 / 96

Dualidad Interpretación geométrica

Interpretación geométrica

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 36 / 96

Dualidad Aplicaciones

2 DualidadDefiniciónInterpretación geométricaAplicaciones

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 37 / 96

Dualidad Aplicaciones

Aplicaciones

La dualidad provee un punto de vista diferente para un mismoproblema.

Esto es porque si hallamos la solución a un problema en el planodual, podemos imitar la solución en el plano inicial y obtener elresultado.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 38 / 96

Dualidad Aplicaciones

Aplicaciones

Podemos tomar el ejemplo de la sección anterior y considerar elproblema de la discrepancia en el plano dual.

Cuando dualizamos el conjunto de puntos S, obtenemos unconjunto S∗ := p∗ : p ∈ S de líneas.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 39 / 96

Dualidad Aplicaciones

Aplicaciones

Sea `(p, q) la línea que cruza dos puntos p, q ∈ S.

El dual de esta línea es el punto de intersección de las dos líneasp∗, q∗ ∈ S∗

La medición discreta del semiplano debajo de `(p, q) nos da elnúmero de puntos estrictamente debajo de `(p, q)

Esto significa que estamos interesados en el número de líneasestrictamente arriba de `(p, q)∗, así como las líneas sobre `(p, q)∗.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 40 / 96

Dualidad Aplicaciones

Aplicaciones

Con esta información, podemos utilizar un algoritmo paracalcular el número de líneas sobre, debajo, y a través de cadapunto de intersección.

Cuando aplicamos este algoritmo al conjunto S∗, obtenemos todala información requerida para calcular las mediciones discretas detodos los semiplanos acotados por líneas entre dos puntos en S.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 41 / 96

Arreglos de líneas

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

2 DualidadDefiniciónInterpretación geométricaAplicaciones

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

4 Niveles y DiscrepanciaNiveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 42 / 96

Arreglos de líneas Arreglos de líneas

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 43 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

Sea L un conjunto de rectas en el plano. Este conjunto genera unasubdivisión del plano consistente en vértices, aristas y caras.Algunas de estas aristas y caras no están acotadas. Estasubdivisión se denota como el arreglo inducido por L y se denotaA(L).

Un arreglo se denomina simple cuando no existen tres rectas quepasen por el mismo vértice y no existen líneas paralelas.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 44 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

La complejidad (combinatoria) de un arreglo es el número total devértices, aristas y caras del arreglo.

La construcción completa de un arreglo consume gran cantidadde tiempo y almacenamiento, debido a que la complejidad delarreglo es alta.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 45 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

TeoremaEl número de vértices de A(L)es al menos n(n–1)/2El número de aristas de A(L)es al menos n2

El número de caras de A(L)es al menos n2/2 + n/2 + 1

Estas tres igualdades se mantienen si y sólo si A(L) es simple.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 46 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

Con una estructura DCEL se puede almacenar de una formaeficiente la lista de las aristas de una cara dada, y de esta forma, apartir de ella podremos alcanzar cualquier otra parte del arreglo.

Una estructura DCEL, sin embargo, solamente puede almacenarcaras acotadas, y un arreglo posee también un número de aristas ycaras que no están acotadas.

Por ello se define un bounding box que va a delimitar la parte quenos interesa de un arreglo. Éste deberá contener todos los vérticesdel arreglo en su interior.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 47 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

Bounding box

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 48 / 96

Arreglos de líneas Arreglos de líneas

Arreglos de líneas

La forma más sencilla de construir un arreglo de rectas esrealizando un barrido del plano.

Como el número de puntos de intersección de un arreglo de rectases cuadrático, exactamente n(n-1)/2, el algoritmo podríaejecutarse en un tiempo O(n2logn)

No está nada mal, pero no es óptimo. Por tanto, lo que serecomienda es utilizar un algoritmo de construcción incremental.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 49 / 96

Arreglos de líneas Algoritmo de construcción incremental

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 50 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

El algoritmo incremental añade las rectas {l1, l2, ..., ln} unadespués de otra y actualiza la estructura DCEL después de cadainserción.

Sea Ai la subdivisión del plano inducida por el bounding box B(L)y la parte de A({l1, ..., li}) que está dentro de B(L).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 51 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Para añadir la recta li, es necesario dividir las caras de Ai−1 queson intersectadas por li de izquierda a derecha.

Suponemos que la nueva recta entra en el arreglo de rectas poruna cara f a través de la arista e.

Caminamos por la frontera de f siguiendo los punteros Next() enla estructura DCEL hasta que encontremos el half-edge de laarista e’ donde li abandona la cara f.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 52 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Se pasa entonces a la siguiente cara utilizando el puntero Twin()deeste half-edge para alcanzar el otro half-edge de e’ en la estructuraDCEL.

Puede ocurrir también que se abandone la región f atravesandoun vértice v. En este caso es necesario caminar alrededor de v,visitando todos los bordes que inciden en dicho vértice hastaencontrar la siguiente región intersectada por li.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 53 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 54 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 55 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 56 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 57 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 58 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 59 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 60 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 61 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 62 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 63 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 64 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 65 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 66 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 67 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Queda por ver cómo encontrar la arista situada más a la izquierdaque intersecta con la recta li, que es la arista por la que secomienza a recorrer el arreglo Ai−1, y, por último, cómo dividir lascaras que se van encontrando.

El punto de intersección entre li y Ai−1, situado más a la izquierdaestá en una arista de B(L).Sólo hay que buscar entre todas lasaristas cuál es la primera en ser intersectada.

La cara adyacente a esta arista está dentro de B(L) y es la primeracara que divide la recta li.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 68 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Si li hace intersección con Ai−1, por primera vez, en una esquinade B(L), la primera cara que divide li es la única cara adyacente aesa esquina que está dentro de B(L).

Si li es una recta vertical, puede localizarse, para comenzar elrecorrido, el punto de intersección más bajo entre li y Ai−1.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 69 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Como Ai−1 contiene al menos 2i+ 2 aristas en B(L), el tiempo quese necesita para este paso es lineal para cada recta, teniendo encuenta que todas las aristas pertenecientes a B(L) pueden estarconectadas por sus punteros Next(), ya que al fin y al cabo todasellas tienen como una de sus caras incidentes la cara que quedafuera del límite de B(L).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 70 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Se quiere dividir una cara f,y se asume que la cara situada a laizquierda de f en el recorrido de li ya ha sido dividida y, enparticular, que la arista e por donde se entra a f se encuentra yadividida.

Para dividir f, en primer lugar hay que crear dos nuevos registrosde caras, uno para la parte de f que se encuentra por encima de li yotro para la parte de f que se encuentra debajo de li.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 71 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

A continuación hay que dividir la arista e’ que es aquella por laque li abandona f; además hay que crear un nuevo vértice parali ∩ e′. Es decir, se crea un nuevo registro de vértice y dos nuevosregistros de half-edge para las dos nuevas aristas.

Hay que crear, además, registros de half-edge para la arista li ∩ f .

Es importante inicializar correctamente todos los punteros de losregistros de las nuevas caras, vértices y half-edge y destruir elregistro de la cara f y los registros de los half-edge de e’. El tiempototal de esta división es lineal respecto a la complejidad de f.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 72 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 73 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Algoritmo CONSTRUIRARREGLO(L)Entrada. Un conjunto L de n rectas en el plano.Salida. La estructura DCEL con la subdivisión del plano generada porB(L) y la parte de A(L) que se encuentra dentro de B(L), siendo B(L) unbounding box que contiene todos los vértices de A(L) en su interior.

1 Calcular el bounding box B(L) que contiene todos los vértices deA(L) en su interior.

2 Construir la estructura DCEL para la subdivisión generada porB(L).

3 for i← 1 to n4 do Encontrar la arista e en B(L) que contiene el punto de

intersección situado más a la izquierda entre li y Ai.5 f ← la cara finita adyacente a e6 while f no sea una cara infinita, es decir, una cara fuera de B(L)7 do Dividir f, y dejar f ser la siguiente cara intersectada.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 74 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

El paso 1 del algoritmo que calcula B(L) puede realizarse en untiempo O(n2), ya que es necesario calcular todas las interseccionesentre las rectas para obtener las que se encuentra más arriba, másabajo, más a la izquierda y más a la derecha, que serán los vérticesque formen el bounding box.

El paso 2 consume un tiempo constante. Encontrar la primeraregión dividida por li lleva un tiempo O(n).

Faltaría por delimitar el tiempo consumido por la división de lascaras intersectadas por li.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 75 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Para calcular este tiempo se asume que A(L) es un arreglo derectas simple.

En este caso, el tiempo utilizado para dividir una cara f yencontrar la siguiente cara con intersección, es lineal respecto a lacomplejidad de f. Por lo tanto, el tiempo total necesario parainsertar una recta li es lineal respecto a la suma de lascomplejidades de las caras de Ai−1 intersectadas por li.

Cuando un arreglo A(L) no es simple, puede abandonarse unacara f a través de un vértice, en cuyo caso es necesario recorrertodas las caras adyacentes a dicho vértice hasta encontrar lasiguiente cara a dividir; para ello hay que recorrer las aristas queno están en la frontera de la cara a dividir.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 76 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Nótese que las aristas que se tratan en este caso, están en lafrontera de las caras que intersectan con li.

Esto nos lleva al concepto de zona.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 77 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

La zona de una línea en el arreglo A(L) inducido por el conjunto Lde líneas en el plano, es el conjunto de caras de A(L) a las cualesintersecta.

La complejidad de una zona está definida por la suma de elnúmero de aristas y vértices de esas caras.

En la figura se puede notar que algunos vértices son contados unavez en la complejidad de la zona, otros dos, tres o incluso 4 veces.

El tiempo que necesitamos para insertar li es lineal en lacomplejidad de la zona de li en A({l1, ..., li}). El teorema de la zonanos dice que esta cantidad es lineal.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 78 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 79 / 96

Arreglos de líneas Algoritmo de construcción incremental

Algoritmo de construcción incremental

TeoremaLa complejidad de la zona de una línea en un arreglo de m líneasen el plano es O(m).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 80 / 96

Arreglos de líneas Complejidad

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 81 / 96

Arreglos de líneas Complejidad

Complejidad

Hemos visto que el tiempo necesario para insertar li es lineal en lacomplejidad de la zona de li en A({l1, ..., li−1}).

Por el teorema de la zona esto es O(i). así que el tiempo requeridopara insertar todas las líneas es:

n∑i=1

O(i) = O(n2) (1)

Los pasos 1 y 2 del algoritmo juntos toman O(n2), así que eltiempo total de ejecución del algoritmo es O(n2). Debido a que lacomplejidad de A(L) es Θ(n2) cuando A(L) es simple, nuestroalgoritmo es óptimo.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 82 / 96

Arreglos de líneas Complejidad

Complejidad

TeoremaUna lista de aristas doblemente conectada para el arreglo inducidopor un conjunto de n líneas puede ser construido en O(n2).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 83 / 96

Niveles y Discrepancia

1 ArreglosRay TracingDefinición de la discrepanciaCálculo de la discrepancia

2 DualidadDefiniciónInterpretación geométricaAplicaciones

3 Arreglos de líneasArreglos de líneasAlgoritmo de construcción incrementalComplejidad

4 Niveles y DiscrepanciaNiveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 84 / 96

Niveles y Discrepancia Niveles y Discrepancia

4 Niveles y DiscrepanciaNiveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 85 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Hemos dualizado el conjunto S de n puntos simples en unconjunto S* de n líneas, y necesitamos calcular para cada vérticede A(S*):

Cantidad de líneas que pasan sobre el vérticeCantidad de líneas que pasan a través del vérticeCantidad de líneas que pasan bajo el vértice

Para cada vértice, estas tres cantidades suman exactamente n, asíque es suficiente calcular dos de éstas.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 86 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Hemos construido una lista de aristas doblemente conectada paraA(S*), por lo tanto sabemos cuantas líneas pasan a través de cadavértice.

Definimos nivel de un punto en un arreglo de líneas como elnúmero de líneas estrictamente sobre él.

Para calcular los niveles de los vértices de A(S*) hacemos losiguiente para cada línea ∈ S*.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 87 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Primero calculamos el nivel del vértice más a la izquierda en untiempo O(n), revisando por cada línea restante que caeestrictamente sobre este vértice.

Después caminamos de izquierda a derecha para visitar elsiguiente vértice, usando la lista de aristas doblemente conectada.

Es fácil mantener el nivel mientras caminamos: el nivel solocambia en un vértice, y el cambio puede ser calculadoinspeccionando las aristas incidentes al vértice encontrado.

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 88 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 89 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 90 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 91 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 92 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 93 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 94 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 95 / 96

Niveles y Discrepancia Niveles y Discrepancia

Niveles y Discrepancia

De esta forma, el tiempo para calcular los niveles de los vérticesen l es O(n). Por lo tanto, los niveles de todos los vértices de A(S*)pueden ser calculados en tiempo O(n2).

El número de líneas sobre, a través y bajo cada vértice de A(S*)nos da la información que necesitamos para calcular la medidadiscreta de los semiplanos acotados por las líneas que contienendos puntos en S.

Por lo tanto, estas medidas discretas pueden ser calculadas entiempo O(n2).

Giomara L., Sotero M. (CINVESTAV) Arreglos y Dualidad 19 de marzo del 2013 96 / 96

top related