geometría computacional solapamiento de subdivisiones

93
Geometría Computacional: Solapamiento de Subdiviciones Planares Maikel Arcia Miguel Sancho

Upload: miguel-sancho

Post on 03-Jul-2015

228 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional: Solapamiento de SubdivicionesPlanares

Maikel Arcia

Miguel Sancho

Page 2: Geometría computacional   solapamiento de subdivisiones

Lecture 2

Line Segment Intersection

Computational Geometry

Prof.Dr.Th.Ottmann

Thematic map overlay in Geographical Information Systems

carreterasrios Solapamiento

de mapas

1. Thematic overlays provide important information.

2. Roads and rivers can both be regarded as networks of line segments.

Motivación

Solapamientos de Mapa

Determinar intersecciones entre capas.

Geometría Computacional

Page 3: Geometría computacional   solapamiento de subdivisiones

Intersección de redes.

De forma simplifciada el problema de solapamientos de mapas, es la intersección de redes representadas por una colección segmentos.

Geometría Computacional

Page 4: Geometría computacional   solapamiento de subdivisiones

Objetivo

Diseñar un algoritmo para solapar dos subdiviones planares usando:

Barrido del plano

Intersecciones de Segmentos

Estructura de datos DCEL

Geometría Computacional

Page 5: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Page 6: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

k

g

i

h

l

Geometría Computacional

Page 7: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

k

g

i

h

l

n

Geometría Computacional

Page 8: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

f

j

m

Geometría Computacional

Page 9: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Page 10: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices

Page 11: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Page 12: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

Page 13: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Page 14: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g)

g

Page 15: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g)

g

(f,h)h

Page 16: Geometría computacional   solapamiento de subdivisiones

c

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g)

g

(f,h)h

i

(f,i)

Page 17: Geometría computacional   solapamiento de subdivisiones

c

g

h

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g) (f,h)

i

(f,i)

j (j,g)

(j,g)

(j,h)

(j,i)

Page 18: Geometría computacional   solapamiento de subdivisiones

c

g

h

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g) (f,h)

i

(f,i)

j (j,g)

(j,g)

(j,h)

(j,i)

k

(j,k)

(j,k)

Page 19: Geometría computacional   solapamiento de subdivisiones

g

h

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g) (f,h)

i

(f,i)

j (j,g)

(j,g)

(j,h)

(j,i)

k

(j,k)

(j,k)

l

(j,l)

Page 20: Geometría computacional   solapamiento de subdivisiones

g

h

Solapamiento de Subdivisiones

Geometría Computacional

Nuevos vértices Nuevas semi-aristas

Vértices que se

preservan

Vértices que se

preservan

semi-aristas

que se

preservan

semi-aristas que

se preservan

Las caras deben ser

etiquetadas con las etiquetas

de las caras que se solapan.

f(f,g) (f,h)

i

(f,i)

j (j,g)

(j,g)

(j,h)

(j,i)

k

(j,k)

(j,k)

l

(j,l)

(m,n)

Las caras infinitas siempre se

interceptan.

Page 21: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Partes de las dos subdivisiones se podrían reutilizar.

Solo hay que modificar las semi-aristas incidentes en un vértice de intersección entre las dos subdivisiones.

¿Idea?

Geometría Computacional

Page 22: Geometría computacional   solapamiento de subdivisiones

Solapamiento de Subdivisiones

Partes de las dos subdivisiones se podrían reutilizar.

Solo hay que modificar las semi-aristas incidentes en un vértice de intersección entre las dos subdivisiones.

¿Idea? Copiar las dos DCEL en una nueva y transformarla en una DCEL válida.

Geometría Computacional

Page 23: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Transformar la nueva DCEL en una válida?

Computar los nuevos vértices.

Crear las nuevas semi-aristas.

Para toda semi-arista e y vértice v afectados, actualizar las referencias: Origing(e), Next(e), Prev(e), Twin(e), IncidentFace(e) IncidentEdge(v).

Crear nuevos registros para cada cara, etiquetados con las etiquetas de las caras que se solapan.

Page 24: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Page 25: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

Page 26: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

Page 27: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

Page 28: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

Page 29: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

Page 30: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

Page 31: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

Page 32: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

Page 33: Geometría computacional   solapamiento de subdivisiones

Geometría Computacional

Computar nuevos vértices

Usar el algoritmo para determinar intersecciones de segmentos.

En las intersecciones de una misma subdivisión no se realiza ninguna operación adicional.

En las nuevas intersecciones se actualizan los vértices y semi-aristas.

Page 34: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas

Page 35: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas

Page 36: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Page 37: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Page 38: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Page 39: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Por cada nueva semi-arista se actualiza: Origing, Next, Prev.

Por cada semi-arista reutilizada se actualiza solo el la referncia Next.

Page 40: Geometría computacional   solapamiento de subdivisiones

Next(e1)

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Por cada nueva semi-arista se actualiza: Origing, Next, Prev.

Por cada semi-arista reutilizada se actualiza solo el la referncia Next.

Page 41: Geometría computacional   solapamiento de subdivisiones

Next(e1)

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Por cada nueva semi-arista se actualiza: Origing, Next, Prev.

Por cada semi-arista reutilizada se actualiza solo el la referncia Next.

Page 42: Geometría computacional   solapamiento de subdivisiones

Next(e1)

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Por cada nueva semi-arista se actualiza: Origing, Next, Prev.

Por cada semi-arista reutilizada se actualiza solo el la referncia Next.

Page 43: Geometría computacional   solapamiento de subdivisiones

Next(e1)

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Las semi-aristas se reutilizan y se adiciona una nueva por cada semi-arista afectada.

Por cada nueva semi-arista se actualiza: Origing, Next, Prev.

Por cada semi-arista reutilizada se actualiza solo el la referncia Next.

Page 44: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Next(e1)

Page 45: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista - arista

e1

Next(e1)

Las nuevas caras siguen estando a la izquierda de las semi-aristas.

Luego las semi-aristas no deben ser reorientadas.

Page 46: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 47: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 48: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 49: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 50: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 51: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 52: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso arista – vértice

Page 53: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Page 54: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 55: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 56: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 57: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 58: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 59: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 60: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

Page 61: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

Todos los casos se pueden reducir al caso en que dos vértices de las subdivisiones coinciden.

¿Cómo determinar el orden de las semi-aristas para actualizar las referencias?

Page 62: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

El estado de la línea de barrido contiene los segmentos ordenados abajo hacia arriba.

Page 63: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

El estado de la línea de barrido contiene los segmentos ordenados abajo hacia arriba.

Page 64: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso vértice - vértice

El estado de la línea de barrido contiene los segmentos ordenados abajo hacia arriba.

Page 65: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso especial arista -arista

Page 66: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso especial arista -arista

Es necesario chequear si los segmentos son colineales.

Page 67: Geometría computacional   solapamiento de subdivisiones

Solo es necesario crear

dos nuevas semi-

aristas

Geometría ComputacionalGeometría Computacional

Crear nuevas semi-aristas: caso especial arista -arista

Es necesario chequear si los segmentos son colineales.

Page 68: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Complejidad temporal para actualizar vértices y semi-aristas.

Actualizar las semi-aristas en un vértice v toma un tiempo O(deg(v)), donde deg(v) es el grado del vértice.

Luego actualizar todas las semi-aristas toma un tiempo O(m), donde m es el número de aristas, lo que es equivalente a O(n).

Luego actualizar las semi-aristas no incrementa el tiempo de determinar las intersecciones, el cual es O((n+k)log n), donde k es el número de intersecciones.

Page 69: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Actualización de las caras

Crear un registro para cada cara.

Para cada registro f crear las referencias:

- OuterComponent(f)

- InnerComponents(f)

Para cada semi-arista e actualizar la referencia InidentFace(e).

¿Cúantos registros de caras se requieren?

Page 70: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Actualización de las caras

Crear un registro para cada cara.

Para cada registro f crear las referencias:

- OuterComponent(f)

- InnerComponents(f)

Para cada semi-arista e actualizar la referencia InidentFace(e).

¿Cúantos registros de caras se requieren?

Número de caras = Número de ciclos exteriores + 1

Page 71: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Page 72: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Se busca el vértice más a la izquierda.

Page 73: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Se busca el vértice más a la izquierda.

Si el ángulo de giro es mayor que 180 es un ciclo interior

Page 74: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Se busca el vértice más a la izquierda.

Si el ángulo de giro es mayor que 180 es un ciclo interior

Si el ángulo de giro es menor que 180 es un ciclo exterior

Page 75: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Se busca el vértice más a la izquierda.

Si el ángulo de giro es mayor que 180 es un ciclo interior

Si el ángulo de giro es menor que 180 es un ciclo exterior

Se puede resolver con giros de segmentos sin calcular los ángulos

Page 76: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

¿Cómo saber si un ciclo es exterior?

Construir un grafo G no dirigido tal que

Todo ciclo límite corresponda a un nodo Cj.

Un nodo C∞ para el límite exterior imaginario de la cara ilimitada.

(Ci, Cj) es una arista si y solo si se cumplen ambas:

(a) Uno de los ciclo sea el límite de un hueco.

(b) Y el otro ciclo tenga una semi-arista inmediatamente a la izquierda del vértice extremo izquierdo del primer ciclo.

Page 77: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

Page 78: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

Page 79: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

Page 80: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

C2

Page 81: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

C2C3

Page 82: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

C2C3

C6

Page 83: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

C2C3

C6

C5

C4

C7

Page 84: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

C∞

C1

C2C3

C6

C5

C4

C7

Cada componente conexa del grafo corresponde a una cara, con su componente exterior y su lista de componenetes interiores

Page 85: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Construcción del grafo G

Estudiar en el libro

Computational Geometry, Algorithms and Applications

Epígrafe 2.3, pág. 33

Modificar el algoritmo de barrido del

plano para construir G.

Cuando un punto de evento v es el vértice

extremo izquierdo de un ciclo de un hueco C

1. Localizar la arista e a la izquierda de v

y el ciclo C de esta

2. Adicionar la arista (C, C ) a G.

Mantener una referencia desde toda semi-arista

al nodo en G que el ciclo al que esta pertenece

Page 86: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Etiquetado de las caras

Una vez creados todos los registros de las caras y establecidas sus referencias, se recorren los bordes exteriores y se consultan las referencias a las caras de las subdivisiones y se establecen las referencias IncidentFace(e) hacia la nueva cara con la nueva etiqueta combinada.

Page 87: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Complejidad temporal

El grafo G se construye en el mismo barrido del plano sin costo adicional.

Los registros de las caras se construyen y se etiquetan en un tiempo O(n)

El algoritmo se puede implementar en un tiempo O((n+k)log n).

Page 88: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Operaciones con polígonos

Page 89: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Operaciones con polígonos

P Q

Page 90: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Operaciones con polígonos

P Q

P Q

Page 91: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Operaciones con polígonos

P Q

P Q

P – Q

Page 92: Geometría computacional   solapamiento de subdivisiones

Geometría ComputacionalGeometría Computacional

Operaciones con polígonos

P Q

P – Q

P Q

Page 93: Geometría computacional   solapamiento de subdivisiones

Bibliografía base

MM. de Berg, M. van Kreveld, M. Overmars, O. Schawarzkopf: Computational Geometry, Springer Verlag, 1997.

Geometría ComputacionalGeometría Computacional