Aplicación de la Geometría Computacional en la Reconstrucción 3D ...
Transcript of Aplicación de la Geometría Computacional en la Reconstrucción 3D ...
Aplicacion de la Geometrıa
Computacional en la
Reconstruccion 3D Basada en
Diagramas de Voronoipor
Ulises Martınez RodrıguezTesis presentada en cumplimiento parcial de los requisitos
para la obtencion del grado de
Licenciado en Matematicas Aplicadas
Benemerita Universidad Autonoma de Puebla, Facultad de
Ciencias Fısico Matematicas
Asesor(es):
Dr. Wuiyebaldo Fermın Guerrero Sanchez
Dra. Blanca Bermudez Juarez
Dr. Carlos Guillen Galvan
Mexico, Puebla, marzo de 2015
Al que lucha y no claudica.
Resumen
¿Cual es la mejor manera de imprimir una pieza tridimensionalmente, tal que esta
no pierda su forma original pero con un ahorro considerado de material? Una
buena ayuda para resolver esta situacion se halla en los diagramas de Voronoi,
que son las regiones en que se divide el plano (espacio), una especie de mosaico
con una propiedad muy particular: si en el plano (espacio) se eligen un conjunto
de puntos, el diagrama de Voronoi asigna una region a cada punto, de tal modo
que todo lo que esta contenido en esa region esta mas cerca de ese punto que de
cualquier otro.
El concepto de diagrama de Voronoi es tan basto como antiguo, por ejemplo
Descartes lo consideraba en 1644 e incluso se utilizo para evitar un mayor numero
de muertes durante el brote de colera en Londres, en 1854. Tan basto dado que
sus aplicaciones pueden darse en Ciencias Sociales, Arquitectura, Cristalografıa,
Biologıa, Quımica o incluso Astronomıa.
En la presente tesis se muestran conceptos de la Teorıa de Grafos, debido a que el
diagrama de Voronoi es una construccion derivada de aquella, ası como tambien
los algoritmos mas importantes para generar un diagrama de Voronoi y la trian-
gulacion de Delaunay.
Al final se describe un metodo para, lo que nosotros llamamos, Voronizar algunas
piezas que se imprimen en el Laboratorio de Sistemas Dinamicos Controlables de la
Facultad de Ciencias Fısico Matematicas de la BUAP, a cargo del Dr. Wuiyebaldo
Fermın Guerrero Sanchez. Para ello, se empleo el Software Libre MeshLab, el cual
exhibe la superficie del modelo tridimensional a traves de mallas, obteniendo muy
buenos resultados.
Tambien se exhibe la importancia que ha sabido ganarse esta teorıa, basica en
problemas de optimizacion y diseno computacional. Recordar que “En el espacio
de Voronoi, quien mucho abarca tiene los amigos muy lejos”.
Contenido
Resumen ii
Agradecimientos vi
Lista de Figuras vii
Lista de Tablas x
Acronimos y Notacion xii
Sımbolos xiii
1 Introduccion 1
1.1 Geometrıa Computacional . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Estructura de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Estado del Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Cronologıa . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.2 Aplicaciones Historicas . . . . . . . . . . . . . . . . . . . . . 8
2 Preliminares 13
2.1 Conceptos basicos de la teorıa de grafos . . . . . . . . . . . . . . . . 13
2.2 Adyacencia de vertices, incidencia de aristas y grado de vertices . . 16
2.3 Representaciones de los grafos . . . . . . . . . . . . . . . . . . . . . 18
2.4 Isomorfismo de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5 Caminos y ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Conexidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.7 Grafos planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.8 Formula de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.9 Teorema de Kuratowski . . . . . . . . . . . . . . . . . . . . . . . . 27
2.10 Grafos duales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3 Diagramas de Voronoi 30
iii
iv
3.1 Conceptos Basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.1 Propiedades de un diagrama de Voronoi . . . . . . . . . . . 39
3.2 Definiciones de la Triangulacion (Teselacion) de Delaunay . . . . . . 40
3.2.1 Propiedades de la triangulacion de Delaunay . . . . . . . . . 44
3.3 Construccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Principales algoritmos de construccion del diagrama de Voronoi . . 49
3.4.1 Interseccion de semiplanos . . . . . . . . . . . . . . . . . . . 49
3.4.2 Algoritmo incremental . . . . . . . . . . . . . . . . . . . . . 49
3.4.3 Divide y venceras . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.4 Algoritmo de Fortune . . . . . . . . . . . . . . . . . . . . . . 53
3.5 Principales algoritmos de construccion de la triangulacion de De-launay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.5.1 Algoritmo Incremental . . . . . . . . . . . . . . . . . . . . . 55
3.5.2 Divide y venceras . . . . . . . . . . . . . . . . . . . . . . . . 56
3.6 Complejidad computacional . . . . . . . . . . . . . . . . . . . . . . 60
3.6.1 Interseccion de semiplanos . . . . . . . . . . . . . . . . . . . 60
3.6.2 Algoritmo incremental . . . . . . . . . . . . . . . . . . . . . 61
3.6.3 Divide y venceras . . . . . . . . . . . . . . . . . . . . . . . . 61
3.6.4 Algoritmo de Fortune . . . . . . . . . . . . . . . . . . . . . . 62
3.6.5 Algoritmo incremental, triangulacion de Delaunay . . . . . . 63
4 Optimizacion basada en diagramas de Voronoi 65
4.1 Teselaciones de Voronoi Centroidales (TVC) . . . . . . . . . . . . . 67
4.2 Algoritmos para TDVCs . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.1 Enfoque probabilıstico (McQueen) . . . . . . . . . . . . . . . 69
4.2.2 Enfoque determinıstico (Lloyd) . . . . . . . . . . . . . . . . 70
4.2.3 Algoritmos para TDVCs restringidos (TDVCRs) . . . . . . . 71
4.3 Aplicaciones de TDVCs para la generacion de mallas . . . . . . . . 73
4.3.1 Generacion de mallas sin restricciones . . . . . . . . . . . . . 73
4.3.2 Generacion de mallas con restricciones . . . . . . . . . . . . 74
4.3.3 Adaptacion y suavizado local (Smoothing) . . . . . . . . . . 75
5 Reconstruccion 3D 77
5.1 Procesamiento y edicion de mallas . . . . . . . . . . . . . . . . . . . 77
5.2 Metodo de reconstruccion 3D con MeshLab . . . . . . . . . . . . . . 80
Paso 1: Crear una nueva superficie . . . . . . . . . . . . . . . . . . 80
Paso 2: Crear una subdivision de la superficie . . . . . . . . . . . . 80
Paso 3: Crear los generadores (centroides) . . . . . . . . . . . . . . 81
Paso 4: Colorear los vertices . . . . . . . . . . . . . . . . . . . . . . 82
Paso 5: Elegir las caras por sus vertices . . . . . . . . . . . . . . . . 82
Paso 6: Eliminar las caras y los vertices . . . . . . . . . . . . . . . . 83
Paso 7: Suavizar las aristas . . . . . . . . . . . . . . . . . . . . . . 83
Paso 8: Crear un remuestreo de malla . . . . . . . . . . . . . . . . . 83
Paso 9: Suavizado del modelo final . . . . . . . . . . . . . . . . . . 84
v
6 Resultados 85
6.1 Aplicaciones analizadas . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.1.1 El brote de colera en Londres . . . . . . . . . . . . . . . . . 85
6.1.2 Ataque a Pearl Harbor . . . . . . . . . . . . . . . . . . . . . 87
6.1.3 Patrones en la piel de una jirafa . . . . . . . . . . . . . . . . 88
6.1.4 Oxxos cerca de CU . . . . . . . . . . . . . . . . . . . . . . . 90
6.2 Resultados de la aplicacion del metodo . . . . . . . . . . . . . . . . 92
Pieza original . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Creacion de los puntos generadores (centroides) . . . . . . . . . . . 93
Delimitacion de aristas . . . . . . . . . . . . . . . . . . . . . . . . . 94
Eliminacion de caras y vertices . . . . . . . . . . . . . . . . . . . . 95
Suavizado final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7 Conclusiones y Recomendaciones 97
A Figuras 98
Creacion de una subdivision de la superficie . . . . . . . . . . . . . 98
Coloreado de los vertices . . . . . . . . . . . . . . . . . . . . . . . . 100
Eleccion de las caras por sus vertices . . . . . . . . . . . . . . . . . 101
Color oculto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Color invertido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Suavizado de aristas . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Aristas con volumen . . . . . . . . . . . . . . . . . . . . . . . . . . 105
B Mathematica 106
Bibliografıa 108
Agradecimientos
Gracias a la voluntad de muchos, que directa o indirectamente colaboraron en el
desarrollo de la presente.
A mi madre, Minerva, principal ejemplo de vida. A mi esposa, Ivette, modelo de
responsabilidad y superacion.
Al Dr. David Herrera Carrasco, quien evito que renunciara a este sueno.
A Jason Davies, Jose R. Gomez, la Canadian Forest Service Publications, la Uni-
versidad de Harvard, al periodico aleman Badische Zeitung, la Population Associ-
ation of America, la Universidad de Florida, Taylor and Francis online, Springer
Ed. online, IEE Explore, Yahoo! Japan y Okabe et al.
Finalmente, y no menos importantes, al asesor de esta tesis Dr. W. Fermın
Guerrero Sanchez, por otorgarme la oportunidad de salir adelante, su orientacion,
su paciencia y motivacion han sido fundamentales para llevar a cabo este trabajo.
Al tambien asesor de tesis Dr. Carlos Guillen Galvan por su contribucion invalu-
able al desarrollo y estructuracion del estudio, su seriedad, responsabilidad y rigor
academico han influido en mi desarrollo como investigador. Y al Dr. Ricardo
Agustın Serrano, quien aporto la idea original de aplicar diagramas de Voronoi
para la impresion 3D. Sin ellos no fuese posible la culminacion de este esfuerzo.
vi
Lista de Figuras
1.1 El mundo dividido en areas de Voronoi, en funcion de las capitales. 5
1.2 El concepto de Universo por Descartes. . . . . . . . . . . . . . . . . 7
1.3 Analisis del brote de colera en Londres por John Snow, 1854. . . . . 8
1.4 Geografıa de los dialectos de Suabia. . . . . . . . . . . . . . . . . . 10
1.5 Estudio de areas de mercado por Bogue. Copyright: Universidadde Florida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Cırculo mas grande que contiene a los puntos de un conjunto, Shamosy Hoey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Grafo simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Multigrafo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Pseudografo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Grafo dirigido (digrafo). . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Multigrafo dirigido. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Matriz de incidencia y de adyacencia de G. . . . . . . . . . . . . . . 19
2.7 Grafos simples isomorfos. . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8 Caminos en un grafo simple. . . . . . . . . . . . . . . . . . . . . . . 22
2.9 El grafo G1 es conexo y el grafo G2 no lo es. . . . . . . . . . . . . . 23
2.10 El grafo H y sus componentes conexas H1, H2 y H3. . . . . . . . . 24
2.11 El grafo G es fuertemente conexo, el grafo H es debilmente conexo. 24
2.12 (a) El Grafo H, con dos cortes de aristas. (b) El grafo H, sin cortesde aristas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.13 Regiones de la representacion plana del grafo G. . . . . . . . . . . . 26
2.14 (a) Grafo K5. (b) Grafo K3,3. . . . . . . . . . . . . . . . . . . . . . 27
2.15 Ejemplo de caras de un grafo G. . . . . . . . . . . . . . . . . . . . . 28
2.16 Grafo G y su dual G*. . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1 (a) Diagrama de Voronoi degenerado. (b) Diagrama de Voronoi nodegenerado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Diagramas de Voronoi Acotados. . . . . . . . . . . . . . . . . . . . 34
3.3 Un polıgono de Voronoi obtenido a partir de semiplanos. . . . . . . 35
3.4 Vista estereografica de un diagrama de Voronoi de puntos aleatoriosen un cubo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.5 Diagrama de Voronoi en lınea. . . . . . . . . . . . . . . . . . . . . . 38
3.6 Diagrama de Voronoi digitalizado ordinario planar. . . . . . . . . . 39
3.7 Superficie de Voronoi. . . . . . . . . . . . . . . . . . . . . . . . . . . 40
vii
Lista de Figuras viii
3.8 Cırculo maximo vacıo centrado en v1. . . . . . . . . . . . . . . . . . 41
3.9 Diferentes tipos de triangulaciones a partir de una misma nube depuntos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.10 (a) Puntos generadores colineales. (b) Puntos generadores cocircu-lares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.11 El grafo de Delaunay G de un diagrama de Voronoi V(P ) . . . . . . 44
3.12 El grafo dual DG(P ). . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.13 Cara f en DG(P ), n−gono convexo. . . . . . . . . . . . . . . . . . . 46
3.14 Numero de triangulos y aristas. . . . . . . . . . . . . . . . . . . . . 47
3.15 Interseccion de semiplanos. . . . . . . . . . . . . . . . . . . . . . . . 50
3.16 Algoritmo incremental. . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.17 Algoritmo divide y venceras. . . . . . . . . . . . . . . . . . . . . . . 53
3.18 Algoritmo de Fortune. . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.19 Operacion Split sobre un triangulo y un punto en su interior. . . . . 56
3.20 Verificacion del triangulo T1. . . . . . . . . . . . . . . . . . . . . . . 57
3.21 Operacion Flip con respecto al vertice v en el triangulo T1. . . . . . 58
3.22 Las mitades L, R y sus respectivos ındices. . . . . . . . . . . . . . . 59
3.23 La arista L−R Base para la union de L y R. Las flechas indican elsentido en el que el algoritmo recorre cada mitad para determinarla arista L−R Base. . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.24 Vertices candidatos lCand y rCand, se escoge lCand ya que cumpleel test del cırculo vacıo. . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.25 Actualizacion de la arista L−B Base. . . . . . . . . . . . . . . . . 62
3.26 El cırculo definido por lCand, lBase y rBase contiene a lNextCand,por lo cual la arista que une lCand con lBase es eliminada. . . . . . 63
4.1 La malla contiene una estructura combinatoria (no una sopa detriangulos). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2 Diagrama de Voronoi de un rectangulo con 10 puntos aleatorios (()son los centroides, (•) son los generadores) y la funcion de densidades una constante. Notar que los generadores y los centroides nocoinciden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.1 Analisis del brote de colera en Londres, por John Snow, la cruz rojarepresenta la bomba de Broad Street. . . . . . . . . . . . . . . . . . 86
6.2 Diagrama de Voronoi del analisis de brote de colera en Londres. . . 87
6.3 Ruta del ataque a Pearl Harbor recorrida por la Fuerza Especial dePortaaviones Japonesa de ida y vuelta. . . . . . . . . . . . . . . . . 88
6.4 Diagrama de Voronoi aplicado a la ruta de ataque a Pearl Harbor. . 89
6.5 Patrones en la piel de una jirafa. . . . . . . . . . . . . . . . . . . . . 89
6.6 Aproximacion del diagrama de Voronoi en la piel de una jirafa. . . . 90
6.7 Vista del area cercana a CU. . . . . . . . . . . . . . . . . . . . . . . 91
6.8 Diagrama de Voronoi aplicado al area cercana a CU. . . . . . . . . 91
6.9 Diseno original de la pieza ornamental. . . . . . . . . . . . . . . . . 92
6.10 Vista de Puntos con la distribucin Poisson-disk. . . . . . . . . . . . 93
Lista de Figuras ix
6.11 Vista con la calidad de vertice modificada. . . . . . . . . . . . . . . 94
6.12 Vista de supresion de caras y vertices seleccionados. . . . . . . . . . 95
6.13 Vista de las aristas suavizadas mediante la aproximacion de Taubin. 96
A.1 Modelo con superficie reconstruida. . . . . . . . . . . . . . . . . . . 99
A.2 Vista de filtro de coloracion de vertices de Voronoi (Back distanceactivado). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
A.3 Vista de seleccion de caras por su rango de calidad sin modificar. . 101
A.4 Vista sin color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
A.5 Vista con la seleccion de caras y vertices invertida. . . . . . . . . . 103
A.6 Vista de aristas suavizadas. . . . . . . . . . . . . . . . . . . . . . . 104
A.7 Vista de remuestreo de mallas uniforme. . . . . . . . . . . . . . . . 105
B.1 Diagrama de Voronoi realizado con Mathematica. . . . . . . . . . . 107
Lista de Tablas
2.1 Terminologıa en teorıa de grafos. . . . . . . . . . . . . . . . . . . . 17
5.1 Extensiones soportadas por MeshLab. . . . . . . . . . . . . . . . . . 81
x
Lista de Algoritmos
3.1 Intersecta Semiplano(H) . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2 Voronoi Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3 Concatenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4 Divide y Venceras Voronoi . . . . . . . . . . . . . . . . . . . . . . . 53
3.5 Fortune(P ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6 Delaunay Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.7 Divide Delaunay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.8 Procedimiento merge . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.9 Borrar arista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.1 Metodo de McQueen . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 Metodo de Lloyd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3 Metodo de McQueen Modificado . . . . . . . . . . . . . . . . . . . . 72
4.4 Metodo de Lloyd Modificado . . . . . . . . . . . . . . . . . . . . . . 73
xi
Acronimos y Notacion
CAD Diseno Asistido por Computadora.
CCW Counter-ClockWise, sentido antihorario.
CW ClockWise, sentido del reloj.
TVC Teselacion de Voronoi Centroidal.
TDVC Triangulacion de Delaunay basada en Teselaciones de Voronoi
Centroidales.
TVCR Teselacion de Voronoi Centroidal Restringida.
TDVCR Triangulacion de Delaunay basada en teselaciones de Voronoi
Centroidales Restringidas.
VCG Visualizacion y Computacion Grafica.
Θ Dada una funcion g(n), se denota por Θ(g(n)) al conjunto de funciones
Θ(g(n)) = f(n)|∃ c1, c2, n0 > 0 : 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n), n ≥ n0.
O Dada una funcion g(n), se denota por O(g(n)) al conjunto de funciones
(g(n)) = f(n)|∃ c, n0 > 0 : 0 ≤ f(n) ≤ cg(n), n ≥ n0.
Ω Dada una funcion g(n), se denota por Ω(g(n)) al conjunto de funciones
Ω(g(n)) = f(n)|∃ c, n0 > 0 : 0 ≤ cg(n) ≤ f(n), n ≥ n0.
xii
Sımbolos
∂ Frontera de un conjunto.
G Grafo.
DG(P ) Grafo de Delaunay.
G Grafo dual del diagrama de Voronoi.
T Triangulacion.
V Diagrama de Voronoi.
xiii
Capıtulo 1
Introduccion
1.1 Geometrıa Computacional
La Geometrıa Computacional es una rama de las ciencias computacionales que
se encarga del diseno y analisis sistematico de algoritmos y estructuras de datos
necesarios para la solucion eficiente de problemas que implican como entrada y
salida objetos geometricos. Sus orıgenes nos pueden remontar en siglos (hay quien
dice que el primer algoritmo de Geometrıa Computacional nace cuando una serie
de pasos correctos no ambiguos y con un final resuelven un problema geometrico,
el precursor: Euclides), pero es solo a principios de 1970 que Michael Shamos
comienza un estudio sistematizado de problemas, obsesionado con la idea de crear
una nueva disciplina de las ciencias de computacion, a la cual llamo Geometrıa
Computacional [1].
La investigacion en esta area ha encontrado muchas aplicaciones en la vida real:
robotica, reconocimiento de voz y de patrones, diseno grafico, sistemas de infor-
macion geografica, etc.
La principal razon que motivo la elaboracion de la presente tesis fue el problema
de optimizar material para impresoras 3D, especıficamente modelos de fisioterapia,
como ferulas y de ortopedia, como protesis de dedos, muneca o brazo. Es decir,
de que forma podrıa disenarse una pieza a imprimir, tal que mantenga el mismo
1
Introduccion 2
perfil o figura. Se hallo que una manera podrıa ser voronizando tales piezas, en
otras palabras, generar una modelo 3D del cual solo se observan las aristas de
la malla que constituye al objeto, usando como base un diagrama de Voronoi
tridimensional, o teselacion de Voronoi, como se vera mas adelante.
El estudio del diagrama de Voronoi, ası como de su dual, la triangulacion de
Delaunay, forma parte de la Geometrıa Computacional.
1.2 Planteamiento del Problema
Uno de los impedimentos fundamentales para la impresion 3D es la falta de ma-
terial para efectuarla, debido a su alto costo. Cuando se comenzo a analizar la
posibilidad de imprimir partes del cuerpo humano previamente escaneadas, este
problema debıa solucionarse a la brevedad. Despues de sugerirse la aplicacin del
diagrama de Voronoi a los modelos 3D, se busco un procedimiento para modificar
los disenos originales.
En esta tesis se pretende describir un metodo optimo y sencillo para modifiacr
modelos 3D, basado en algoritmos de construccion para diagramas de Voronoi,
mediante el uso del Software Libre MeshLab.
1.3 Objetivo
Esta investigacion busca contribuir al mejoramiento de disenos tridimensionales y
ası optimizar el uso de material para la impresion 3D. Esto a traves del uso de
CADs que:
1. Permitan un manejo sencillo del modelo a Voronizar.
2. Consideren la aplicacion de los algoritmos mas eficientes.
3. Sean aplicables a cualquier tipo de modelos o disenos.
Introduccion 3
1.4 Estructura de la Tesis
En el primer capıtulo se puede observar una vision general de la importancia
historica del diagrama de Voronoi y de la triangulacion de Delaunay, ambas es-
tructuras estudiadas dentro de la Geometrıa Computacional. Se hace enfasis en
las aplicaciones que han tenido a lo largo de la historia, principalmente en el area
de la salud y ciencias sociales.
En el segundo capıtulo se ofrece un panorama teorico preliminar, mediante la
introduccion de los conceptos basicos de la teorıa de grafos, necesarios para la
comprension del concepto de diagrama de Voronoi y triangulacion de Delaunay.
En el tercer capıtulo pueden hallarse los conceptos basicos de diagrama de Voronoi
y triangulacion de Delaunay, ası como algunas de sus principales propiedades,
algoritmos de construccion y la complejidad durante su implementacion.
En el cuarto capıtulo se brinda un marco general de la optimizacion basada en
diagramas de Voronoi utilizando sus centroides como puntos generadores, a la vez
que se muestran algunos algoritmos clasicos.
En el quinto capıtulo se muestra un metodo para la voronizacion de modelos
tridimensionales mediante el uso del Software Libre MeshLab, dicho metodo es
una serie de pasos sencillos a traves de los cuales es redisenado cualquier modelo
3D.
Finalmente, en el capıtulo seis se presentan los resultados de aplicar el metodo en
una pieza escaneada tridimensionalmente en el Laboratorio de Sistemas Dinamicos
Controlables, ası como las conclusiones de la investigacion y adicionalmente una
discusion de los desafıos futuros relacionados con la reconstruccion 3D, basada en
diagramas de Voronoi.
Introduccion 4
1.5 Estado del Arte
Hay muchas formas de dividir el mundo. Las mas habituales son las reales, o
las que, al menos, asumimos como tales: las que el curso de la historia ha ido
marcando en forma de fronteras. Son asumidas por el conjunto de personas, paıses
y organizaciones que habitamos el planeta; hasta que un conflicto pone a esas
fronteras en disputa, tal es el caso reciente de Ucrania y Rusia y sus intereses
cruzados en Crimea o en el este del paıs, en febrero-marzo de 2014.
Pero hay formas mucho mas perfectas de dividir el mundo, formas matematicas.
Una de ellas ha sido explorada por el especialista en visualizacion de datos Jason
Davies, radicado en Londres. El ha aplicado la matematica al reparto polıtico del
territorio, mediante diagramas de Voronoi. Ası, divide el planeta en regiones que
orbitan sobre el punto en el que esta la capital o ciudad mas cercana (ver Figura
1.1) [2].
Entonces, segun el mapa de Davies, Campeche, Yucatan y Quintana Roo quedarıan
bajo la influencia de Belice, Chiapas de Guatemala y varios estados de la Union
Americana volverıan a formar parte del territorio mexicano.
Los Diagramas de Voronoi se utilizan en todos aquellos estudios en los que hay
que determinar areas de influencia, como por ejemplo, en la cobertura hospitalaria,
cercanıa de estaciones de bomberos o del metro, centros comerciales, control del
trafico aereo o telefonıa movil. Aunque el campo de aplicacion es mas basto de lo
que puede imaginarse, por ejemplo, en palabras de Jose Ramon Gomez:
Las aplicaciones en el area de astronomıa, mediante la particion
basada en el analisis de metodos del modelo de puntos para la inves-
tigacion de la estructura espacial de varias poblaciones estelares, o en
el area medica podemos hallar la reconstruccion tridimensional com-
putarizada y analisis cuantitativo de neuronas y de haces dendrıticos
en la corteza cerebral [3].
Introduccion 5
Figura 1.1: El mundo dividido en areas de Voronoi, en funcion de las capitales.
1.5.1 Historia
Los diagramas de Voronoi son estructuras geometricas que aparecen con frecuen-
cia en la naturaleza, por esta razon se han redescubierto varias veces a lo largo de
la historia: reciben el nombre del matematico ruso Georgy Voronoi, tambien son
conocidos como Polıgonos de Thiessen (por el meteorologo estadounidense Alfred
Introduccion 6
Thiessen), Teselacion1 de Dirichlet (en honor al matematico aleman Peter Gustav
Lejeune Dirchlet), Celdas de Wigner-Seitz (por el fısico matematico hungaro Eu-
gene Wigner y el fısico estadounidense Frederick Seitz) o Zonas de Brillouin (por
el fısico frances Leon Nicolas Brillouin).
Cronologıa
• 1664: Descartes afirma que el sistema solar se compone de vortices. Sus
ilustraciones muestran una descomposicion del espacio en regiones convexas,
cada una compuesta de la materia que gira alrededor de una de las estrellas
fijas (ver Figura 1.2) [4].
• 1850: Dirichlet formaliza el estudio de formas cuadraticas definidas positivas
(forma especial de un Diagrama de Voronoi) en R2 y R3 [5].
• 1854: Analisis de John Snow (padre de la epidemiologıa moderna) del brote
de colera que azoto Londres ese ano, mediante el uso del metodo geografico
(ver Figura 1.3 ) [6].
• 1908: Voronoi formaliza el estudio de formas cuadraticas definidas positivas
en Rn.
• 1909: Boldyrev (Anatoly Kapitonovich) estima las reservas de minerales
en un deposito usando la informacion obtenida de taladros, las regiones de
Voronoi son denominadas areas de polıgonos de influencia.
• 1911: Thiessen calcula y analiza datos meteorologicos en las estaciones plu-
viometricas.
• 1927: Paul Niggli desarrolla la teorıa en Cristalografıa [7].
• 1929: Boris Delone (Delaunay) es el primero en acunar el termino Dominio
de Dirichlet y Region de Voronoi.
1El termino teselado hace referencia a una regularidad o patron de figuras que recubren opavimentan completamente una superficie plana que cumple con dos requisitos: que no quedenhuecos y que no se superpongan las figuras.
Introduccion 7
Figura 1.2: El concepto de Universo por Descartes.
• 1929: Whitney acuna el termino Polıgono de Thiessen.
• 1933: Wigner y Seitz describen las regiones de Voronoi para los puntos
dispuestos en una retıcula en el espacio tridimensional [8].
• 1949: Bogue, estudios de mercado.
• 1958: Frank y Kasper, estructuras del atomo [9].
• 1965: Brown estima la intensidad de poblacion de los arboles en un bosque,
definiendo una region de Voronoi para un arbol individual, llamandola el
area potencialmente disponible (APA) de un arbol [10].
• 1985: Hoofd et al. Definio las regiones de Voronoi con respecto a los centros
de los capilares en secciones de tejido [11].
Introduccion 8
Figura 1.3: Analisis del brote de colera en Londres por John Snow, 1854.
• 1987: Icke y van de Weygaert, particion del espacio por medio de un proceso
de mosaico de Voronoi [12].
1.5.2 Aplicaciones Historicas
A pesar de que gran parte del desarrollo y muchas de las aplicaciones iniciales
ocurrieron en el campo de las Ciencias Naturales, segun Okabe et al. [8], la primera
aplicacion conocida del concepto de Diagrama de Voronoi aparece en un mapa
incluido en el Reporte sobre el brote de Colera de St. James, Westminster, durante
el otono de 1854. Este mapa muestra una lınea discontinua, descrita como Frontera
con igual distancia entre la Bomba de la Calle Broad y otras Bombas, la cual
encierra un area alrededor de la Bomba de la Calle Broad (ver Figura 1.3). Aunque
no hay alguna atribucion asociada a este mapa, es mas probable que esta obra de
John Snow, donde se muestra la distribucion de muertes alrededor de la Bomba
de la Calle Broad en 1854, se haya convertido en el mapa mas famoso de alguna
enfermedad del siglo XIX que se reproduce en gran variedad de textos, tanto en
epidemiologıa como en cartografıa. Hay que notar que la distancia en el mapa
no es medida en terminos de Distancia Euclidiana, sino en terminos de distancia
Introduccion 9
a lo largo de la red de calles de Westminster, logrando una red de Diagrama de
area-Voronoi, este concepto aparecerıa ciento cincuenta anos despues [13].
Otra aplicacion aparece en el area de Ciencias Sociales, en el trabajo del ger-
manista Carl Hagg, que utilizo los Diagramas de Voronoi como un medio para
visualizar la variacion dialectal y ası mismo la identificacion de Isoglosas (barreras
linguısticas). En su estudio de dialectos al sureste de Alemania (1898) el definio
el equivalente a un Diagrama de Voronoi de un conjunto de localidades en las
que se habıan recogido datos de su dialecto. Posteriormente pinto los bordes de
Voronoi compartidos por dos localidades si diferıan en terminos de caracterısticas
de dialecto, ası, bordes muy remarcados indicaban la presencia de Isoglosas (ver
Figura 1.4) [14].
Ademas de estos trabajos, solo se han venido desarrollando otras aplicaciones en
las Ciencias Sociales durante los ultimos cincuenta anos, uno de los primero fue
el desarrollado por Donald Bogue en 1949, quien uso los polıgonos de Voronoi
definidos alrededor de centros metropolitanos en Estados Unidos (representados
como puntos en el mapa) como sustitutos de sus areas de mercado (ver Figura 1.5)
[15]. Apoyado por otros estudios, como los de Snyder (1962) y Dacey (1965) esta
ha seguido siendo la principal area de aplicacion con el trabajo que se extiende
hasta niveles de tiendas minoristas. Aunque tambien geografos, antropologos y ar-
queologos han usado el concepto para modelar otros tipos de sistemas territoriales
humanos. Otros antecedentes relacionados se encuentran en la economıa espacial,
con la Ley de las Areas de Mercado, la cual considera la forma de la frontera en-
tre las areas de mercado de dos centros que compiten en diversas condiciones de
precios de mercado y costos de transporte. Argumentos similares pueden hallarse
definiendo varios tipos de Diagramas de Voronoi Ponderados (balanceados) [16].
Las aplicaciones empıricas permanecieron limitadas debido a la falta de un medio
sencillo y eficaz de construccion de Diagramas de Voronoi, dependiendo de metodos
que implicaban el uso de regla y compas, ası como lleno de ambiguedades. Aunque
se trataron de mostrar metodos alternativos para su creacion, tal es el caso de
Richard Kopec (1963), quien propuso un metodo alternativo para la construccion
Introduccion 10
Figura 1.4: Geografıa de los dialectos de Suabia.
de polıgonos de Thiessen [17]. Esto provoco la busqueda de soluciones desde el area
en desarrollo de la informatica y en los 70′s ya se habıan desarrollado una serie de
algoritmos para construir Diagramas de Voronoi en dos y tres dimensiones, que a
su vez motivo otros desarrollos en Ciencias de la Computacion que contribuyeron
al campo de la naciente Geometrıa Computacional. Este esfuerzo se ve unificado
por la obra pionera de Michael Shamos y Dan Hoey (1975) Closest-point Problems
(Problemas de punto mas cercano), donde no solo presentan un algoritmo para
la construccion del Diagrama de Voronoi, sino que tambien muestran la forma
en la que este se podrıa utilizar para resolver lo que entonces eran una serie de
problemas relativos a un conjunto finito de puntos distintos en el espacio euclıdeo,
como hallar el arbol de expansion mınimo, identificar el vecino mas cercano de cada
punto y encontrar el cırculo mas grande que contiene a los puntos de un conjunto,
cuyo centro esta en el interior de la envolvente convexa de ese conjunto de puntos
(ver Figura 1.6). Tambien propusieron formas de generalizar los Diagramas de
Voronoi, considerando las regiones de Voronoi asociadas con subconjuntos de k
puntos de todo el conjunto de puntos en lugar de puntos individuales [18]. Como
consecuencia de esta y otras iniciativas de aquella epoca, el concepto basico se ha
extendido en los ultimos anos en una gran variedad de formas.
Su concepto dual, la Teselacion de Delaunay tambien tiene una historia marcada
por redescubrimientos, aunque no tan frecuentes como el caso de los Diagramas
de Voronoi. La idea se origino con Voronoi en 1908, que la define por medio de
Introduccion 11
Figura 1.5: Estudio de areas de mercado por Bogue. Copyright: Universidadde Florida.
relaciones entre vecinos, refiriendose a la estructura resultante como lensamble de
simplexes. Sin embargo, fue Delone quien definio la Teselacion (mosaico) usando
el metodo de la esfera vacıa [19]. Una de las propiedades de la Teselacion de
Delaunay en dos dimensiones es que los triangulos individuales son tan equilateros
como sea posible.
Introduccion 12
Figura 1.6: Cırculo mas grande que contiene a los puntos de un conjunto,Shamos y Hoey.
Capıtulo 2
Preliminares
2.1 Conceptos basicos de la teorıa de grafos
La teorıa de grafos es una disciplina antigua con muchas aplicaciones modernas.
Las ideas basicas fueron introducidas por el matematico suizo Leonhard Euler en
el siglo XVIII. Euler utilizo los grafos para resolver el famoso problema de los
puentes de Konigsberg [20].
Los grafos son estructuras discretas que constan de vertices y de aristas que
conectan entre sı a los vertices.
Definicion 2.1 (Grafo). Un grafo G es un par G = (V,E), donde V es un
conjunto finito (vertices, nodos) y E es un multiconjunto de pares no ordenados
de vertices, denotados por x, y, que se denominan aristas (lados).
Definicion 2.2 (Subgrafo). SeaG = (V,E) un grafo, si H = (W,F ) es un grafo
tal que W ⊆ V y F ⊆ E decimos que H es un subgrafo de G.
En este caso decimos que x y y son extremos de x, y. Denotamos V (G) por
el conjunto de vertices del grafo G y por E(G) el conjunto de lados del grafo G.
Ademas υ(G) y ε(G) denotan el numero de vertices y el numero de aristas de G
respectivamente. Puesto que E es un multiconjunto es posible que existan pares
repetidos y se dice que G tiene lados multiples. Tambien es posible que algun par
13
Capıtulo 2. Preliminares 14
no ordenado de E tenga el mismo vertice repetido, en este caso decimos que el
lado es un bucle (loop). Cuando existen lados multiples y/o lazos decimos que G
es un multigrafo. Si no hay lados multiples ni lazos decimos que es un grafo simple.
Un digrafo G es un par G = (V,E) donde V es un conjunto de vertices y E es
un multiconjunto de pares ordenados. Los lados se denotan por pares ordenados,
(u, v) denota el lado dirigido que tiene como vertice inicial a u y como vertice
terminal a v.
A continuacion se presentan unas definiciones, extraıdas del libro Matematicas
discretas y sus aplicaciones, de Rosen [21].
Definicion 2.3 (Grafo Simple). Un grafo simple G = (V,E) consta de V , un
conjunto no vacıo de vertices, y de E, un conjunto de pares no ordenados de
elementos distintos de V , a esos pares se les llama aristas o lados (Figura 2.1).
En algunos casos lo grafos simples no bastan para modelar ciertas situaciones en
las cuales se requiere de la existencia de multiples aristas entre par de vertices.
En este caso no es suficiente definir las aristas como par de vertices; en su lugar
se utilizan los multigrafos, que constan de vertices y de aristas no dirigidas entre
ellos, pero admiten la existencia de aristas multiples entre pares de vertices.
Definicion 2.4 (Multigrafo). Un multigrafo G(V,E) consta de un conjunto V de
vertices, un conjunto E de aristas y una funcion f de E en u, v|u, v ∈ V, u 6= v.
Se dice que las aristas e1, e2 son aristas multiples o paralelas si f(e1) = f(e2)
(Figura 2.2).
Los multigrafos definidos no admiten bucles o lazos (aristas que conectan un vertice
consigo mismo). Usamos en este caso, pseudografos que son mas generales que los
multigrafos.
Figura 2.1: Grafo simple.
Capıtulo 2. Preliminares 15
Figura 2.2: Multigrafo.
Definicion 2.5 (Pseudografo). Un pseudografo G = (V,E) consta de un con-
junto V de vertices, un conjunto E de aristas y una funcion f de E en u, v|u, v ∈
V, u 6= v. Se dice que una arista e es un bucle o lazo si f(e) = u, u = u para
algun u ∈ V (Figura 2.3).
La diferencia entre grafo y digrafo es que el ultimo tiene los lados dirigidos y se
entiende como un grafo dirigido.
Definicion 2.6 (Digrafo). Un grafo dirigido o digrafo G = (V,E) consta de un
conjunto V de vertices y un conjunto E de aristas que son pares ordenados de
elementos de V (Figura 2.4).
Cuando no se consideran las direcciones de las aristas en G, el grafo que se obtiene
se llama grafo subyacente de G.
Finalmente, pueden existir multigrafos que pueden tener aristas dirigidas multiples
desde un vertice a un segundo vertice (que, ocasionalmente, puede coincidir con
el primero).
Definicion 2.7 (Multigrafo dirigido). Un multigrafo dirigido G(V,E) consta
de un conjunto V de vertices, un conjunto E de aristas y una funcion f de E en
u, v|u, v ∈ V, u 6= v. Se dice que las aristas e1, e2 son aristas multiples o
paralelas si f(e1) = f(e2) (ver Figura 2.5).
Figura 2.3: Pseudografo.
Capıtulo 2. Preliminares 16
Figura 2.4: Grafo dirigido (digrafo).
Se resume la terminologıa que se emplea para los diferentes tipos de grafos en la
Tabla 2.1.
2.2 Adyacencia de vertices, incidencia de aristas
y grado de vertices
Veamos en primer lugar la terminologıa que describe los vertices y las aristas de
los grafos no dirigidos.
Definicion 2.8. Dos vertices u, v de un grafo no dirigido G = (V,E) son adya-
centes (vecinos) en G si u, v es una arista de G. Si e = u, v, se dice que la
arista e es incidente con los vertices u y v (la arista e conecta u y v). Los vertices
u y v son extremos de la arista e.
Para saber cuantas aristas son incidentes con un vertice, se introduce la siguiente
definicion.
Definicion 2.9. El grado de un vertice de un grafo no dirigido es el numero de
aristas incidentes con el (exceptuando los bucles). El grado de un vertice u se
denota σ(u).
Figura 2.5: Multigrafo dirigido.
Capıtulo 2. Preliminares 17
Tipos Aristas ¿Admite aristas multiples? ¿Admiten bucles?
Grafo simple No dirigidas No NoMultigrafo No dirigidas Sı No
Pseudografo No dirigidas Sı SıGrafo dirigido Dirigidas No Sı
Multigrafo Dirigidas Sı Sı
Tabla 2.1: Terminologıa en teorıa de grafos.
Los vertices de grado uno son vertices aislados, puede verse que un vertice aislado
no es adyacente a ningun otro vertice. Se dice que un vertice es colgante (hoja) si
y solo si tiene grado uno, entonces una hoja es adyacente a un solo vertice distinto
de ella.
Cuando se suman los grados de todos los vertices de un grafo G cada arista con-
tribuye con dos unidades a la suma, ya que cada una de ellas es incidente con dos
vertices.
Teorema 2.1 (Teorema del apreton de manos). Sea G = (V,E) un grafo no
dirigido con e aristas. Entonces,
2e =∑v∈V
σ(V ) (2.1)
Es decir, la suma de los grados de los vertices es el doble que el numero de aristas
(notar que esto es cierto incluso cuando existen aristas multiples y bucles en el
grafo). Tambien se sigue que la suma de los grados de los vertices de un grafo no
dirigido es un numero par.
Teorema 2.2. Todo grafo no dirigido tiene un numero par de vertices de grado
impar.
La terminologıa para grafos dirigidos evidencia que a las aristas de un grafo dirigido
se les asigna una direccion o sentido.
Definicion 2.10. Si u, v es una arista del grafo dirigido G = (V,E); se dice
que u, conocido como vertice inicial es adyacente a v, vertice final o terminal, o
Capıtulo 2. Preliminares 18
tambien que v es adyacente desde u. En un bucle el vertice inicial siempre coincide
con el final.
Como las aristas de un grafo dirigido son pares ordenados, se puede mejorar la
definicion de grado de un vertice, con el fin de reflejar el numero de aristas que
tienen a ese vertice como inicial o final.
Definicion 2.11. En un grafo dirigido, el grado de entrada de un vertice v, de-
notado por σ−(v), es el numero de aristas que tienen a v como vertice final. El
grado de salida de un vertice v, denotado por σ+(v), es el numero de aristas que
tienen a v como vertice inicial. Un bucle contribuye en una unidad tanto al grado
de entrada como al grado de salida del vertice correspondiente.
Teorema 2.3. Sea G = (V,E) un grafo dirigido. Entonces,
∑v∈V
σ−(v) +∑v∈V
σ+(v) = |E| (2.2)
Los teoremas anteriores han sido demostrados por Rosen en [21].
2.3 Representaciones de los grafos
Sea G = (V,E) un grafo con υ(G) vertices y ε(G) aristas, entonces, le corresponde
una matriz υ × ε denominada matriz de incidencia de G. Denotamos los vertices
de G por v1, . . . , vυ y las aristas por e1, . . . , eε. Entonces la matriz de incidencia
de G es la matriz M(G) = [mij] (ver Figura 2.6), donde mij es el numero de veces
que la arista ej incide en el vertice vi, dada por
mij =
1 si ej es incidente con vi
0 en caso contrario.(2.3)
Otra matriz asociada a G es la matriz de adyacencia, la cual es una matriz υ × υ
A(G) = [aij] (ver Figura 2.6), donde aij es el numero de aristas que van de vi
hasta vj, dada por
Capıtulo 2. Preliminares 19
Figura 2.6: Matriz de incidencia y de adyacencia de G.
mij =
1 si vi, vj es arista de G
0 en caso contrario.(2.4)
La matriz de adyacencia de un grafo depende del orden elegido para los vertices.
Por lo tanto hay υ! para un grafo de υ vertices, puesto que hay υ! ordenaciones
distintas de los υ vertices.
2.4 Isomorfismo de grafos
A menudo se requiere conocer si es posible representar dos grafos de la misma
forma. Por ejemplo, en Quımica, se utilizan los grafos para representar com-
puestos. Diferentes compuestos pueden tener la misma formula molecular, pero
distinta estructura.
Definicion 2.12 (Isomorfismo de grafos). Los grafos simples G1 = (V1, E) y
G2 = (V2, E) son isomorfos si existe una funcion biyectiva f de V1 en V2 con la
propiedad de que, para cada par de vertices u, v ∈ V1, u y v son adyacentes en
G1 si y solo si f(u) y f(v) son adyacentes en G2. Se dice que la funcion f es un
isomorfismo (Figura 2.7).
Es decir, cuando dos grafos simples son isomorfos, hay una relacion biyectiva entre
los vertices de los grafos que preserva la relacin de adyacencia.
Con frecuencia es difıcil determinar si dos grafos simples son isomorfos, puesto
que existen υ! posibles biyecciones entre los conjuntos de vertices de dos grafos
Capıtulo 2. Preliminares 20
Figura 2.7: Grafos simples isomorfos.
simples de υ vertices. No obstante, se puede demostrar que dos grafos no son
isomorfos si no comparten alguna propiedad que dos grafos isomorfos deberıan
tener en comun. A tales propiedades se les llama invariantes bajo isomorfismo de
grafos simples, por ejemplo, dos grafos isomorfos deberıan tener el mismo numero
de vertices (puesto que hay una biyeccion entre los conjuntos de vertices de los
grafos), ası mismo dos grafos isomorfos deberıan tener el mismo numero de aristas
(ya que la biyeccion entre los vertices establece una biyeccion entre las aristas).
Ademas, los grados de los vertices de dos grafos simples isomorfos deben coincidir.
Los mejores algoritmos conocidos para determinar si dos grafos son o no isomorfos
tienen complejidad exponencial, aunque se conocen algoritmos de complejidad
polinomica en el caso promedio que resuelven el problema. El mejor algoritmo en
la practica, conocido como NAUTY, puede usarse para determinar, en menos de
un segundo, si dos grafos con menos de cien vertices son isomorfos [22].
2.5 Caminos y ciclos
Hay muchos problemas que se pueden representar por medio de caminos que se
forman al ir recorriendo las aristas de un grafo. Por ejemplo, el problema de
determinar si se puede enviar un mensaje entre dos ordenadores usando enlaces
intermedios puede estudiarse utilizando un modelo de grafos. En algunos textos,
por ejemplo Brualdi [23], se distingue entre cadenas (chains) y caminos (paths),
Capıtulo 2. Preliminares 21
usando el primer termino para grafos y el segundo para digrafos. Aquı usaremos
el concepto de camino.
Definicion 2.13. Sea n un entero no negativo y sea G un grafo no dirigido. Un
camino de longitud n de u a v en G es una secuencia de n aristas e1, . . . , en de G
tal que f(e1) = v0, v1, . . . , f(en) = vn−1, vn, donde v0 = u y vn = v. Si el grafo
es simple, se denota este camino por su secuencia de vertices v0, . . . , vn. El camino
es un circuito si comienza y termina en el mismo vertice, es decir, si u = v y tiene
longitud mayor que cero. Se dice que el camino o circuito pasa por los vertices
v1, . . . , vn−1, o tambien, que recorre las aristas e1, . . . , en. Un camino o circuito es
simple si no contiene la misma arista mas de una vez.
Definicion 2.14. Un camino de u a v en el grafo dirigido G es una sucesion de
aristas v0, v1, . . . , vn−1, vn de G, con n entero no negativo, v0 = u y vn = v.
Este camino se denota como v0, . . . , vn y tiene longitud n. El camino vacıo, sin
alguna arista, se considera como un camino de u a u. Un camino de longitud
n ≥ 1, que comienza y termina en el mismo vertice, se llama circuito.
Definicion 2.15. Sea n un entero no negativo y sea G un multigrafo dirigido. Un
camino de longitud n de u a v en G es una secuencia de n aristas e1, . . . , en de G
tal que f(e1) = v0, v1, . . . , f(en) = vn−1, vn, donde v0 = u y vn = v. Si no hay
aristas multiples en el grafo dirigido, denotamos este camino por su secuencia de
vertices v0, . . . , vn. Un camino de longitud mayor que cero que comienza y termina
en el mismo vertice es un circuito. Se dice que un camino o circuito es simple si
no contiene la misma arista mas de una vez.
En las tres definiciones notamos que el vertice final de una arista de un camino es
el vertice inicial de la siguiente arista del camino.
Definicion 2.16 (Longitud). La longitud de un camino es el numero de lados
que hay en el.
Definicion 2.17 (Distancia). La distancia, conocida como geodesica, entre dos
vertices distintos, es igual a la longitud de la cadena mas corta entre ellos; si no
hay camino entre ellos la distancia no esta definida y la distancia es cero si los
vertices son iguales.
Capıtulo 2. Preliminares 22
Definicion 2.18 (Diametro). El diametro de un grafo es el maximo de las dis-
tancias entre cualquier par de vertices. Un camino α = (v0, . . . , vn) es cerrado si
v0 = vn.
En el grafo simple que se muestra en la Figura 2.8, a, d, c, f, e es un camino simple
de longitud 4, ya que a, d, d, c, c, f y f, e son aristas. Sin embargo, d, e, c, a
no lo es, ya que e, c no es una arista. Notar que b, c, f, e, b es un circuito de
longitud 4, ya que b, c, c, f, f, e y e, b son aristas, ademas este camino
comienza y termina en b. El camino a, b, e, d, a, b, que tiene longitud 5, no es
simple, ya que contiene dos veces la arista a, b.
2.6 Conexidad
Un grafo G es conexo si existe un camino entre cualquier par de vertices. Veremos
primero la conexidad en grafos no dirigidos.
Definicion 2.19. Un grafo no dirigido G es conexo si hay un camino entre cada
par de vertices distintos de G.
El grafo G1 de la Figura 2.9 es conexo, ya que para cada para de vertices distintos
hay un camino entre ellos. Sin embargo, el grafo G2 no lo es, por ejemplo, no hay
algun camino entre a y d.
Figura 2.8: Caminos en un grafo simple.
Capıtulo 2. Preliminares 23
Figura 2.9: El grafo G1 es conexo y el grafo G2 no lo es.
Un grafo que no es conexo es la union de dos o mas subgrafos conexos que dos a
dos no tienen ningun vertice comun. A estos subgrafos conexos disjuntos se les
llama componentes conexas del grafo (ver Figura 2.10)
Hay dos ideas de conexion en grafos dirigidos, depende si se considera o no la
direccion de las aristas.
Definicion 2.20. Se dice que un grafo dirigido G es fuertemente conexo si hay
un camino de u a v y un camino de v a u para cualesquiera dos vertices u, v de G.
Para que un grafo dirigido sea fuertemente conexo tiene que haber una secuencia
de aristas dirigidas desde cualquier vertice del grafo a cualquier otro vertice. Un
grafo dirigido puede no ser fuertemente conexo, pero estar formado de una sola
pieza.
Definicion 2.21. Se dice que un grafo dirigido G es debilmente conexo si hay un
camino entre cada dos vertices del grafo dirigido subyacente a G.
Es decir, un grafo no dirigido es debilmente conexo si y solo si hay siempre un
camino entre dos vertices cuando se ignoran las direcciones de las aristas. Notar
que cualquier grafo dirigido fuertemente conexo tambien es debilmente conexo.
El grafo dirigido G de la Figura 2.11 es fuertemente conexo porque hay un camino
entre cualesquiera dos vertices (por lo que es debilmente conexo). Mientras, el
grafo dirigido H no es fuertemente conexo, ya que no hay algun camino de a a
Capıtulo 2. Preliminares 24
Figura 2.10: El grafo H y sus componentes conexas H1, H2 y H3.
b; no obstante es debilmente conexo, puesto que hay un camino entre cada dos
vertices en el grafo dirigido subyacente a H.
A aquellos subgrafos de un grafo dirigido G que son fuertemente conexos, pero
que no estan contenidos en algun subgrafo fuertemente conexo mayor, se les llama
componentes fuertemente conexas o componentes fuertes de G.
2.7 Grafos planos
Decimos que un grafo G es plano si se puede dibujar en el plano sin que los lados
se crucen fuera de sus extremos.
Definicion 2.22 (Grafo plano). Se dice que un grafo G es plano (o planar)
si puede dibujarse en el plano de manera que ningun par de sus aristas se corte
(por corte de aristas entendemos la interseccion de las lıneas que representan a las
aristas en un punto distinto de sus extremos). Al dibujo final se le conoce como
representacion plana del grafo.
Figura 2.11: El grafo G es fuertemente conexo, el grafo H es debilmenteconexo.
Capıtulo 2. Preliminares 25
En la Figura 2.12, el grafo H es plano, dado que se puede hallar una representacion
sin cortes en sus aristas.
Un grafo puede ser plano aunque regularmente se dibuje con cortes de aristas, ya
que se puede dibujar de manera diferente sin algun corte.
2.8 Formula de Euler
Una representacion plana de un grafo divide el plano en regiones, incluyendo una
region no acotada. Por ejemplo, la representacion plana del grafo G que se muestra
en la Figura 2.13 divide el plano en seis regiones, que estan etiquetadas. Euler
demostro [24] que todas las representaciones planas de un mismo grafo dividen al
plano en igual numero de regiones. Para lo cual hallo una relacion entre el numero
de regiones, el numero de vertices y el numero de aristas de un grafo plano. A
continuacion se presenta este resultado.
Teorema 2.4 (Formula de Euler). Sea G un grafo simple conexo con e aristas
y v vertices. Sea r el numero de regiones de una representacion plana de G.
Entonces,
r = e− v + 2 (2.5)
Por ejemplo, supongamos que un grafo simple conexo tiene 20 vertices, cada uno
de los cuales tiene grado 3. Veamos en cuantas regiones divide al plano una
representacion plana de ese grafo.
Figura 2.12: (a) El Grafo H, con dos cortes de aristas. (b) El grafo H, sincortes de aristas.
Capıtulo 2. Preliminares 26
Figura 2.13: Regiones de la representacion plana del grafo G.
El grafo tiene 20 vertices, cada uno de grado 3, es decir, v = 20. Como la suma
de los grados de los vertices, 3v = 3 · 20 = 60, es igual al doble 2e del numero
de aristas, se tiene que 2e = 60, o que e = 30. Por tanto, el numero de regiones,
segun la formula de Euler, es r = e− v + 2 = 30− 20 + 2 = 12.
Colorario 2.1. Sea G un grafo simple y conexo con e aristas y v ≥ 3 vertices.
Entonces,
e ≤ 3v − 6 (2.6)
Colorario 2.2. Sea G un grafo simple y conexo. Entonces G tiene un vertice de
grado menor o igual que cinco.
Colorario 2.3. Sea G un grafo simple y conexo con e aristas y v ≥ 3 vertices y
que no tiene circuitos de longitud 3. Entonces,
e ≤ 2v − 4 (2.7)
Los corolarios han sido demostrados en [25].
A continuacion demostraremos, usando el Corolario 2.1 y el Corolario 2.3, dos
resultados que seran de utilidad mas adelante. El grafo K5 mostrado en la Figura
2.14(a) no es plano, ası como el grafo K3,3 presentado en la Figura 2.14(b).
Primero, para comprobar que K5 no es plano, notemos que tiene 5 vertices y 10
aristas. La desigualdad 2.6 no se cumple para K5 ya que e = 10 y 3v−6 = 15−6 =
9. Por lo tanto, K5 no es plano.
Capıtulo 2. Preliminares 27
Figura 2.14: (a) Grafo K5. (b) Grafo K3,3.
Segundo, para comprobar que K3,3 no es plano, notar que es conexo y no contiene
circuitos de longitud 3 (puesto que es bipartito), entonces se puede utilizar el
Corolario 2.3. El grafo K3,3 tiene 6 vertices y 9 aristas. Como e = 9 y 2v − 4 =
12− 4 = 8, no cumple la desigualdad 2.7, por lo que K3,3 no es plano.
2.9 Teorema de Kuratowski
Determinar cuando un grafo es plano no siempre es tan inmediato porque, por
ejemplo, puede contener muchos vertices y aristas. Lo que asegura el teorema de
Kuratowski, establecido por el matematico polaco Kazimierz Kuratowski en 1930
[26], es que los grafos planos son aquellos que no contienen ni al grafo K3,3 ni
al grafo K5 (ver Figura 2.14), los cuales no son planos. Es decir, caracteriza los
grafos utilizando el concepto de homeomorfismo de grafos.
Si un grafo es plano, tambien lo sera cualquier grafo que se obtenga de el eliminando
una arista u, v y anadiendo un vertice w junto con las aristas u,w y w, v.
Se dice que esta operacion es una subdivision elemental. Tambien que los grafos
G1 = (V1, E1) y G2 = (V2, E2) son homeomorfos si se pueden obtener a partir de
un mismo grafo por medio de una secuencia de subdivisiones elementales.
Teorema 2.5 (Teorema de Kuratowski). Un grafo es plano si y solo si no
contiene ningun subgrafo homeomorfo a K5 o a K3,3.
West realiza una prueba a este teorema en [26].
Capıtulo 2. Preliminares 28
2.10 Grafos duales
Hasta ahora se sabe que todo grafo plano G divide al plano en regiones acotadas
y una que no lo es. Las clausuras de las regiones acotadas se llaman caras de G.
La Figura 2.15 muestra un grafo plano G con 6 caras f1, . . . , f6.
Definicion 2.23 (Grado de una cara). El grado de una cara f es el numero de
aristas que hay en el borde (en las que la cara incide) de f , denotada como σ(f).
Si una arista aparece dos veces en el borde (se pasa dos veces por encima de
la arista cuando se dibuja el borde), contribuye al grado con dos unidades. Por
ejemplo, en la Figura 2.15 σ(f5) = 6.
Dado un grafo plano G, se puede construir otro grafo llamado dual de G de la
siguiente manera.
Definicion 2.24. Dado un grafo plano G, se puede generar otro grafo G* como
sigue: sea un vertice f* de G* correspondiendo a cada cara f de G y sea e* una
arista de G* correspondiendo a cada arista e de G; dos vertices f* y g* estan
unidos por la arista e* en G* si y solo si sus correspondientes caras f y g estan
separadas por la arista e en G. Se dice que G* es el grafo dual de G (Figura 2.16).
Se debe observar que dos grafos planos isomorfos pueden tener duales no isomorfos,
la nocion de dualidad solo tiene significado para grafos planos. A partir de la
Definicion 2.24 se siguen, de manera trivial, las siguientes propiedades:
Propiedad 2.1. El conjunto de vertices de G* es el conjunto de caras de G.
Propiedad 2.2. El conjunto de aristas de G* coincide con el conjunto de aristas
de G.
Figura 2.15: Ejemplo de caras de un grafo G.
Capıtulo 2. Preliminares 29
Figura 2.16: Grafo G y su dual G*.
Capıtulo 3
Diagramas de Voronoi
3.1 Conceptos Basicos
En esta seccion denotaremos como P al conjunto de n ≥ 2 puntos p1, . . . , pn en el
plano Euclidiano, etiquetados mediante las coordenadas (x11, x12), . . . , (xn1, xn2) o
vectores de posicion x1, . . . , xn. Los n puntos son distintos en el sentido de que
xi 6= xj para i 6= j, i, j ∈ In = 1, . . . , n.
Definicion 3.1 (Distancia euclidiana). Sea p un punto arbitrario en el plano
Euclidiano con coordenadas (x1, x2) o un vector de posicion x. Entonces, la dis-
tancia Euclidiana entre p y pi esta dada por
d(p, pi) = ‖x− xi‖ =√
(x1 − xi1)2 + (x2 − xi2)2 (3.1)
Si pi es el punto mas cercano a p o uno de los mas cercanos, se tiene la relacion
‖x− xi‖ ≤ ‖x− xj‖ para i 6= j, i, j ∈ In. En este caso, se dice que p esta asignado
a pi.
Nota: Se considerara a partir de ahora que se trabaja en el espacio Euclidiano
con la metrica Euclidiana.
Definicion 3.2 (Diagrama de Voronoi ordinario planar). Sea el conjunto
P = p1, . . . , pn ⊂ R2, con 2 < n <∞ y xi 6= xj para i 6= j, i, j ∈ In. Llamamos
30
Capıtulo 3. Diagramas de Voronoi 31
la region dada por
V (pi) = x|‖x− xi‖ ≤ ‖x− xj‖, i 6= j, i, j ∈ In (3.2)
como el Polıgono de Voronoi Ordinario Planar asociado a pi (o el Polıgono de
Voronoi de pi) y al conjunto dado por
V = V (p1), . . . , V (pn) (3.3)
el Diagrama de Voronoi Ordinario Planar generado por P (o el Diagrama de
Voronoi de P ). Llamamos a pi de V (pi) como el Punto Generador o Generador
del i−esimo Polıgono de Voronoi y al conjunto P = p1, . . . , pn ⊂ R2 como el
Conjunto Generador del Diagrama de Voronoi V .
En la Definicion 3.2 notamos que la relacion en la ecuacion 3.2 esta definida en
terminos de ≤ pero no de <. Un polıgono de Voronoi por lo tanto es un conjunto
cerrado. Alternativamente, podemos definir un polıgono de Voronoi como
V o(pi) = x|‖x− xi‖ < ‖x− xj‖, i 6= j, i, j ∈ In (3.4)
el cual es un conjunto abierto. Ambas definiciones se aceptan, pero en este estudio
definiremos un polıgono de Voronoi como un conjunto cerrado.
Definicion 3.3 (Arista). Puesto que un polıgono de Voronoi es un conjunto
cerrado, contiene a su frontera, que sera denotada como ∂V (pi). Esta puede
consistir en segmentos de recta, semirrectas o rectas infinitas, las cuales llamamos
Aristas de Voronoi. Denotamos una arista de Voronoi como ei.
Notar que un diagrama de Voronoi a veces es definido por la union de aristas de
Voronoi, es decir,⋃ni=1 ∂V (pi) en lugar del conjunto V (p1), . . . , V (pn). Puesto
que la union de aristas de Voronoi puede ser considerada como una red (malla), a
veces es llamada Red de Voronoi.
Capıtulo 3. Diagramas de Voronoi 32
Al percatarnos que = es incluido en la relacion de la ecuacion 3.2, podemos definir,
alternativamente, una arista de Voronoi como un segmento de recta, semirrecta, o
recta infinita compartida por dos polıgonos de Voronoi con sus puntos extremos.
Matematicamente, si V (pi)⋂V (pj) 6= ∅, el conjunto V (pi)
⋂V (pj) genera una
arista de Voronoi (que puede degenerar en un punto). Usamos e(pi, pj) para deno-
tar la interseccion V (pi)⋂V (pj), la arista de Voronoi generado por pi y pj. Notar
que e(pi, pj) puede ser vacıo. Si e(pi, pj) no es vacıo ni un punto, decimos que los
polıgonos de Voronoi V (pi) y V (pj) son contiguos o adyacentes.
Definicion 3.4 (Vertice de Voronoi). Un punto extremo de una arista de
Voronoi se conoce como Vertice de Voronoi. Tambien un vertice de Voronoi puede
definirse como un punto compartido por tres o mas polıgonos de Voronoi. Deno-
tamos un vertice de Voronoi como qi.
Cuando existe al menos un vertice de Voronoi en el que cuatro o mas aristas de
Voronoi se encuentran en el diagrama de Voronoi V (los cırculos sin rellenar en la
Figura 3.1(a)), decimos que V es degenerado; de otra manera decimos que V es no
degenerado.
En algunos resultados, un diagrama de Voronoi degenerado necesita tratamien-
tos especiales prolongados que no siempre son indispensables. Para evitar esta
dificultad, a menudo se hace la siguiente hipotesis.
Hipotesis 3.1 (No degeneracion). Cada vertice de Voronoi en un diagrama de
Voronoi tiene exactamente tres aristas de Voronoi.
En la Definicion 3.2 definimos un diagrama de Voronoi en un plano abierto. En
aplicaciones practicas, frecuentemente se trata con una region acotada S donde se
encuentran los puntos generadores (las lıneas mas gruesas en la Figura 3.2). En
este caso, consideramos el conjunto V∩S, dado por
V∩S = V (p1) ∩ S, . . . , V (pn) ∩ S (3.5)
Lo llamamos Diagrama de Voronoi Acotado o el Diagrama de Voronoi Acotado
por S. Si un polıgono de Voronoi V (pi) comparte la frontera de S, llamamos a la
Capıtulo 3. Diagramas de Voronoi 33
Figura 3.1: (a) Diagrama de Voronoi degenerado. (b) Diagrama de Voronoino degenerado.
region V (pi) ∩ S frontera del polıgono de Voronoi o region (el termino region se
usa cuando ∂S es curva o cuando V (pi) ∩ S es no conexa [27]). En la practica,
generalmente se tratan diagramas de Voronoi acotados bien definidos, como en la
Figura 3.2(b), cuya frontera del polıgono de Voronoi tiene forma de estrella (star-
shaped polygon1). Una region de frontera de Voronoi inconexa se muestra en la
Figura 3.2(a) (zona sombreada) y la frontera del polıgono de Voronoi sin forma de
estrella (non-star-shaped polygon) con respecto a su generador (lınea punteada).
Como puede observarse en la Figura 3.2, el diagrama de Voronoi ordinario se
compone de polıgonos. Recordando que un polıgono esta definido en terminos
de semiplanos, se puede presentar una definicion alternativa de un diagrama de
Voronoi, en terminos de semiplanos. Para ello primero debemos considerar la recta
perpendicular que biseca al segmento pipj que une dos puntos generadores pi y pj
(Figura 3.3). Llamamos a esta lınea la bisectriz entre pi y pj y se denota como
b(pi, pj). Como un punto en la bisectriz b(pi, pj) es equidistante de los puntos
generadores pi y pj, entonces podemos escribirla como
b(pi, pj) = x|‖x− xi‖ = ‖x− xj‖, i 6= j (3.6)
La bisectriz divide el plano en dos semiplanos y genera
1Star-shaped polygon: Un polıgono que contiene un punto desde el cual toda la frontera delpolıgono es visible.
Capıtulo 3. Diagramas de Voronoi 34
Figura 3.2: Diagramas de Voronoi Acotados.
H(pi, pj) = x|‖x− xi‖ ≤ ‖x− xj‖, i 6= j (3.7)
Llamamos a H(pi, pj) como region dominio de pi sobre pj. En la Figura 3.3
se indican las regiones dominio de p1 sobre p2, p3 y p4 por las regiones rayadas
horizontal, diagonal y vertical, respectivamente. Notar que en la region de dominio
H(pi, pj) la distancia al punto generador pi es menor o igual que la distancia
al punto generador pj. Por lo tanto, la distancia de cualquier punto p en la
interseccion de la Figura 3.3 al punto generador p1 es menor o igual que la distancia
de p al punto generador pi, i = 2, 3, 4. Esta relacion es equivalente a la ecuacion
3.2 y ası la interseccion H(p1, p2)⋂H(p1, p3)
⋂H(p1, p4) genera el polıgono de
Voronoi asociado a p1. De este ejemplo, se entiende que la siguiente definicion es
alternativa a la Definicion 3.2.
Definicion 3.5 (Diagrama de Voronoi ordinario planar definido con semi-
planos). Sea P = p1, . . . , pn ⊂ R2, donde 2 ≤ n < ∞ y xi 6= xj para
i 6= j, i, j ∈ In. Llamamos a la region
V (pi) =⋂
j∈Ini
H(pi, pj) (3.8)
como el Polıgono de Voronoi Ordinario asociado a pi y al conjunto V(P ) =
V (p1), . . . , V (pn) como el Diagrama de Voronoi Ordinario Planar generado por
P .
Capıtulo 3. Diagramas de Voronoi 35
Figura 3.3: Un polıgono de Voronoi obtenido a partir de semiplanos.
La equivalencia de la Definicion 3.5 y la Definicion 3.2 es evidente, debido a que
‖x − xi‖ ≤ ‖x − xj‖ si y solo si x ∈ H(pi, pj), para i 6= j. Se puede extender la
definicion anterior al espacio Euclidiano n−dimensional.
Definicion 3.6 (Diagrama de Voronoi ordinario en Rn). Sea un conjunto
P = p1, . . . , pn ⊂ Rn, donde 2 ≤ n < ∞ y xi 6= xj para i 6= j, i, j ∈ In.
Llamamos a la region
V (pi) = x|‖x− xi‖ ≤ ‖x− xj‖, i 6= j, i, j ∈ In (3.9)
=⋂
j∈Ini
H(pi, pj) (3.10)
como el Poliedro de Voronoi ordinario m−dimensional asociado a pi y al conjunto
V(P ) = V (p1), . . . , V (pn) se le conoce como el Diagrama de Voronoi Ordinario
m−dimensional generado por P , donde H(pi, pj) es dado por la ecuacion 3.7 para
pi, pj ∈ Rn.
Cuando se sobreentienda que se trabaja en Rn, simplemente podemos llamar a
V(P ) como Diagrama de Voronoi ordinario o solo Diagrama de Voronoi y a los
poliedros (polıgonos) de Voronoi seran denominados como Celdas de Voronoi.
Para el diagrama de Voronoi de tres dimensiones, las fronteras de un poliedro
de Voronoi consisten en caras, por lo que son llamadas caras de Voronoi. Las
fronteras de una cara de Voronoi consisten en segmentos de recta, semirrectas
o rectas infinitas (aristas o bordes de Voronoi). Las fronteras de una arista de
Capıtulo 3. Diagramas de Voronoi 36
Voronoi consisten en puntos, los cuales llamamos vertices de Voronoi. La Figura
3.4 muestra una vista estereografica de un diagrama de Voronoi de tres dimensiones
obtenido con el Software Libre Voro++.
En Astronomıa, los poliedros de Voronoi son conocidos como Espumas de Voronoi
(Icke y van de Weygaert [12]). En redes neurales tipo el ganador se lleva todo
(winner-take-all), el poliedro de Voronoi V (pi) es llamado campo receptivo de una
unidad neuronal i, siendo xi el vector de fuerza (peso) sinaptico de su unidad
neuronal [28].
Formalmente, llamamos a las fronteras de un poliedro de Voronoi n−dimensional
caras de Voronoi (n−1)−dimensionales, a las fronteras de un poliedro de Voronoi
(n−1)−dimensional caras de Voronoi (n−2)−dimensionales, etc.; a las fronteras
de una cara de Voronoi de 3−dimensional caras de Voronoi 2−dimensionales o
simplemente caras de Voronoi, a las fronteras de una cara de Voronoi 2−dimensional
caras de Voronoi de 1−dimensionales o aristas de Voronoi, a las fronteras de una
cara de Voronoi 1−dimensional caras de Voronoi 0−dimensionales o vertices de
Voronoi.
Cuando n = 1, el diagrama de Voronoi 1−dimensional, o diagrama de Voronoi
en lınea (Figura 3.5), en este caso un poliedro de Voronoi 1−dimensional es una
semirrecta o segmento de recta llamada recta de Voronoi y los vertices de Voronoi
son los puntos extremos de las rectas de Voronoi. Podemos notar que el punto
frontera entre dos rectas de Voronoi adyacentes es el punto medio de los puntos
generadores de aquellas rectas de Voronoi; el numero de rectas de Voronoi no
delimitadas siempre es dos; el numero de rectas de Voronoi adyacentes a una recta
de Voronoi es uno o dos.
En las definiciones anteriores, el espacio es representado como un plano continuo.
Sin embargo, esta representacion no puede ser aceptada en algunos contextos,
por ejemplo en el analisis de imagenes de datos tipo raster 2. En un analisis de
2En su forma mas simple, un raster consta de una matriz de celdas (o pıxeles) organizadasen filas y columnas (o una cuadrıcula) en la que cada celda contiene un valor que representainformacion, como la temperatura. Los rasteres son fotografıas aereas digitales, imagenes desatelite, imagenes digitales o incluso mapas escaneados [30].
Capıtulo 3. Diagramas de Voronoi 37
Figura 3.4: Vista estereografica de un diagrama de Voronoi de puntos aleato-rios en un cubo.
este tipo, el espacio esta representado por un conjunto de celdas cuadradas que
forman una cuadrıcula con un patron de enrejado y una figura geometrica se
representa en funcion de estas celdas. Veamos, sea cij = (x, y)|i ≤ x ≤ i+ 1, j ≤
y ≤ j + 1, i, j = . . . ,−n, . . . ,−1, 0, 1, . . . , n, . . . Para un conjunto de puntos que
representa una figura geometrica, G, definimos Im(G) = cij|cij ∩ G 6= ∅, la
imagen de G. En terminos de Im(G), se da la siguiente definicion.
Definicion 3.7 (Diagrama de Voronoi digitalizado planar). Sea el diagrama
de Voronoi V = V (p1), . . . , V (pn) descrito en las Definiciones 3.2, 3.5 y 3.6. Lla-
mamos al conjunto Im(V) = Im(V (p1)), . . . , Im(V (pn)) el diagrama de Voronoi
digitalizado (ordinario planar) de V , a Im(V (pi)) la region de Voronoi digitalizada
y a Im(∂V (pi)) la frontera de la region de Voronoi digitalizada Im(V (pi)).
Se muestra un ejemplo en la Figura 3.6. Dehne expone un metodo computacional
para el diagrama de Voronoi digitalizado ordinario planar, tambien presenta un
metodo computacional para el diagrama de Voronoi digitalizado generado por un
conjunto de objetos con funciones de distancia convexas [29].
Definicion 3.8 (Diagrama de Voronoi digital planar). Sea C = cij, i =
1, . . . , nh, j = 1, . . . , nv y sea Pc = pc1, . . . , pcn un subconjunto de C, donde
2 ≤ n ≤ nvnh < ∞, con pci 6= pcj, para i 6= j, i, j ∈ In y d(cij, pck) denota la
Capıtulo 3. Diagramas de Voronoi 38
Figura 3.5: Diagrama de Voronoi en lınea.
distancia Euclidiana entre el centro de cij y el de pck. Llamamos a la region
V (pci) =ckl|d(ckl, pci) < d(ckl, pcj), i 6= j,
d(ckl, pci) = d(ckl, pcj) < d(ckl, pcm),
para i < j 6= m, k ∈ Inh, l ∈ Inv
(3.11)
el polıgono digital de Voronoi asociado a pci y a V (Pc) = V (pc1), . . . , V (pcn) el
diagrama de Voronoi digital generado por Pc. Notar que la segunda condicion en
la ecuacion 3.11 nos dice que si una celda ckl se encuentra a la misma distancia
de la celda generadora pci y de otra pcj, asignamos, por conveniencia, la celda ckl
a la generadora con el ındice mas pequeno, es decir, a pci, donde i < j (no ambos
como en el diagrama de Voronoi ordinario). Toriwaki y Yokoi [31] y Watanabe
y Murashima [32] nombran al diagrama de Voronoi digital como Diagrama de
Voronoi discreto.
Recordando la Definicion 3.2 notamos que V (pi) esta escrito de forma alterna en
terminos de una funcion fi(x) = ‖x− xi‖ como
V (pi) = x|fi(x) = minj∈Infj(x). (3.12)
Geometricamente, z = fi(x) muestra el cono centrado en xi en el espacio tridi-
mensional (x1, x2, z) y puesto que z = fmin(x) = minj∈Infj(x) muestra la
envolvente inferior de los n conos, z = f1(x), . . . , z = fn(x). Esta envolvente
forma una superficie, a la que llamamos superficie de Voronoi de V (ver Figura
3.7).
Capıtulo 3. Diagramas de Voronoi 39
Figura 3.6: Diagrama de Voronoi digitalizado ordinario planar.
Alternativamente, podemos reemplazar fi(x) = ‖x − xi‖ por fi(x) = ‖x − xi‖2 y
obtener otra superficie z = fmin(x). Esta superficie es diferenciable, excepto en
puntos de las fronteras⋃ni=1 ∂V (pi). Siersma examina la topologıa diferencial de
esta superficie a traves de la teorıa de Morse [33].
3.1.1 Propiedades de un diagrama de Voronoi
Propiedad 3.1. Un diagrama de Voronoi es un conjunto de celdas cuyas caras
son polıgonos convexos (posiblemente no acotados).
Propiedad 3.2. Cada punto en una arista de Voronoi es equidistante de sus dos
vecinos mas cercanos pi y pj. Por lo tanto, existe un cırculo centrado en ese punto
tal que pi y pj se encuentran en este cırculo y ningun otro sitio (punto) esta en el
interior de el.
Propiedad 3.3 (Cırculo maximo vacıo). Un vertice de Voronoi (el sitio com-
partido por tres o mas celdas de Voronoi, por ejemplo V (pi), V (pj) y V (pk) es
equidistante de los sitios pi, pj y pk. Por lo tanto, es el centro del cırculo que pasa
por ellos y, adems, no contiene otros sitios en su interior (Figura 3.8).
Propiedad 3.4. Una celda de Voronoi es no limitada si y solo si el sitio corre-
spondiente se encuentra en la cubierta convexa. Observar que un sitio esta en la
cubierta convexa si y solo si es el punto mas cercano de algun punto en el infinito,
ası, dado un diagrama de Voronoi, es facil extraer la cubierta convexa en tiempo
lineal [34].
Capıtulo 3. Diagramas de Voronoi 40
Figura 3.7: Superficie de Voronoi.
Propiedad 3.5. Si se tienen n sitios, se desprende de la formula de Euler, Teorema
2.4, que el numero de vertices de Voronoi es como maximo 2n− 5 y el numero de
aristas es a lo mas 3n− 6 (de Berg et al. realiza una demostracion en [35]).
3.2 Definiciones de la Triangulacion (Teselacion)
de Delaunay
De la misma manera que un grafo planar (plano) tiene su grafo dual, un diagrama
de Voronoi tiene su teselacion (mosaico) dual, llamada Triangulacion de Delaunay
(teselacion o mosaico de Delaunay). En esta seccion se brindaran los conceptos
basicos de lo que es una triangulacion de Delaunay.
Definicion 3.9 (Triangulacion). Sea P = p1, . . . , pn un conjunto de puntos en
el plano. Definiremos una subdivision maximal en el plano como una subdivision
S, tal que ningun lado conectado a dos vertices pueda ser anadido a S sin perder
su estado plano, es decir, ningun lado de S intersecta con otro lado existente (ver
Figura 3.9). Ası, una triangulacion T es una subdivision maximal planar cuyo
conjunto de vertices es P . Se puede ver de manera sencilla que esta subdivision
esta formada por triangulos [35].
Analogamente se define una triangulacion de una nube de puntos del plano como
una particion del cierre convexo en triangulos. La estructura resultante es una
familia maximal de triangulos de interiores disjuntos cuyos vertices son puntos de
la nube y en cuyo interior no hay algun punto de la nube.
Capıtulo 3. Diagramas de Voronoi 41
Figura 3.8: Cırculo maximo vacıo centrado en v1.
Se considera un diagrama de Voronoi en el plano Euclidiano y se asume que los
puntos generadores del diagrama de Voronoi no estan sobre la misma recta, como
se muestra en la Figura 3.10(a). Esta suposicion se adoptara de ahora en adelante,
nos referiremos a ella como:
Hipotesis 3.2 (Posicion general o hipotesis de no colinealidad). Para un
conjunto de puntos P = p1, . . . , pn dado, los puntos en P no se encuentran en
la misma recta.
Adicionalmente a la hipotesis, asumimos que el numero de puntos es tres o mas,
pero finito. Puede verse facilmente que la suposicion anterior implica que n ≥ 3 ya
que dos puntos siempre estan sobre la misma recta. Notar que sin esta suposicion es
imposible obtener la triangulacion y que se puede obtener un diagrama de Voronoi
aunque n = 2 o cuando los puntos generadores sean colineales (rectas punteadas
en la Figura 3.10(a)). Si los sitios no estan en posicion general, en el sentido de
que cuatro o mas sean cocirculares (ver Figura 3.10(b), entonces la triangulacion
de Delaunay puede no ser una triangulacion, sino solo un grafo planar.
Bajo la hipotesis de no colinealidad y suponiendo 3 ≤ n <∞, mostraremos como
obtener una triangulacion de Delaunay a partir de un diagrama de Voronoi.
El grafo dual del diagrama de Voronoi, denotado por G, posee un nodo por cada
celda de Voronoi y tiene un arco entre dos nodos si las celdas correspondientes
comparten una arista. Notar que G posee un arco por cada arista de V(P ). Como
Capıtulo 3. Diagramas de Voronoi 42
Figura 3.9: Diferentes tipos de triangulaciones a partir de una misma nubede puntos.
se puede observar en la Figura 3.11, existe una correspondencia uno a uno entre
las caras acotadas de G y los vertices de V(P ).
Definicion 3.10 (Grafo de Delaunay). Consideremos las lıneas rectas con-
tenidas en G, donde el nodo correspondiente a la celda V (pi) es el punto pi y el
arco conectando los nodos de V (pi) y V (pj) es el segmento pipj (ver Figura 3.12).
Llamamos a esto el grafo de Delaunay de P y lo denotamos como DG(P ).
El grafo de Delaunay de P es una vinculacion del grafo dual del diagrama de
Voronoi, tiene una cara para cada vertice de V(P ), las aristas alrededor de una cara
corresponden a las aristas de Voronoi, encontrandose con los vertices de Voronoi
correspondientes. En particular, si un vertice v de V(P ) es un vertice de las celdas
de Voronoi para los puntos p1, . . . , pn, entonces, la cara correspondiente f (del
ingles face) en DG(P ) tiene a p1, . . . , pn como vertices. En este caso, los puntos
descansan en un cırculo alrededor de v, entonces f es un n−gono y es convexo (ver
Figura 3.2.5). Si un conjunto de puntos se encuentra en posicion general (Hipotesis
3.2), entonces no contiene cuatro o mas puntos en un cırculo; si P se encuentra en
posicion general entonces todos los vertices del diagrama de Voronoi son de grado
tres y consecuentemente todas las caras acotadas de DG(P ) son triangulos.
De acuerdo con lo anterior, se puede definir una Triangulacion de Delaunay como
cualquier triangulacion que se obtiene mediante la adicion de aristas al grafo de
Delaunay. Dado que todas las caras de DG(P ) son convexas, obtener dicha tri-
angulacion es facil. Observar que la triangulacion de Delaunay de P es unica si y
Capıtulo 3. Diagramas de Voronoi 43
Figura 3.10: (a) Puntos generadores colineales. (b) Puntos generadores co-circulares.
solo si DG(P ) es una triangulacion, el cual es el caso si P se encuentra en posicion
general.
Definicion 3.11 (Triangulacion de Delaunay). Una triangulacion T de un
conjunto de puntos P = p1, . . . , pn es considerada una Triangulacion de Delaunay
si se cumple alguna de las siguientes condiciones.
• La triangulacion de los n puntos cumple que, para cada arista, existe un
cırculo que pasa por los puntos extremos de la arista, de modo que los otros
puntos en P son exteriores a dicho cırculo.
• La triangulacion de los n puntos cumple que, para cada triangulo Ti, el
interior del cırculo definido por los vertices de Ti no contiene puntos en P
[36].
Una triangulacion de Delaunay maximiza el angulo mınimo de todos los triangulos
que la componen [37].
Recordando que el diagrama de Voronoi de un conjunto de sitios en el plano es una
subdivision planar, el dual de dicha subdivision es otra subdivision que se define
de la siguiente manera:
1. Para cada cara del diagrama de Voronoi, se crea un vertice (correspondiente
al punto).
Capıtulo 3. Diagramas de Voronoi 44
Figura 3.11: El grafo de Delaunay G de un diagrama de Voronoi V(P )
2. Para cada arista del diagrama de Voronoi que cae entre dos sitios pi y pj, se
crea una arista en el dual conectando estos dos vertices.
3. Finalmente, cada vertice del diagrama de Voronoi corresponde a una cara
del dual.
4. El grafo dual resultante es una subdivision planar, una triangulacion de los
puntos.
3.2.1 Propiedades de la triangulacion de Delaunay
Propiedad 3.6 (Cubierta convexa). La frontera de la cara exterior del grafo
de Delaunay es la frontera de la cubierta convexa del conjunto de puntos.
Propiedad 3.7 (Circunferencia circunscrita). La circunferencia circunscrita
de cualquier triangulo en DG(P ) no contiene ningun punto (sitio) de P .
La propiedad anterior se debe a que el centro de ese cırculo es el vertice de Voronoi
correspondiente y de acuerdo a como se define un diagrama de Voronoi, los tres
sitios que conforman este vertice son sus vecinos mas cercanos.
Propiedad 3.8 (Cırculo vacıo). Dos puntos (sitios) pi y pj estan conectados por
una arista en la triangulacion de Delaunay si y solo si hay un cırculo vacıo que
pasa por pi y pj.
Capıtulo 3. Diagramas de Voronoi 45
Figura 3.12: El grafo dual DG(P ).
Si dos sitios pi y pj son vecinos en la triangulacion de Delaunay, entonces sus celdas
son vecinas en el diagrama de Voronoi y por lo tanto para cualquier punto en la
arista de Voronoi entre estos sitios, un sitio centrado en este punto pasando por pi
y pj no puede contener cualquier otro punto. Por lo tanto, las celdas de Voronoi
de dos sitios estan adyacentes en el diagrama de Voronoi, implicando que su arista
este en la triangulacion de Delaunay.
Propiedad 3.9 (Par mas cercano). Los pares mas cercanos de puntos (sitios)
en P son vecinos en la triangulacion de Delaunay.
Suponiendo que pi y pj son los sitios mas cercanos, el cırculo que los contiene
no puede contener a algun otro (tal sitio estarıa mas cerca de alguno de esos dos
puntos, contradiciendo la hipotesis de que esos puntos son el par mas cercano).
Por lo tanto el centro de este cırculo esta en la arista de Voronoi entre estos dos
puntos y de esta manera este es un cırculo vacıo.
Observacion : Dado un conjunto P con n puntos donde hay h de ellos en la
cubierta convexa, no es difıcil demostrar por la formula de Euler, Teorema 2.4,
que la triangulacion de Delaunay tiene 2n− 2− h triangulos y 3n− 3− h aristas.
Por ejemplo, en la Figura 3.14, se observa que n = 8 y h = 6, por lo que el
numero total de triangulos es 2(8) − 2 − 6 = 8 y el numero total de aristas es
3(8)− 3− 6 = 15.
Capıtulo 3. Diagramas de Voronoi 46
Figura 3.13: Cara f en DG(P ), n−gono convexo.
La posibilidad de determinar el numero de triangulos y aristas solo funciona en
el plano. En R3 el numero de tetraedros en la triangulacion de Delaunay puede
variar de O(n) hasta O(n2). En Rn el numero de sımplices3 puede variar hasta
O(nd2 ) [38].
3.3 Construccion
Existen diferentes tipos de algoritmos para la construccion de diagramas de Voronoi,
basados en la tecnica de divide y venceras descrita por Shamos y Hoey [18], la
tecnica lınea de barrido (sweep-line) descrita por Fortune [39], o transformaciones
geometricas, descritas por Brown [40], Edelsbrunner y Seidel [41].
Una aproximacion unitaria para los diagramas de Voronoi fue descrita por Klein
[42]. El no usa el concepto de distancia como nocion basica, sino mas bien el
concepto de curvas bisectrices, es decir, el asume para cada par pi, pj de sitios
la existencia de una curva bisectriz J(pi, pj) que divide el plano en una pi−region
y una pj−region. La interseccion de todas las pi−regiones para diferentes pj’s es
entonces la region de Voronoi del sitio p. El tambien postulo que las regiones de
Voronoi estan conectadas simplemente (simples conexas) y particionan el plano.
3Simplex: generalizacion d−dimensional de un triangulo.
Capıtulo 3. Diagramas de Voronoi 47
Figura 3.14: Numero de triangulos y aristas.
La complejidad computacional estudia la eficiencia de los algoritmos estableciendo
su efectividad de acuerdo al tiempo de corrida y al espacio requerido en la com-
putadora o almacenamiento de datos, ayudando a evaluar la viabilidad de la im-
plementacion practica en tiempo y costo.
Definicion 3.12. Un algoritmo es un procedimiento computacional bien definido,
el cual considera un valor o conjunto de valores como valores de entrada y a traves
de una secuencia de instrucciones organizadas produce un valor o conjunto de
valores de salida, en un tiempo determinado, con la finalidad de dar solucion a un
problema especıfico.
Las principales caracterısticas de un algoritmo son:
• Preciso y bien definido.
• Datos de entrada (Require).
• Datos de salida (Ensure).
• Generalidad.
• Finito.
Al analizar un algoritmo se considera el tiempo de corrida y consiste en el numero
de operaciones elementales que ejecuta en cada paso. Dicho analisis se concentra
Capıtulo 3. Diagramas de Voronoi 48
generalmente en encontrar el peor caso de tiempo de corrida, es decir, el mayor
tiempo que tardaraa en obtener los valores de salida.
Definicion 3.13 (Analisis asintotico). El analisis asintotico permite conocer
la eficiencia de un algoritmo con base en el tiempo de corrida cuando el tamano
de los datos de entrada es suficientemente grande, de tal forma que las constantes
y los terminos de menor orden no afectan.
Para expresar la tasa de crecimiento de una funcion se toma en cuenta al termino
dominante con respecto a n y se ignoran las constantes. Por ejemplo, la tasa de
crecimiento de k1n log n ∼ n log n, o la tasa de crecimiento de k1n2+k2n+k3 ∼ n2.
Las notaciones para el tiempo de corrida asintotico de un algoritmo se definen
en terminos de funciones cuyo dominio es el conjunto de numeros naturales. La
Notacion O representa una cota asintotica superior, se usa para acotar el peor
caso del tiempo de corrida de un algoritmo. La Notacion Ω representa una cota
asintotica inferior, se utiliza para acotar el mejor caso del tiempo de corrida de un
algoritmo.
Historicamente se conocieron algoritmos para construir diagramas de Voronoi que
corrıan en tiempo O(n2) basados en construcciones elementales, tambien existe
un algoritmo trivial que corre en tiempo O(n2 log n), el cual opera construyendo
V (pi) mediante la interseccion de n − 1 semiplanos H(pi, pj), para 1 ≤ j ≤ n,
i 6= j.
Sin embargo, existen algoritmos mas eficientes que corren en tiempo O(n log n),
los mas conocidos seran descritos a continuacion.
Capıtulo 3. Diagramas de Voronoi 49
3.4 Principales algoritmos de construccion del
diagrama de Voronoi
3.4.1 Interseccion de semiplanos
Recordando la Definicion 3.5, un polıgono de Voronoi ordinario asociado a pi,
V (pi) =⋂
j∈Ini
H(pi, pj)
esta sugiere un metodo para la construccion inmediata de un diagrama de Voronoi,
de hecho, sugiere que cualquier celda de Voronoi se da al conjunto de puntos en
comun entre los semiplanos H(pi, pj), con i 6= j. La estrategia nos sugiere una
construccion del diagrama celda por celda, o para cada punto se calcula la celda
correspondiente como la interseccion de semiplanos (ver Figura 3.15). Para llevar
a cabo esta interseccion se puede utilizar un algoritmo de la siguiente manera:
Algorithm 3.1 Intersecta Semiplano(H)
Require: Un conjunto de H semiplanosEnsure: La region poligonal convexa
C :=⋂H∈H
H
if card(H)=1 thenC ← el unico semiplano H ∈ H
elsedividir H en dos subconjuntos H1 y H2 de magnitud n
2cada uno
end ifC1 ← Intersecta Semiplano(H1)C2 ← Intersecta Semiplano(H2)return C ← Intersecta Regiones Convexas C1 y C2
3.4.2 Algoritmo incremental
La idea es generar celdas de forma incremental. En lugar de hallar la interseccion
de cada celda con respecto a todas las demas, se llevan a cabo los respectivos
Capıtulo 3. Diagramas de Voronoi 50
Figura 3.15: Interseccion de semiplanos.
calculos solo con aquellas que son afectadas por una nueva celula que se inserte.
En la tecnica de barrido de plano [43], esto puede verse como: una vez que se
define un ordenamiento de puntos en el plano, se toman uno a uno y se anaden
al diagrama (ver Figura 3.16). El diagrama final se construye punto por punto,
un primer algoritmo podrıa ser el siguiente, colocando los eventos en una cola
EventQueue4:
Algorithm 3.2 Voronoi Incremental
Require: Un conjunto de puntos P en el planoEnsure: Diagrama de Voronoi V(P )
Ordenar los puntos de P con base a la coordenada X y acomodarlos en una colaEventQueuewhile EventQueue no esta vacıo do
Recopilar el siguiente puntoif p = primer punto thenV(P ) = plano
elseDeterminar la celda en la que esta contenidoEncontrar el eje entre p y su celda contenedoraSi el eje influye en otra celda adyacente, encontrar el nuevo ejeContinuar hasta que sea necesarioActualizar el diagrama
end ifend whilereturn Diagrama obtenido
4Fila (cola) de eventos que estan esperando a ser procesados por un programa receptor.
Capıtulo 3. Diagramas de Voronoi 51
Figura 3.16: Algoritmo incremental.
3.4.3 Divide y venceras
La tecnica de divide y venceras consiste en partir un problema grande en problemas
pequenos, resolverlos recursivamente y finalmente la solucion general se obtendra
al ligar las soluciones de los subproblemas. Suponiendo que se tiene un problema
de tamano n, se aplican los siguientes pasos:
1. Se divide el problema en k subproblemas de tamano nk.
2. Se resuelven cada uno de los k subproblemas.
3. Se combinan las soluciones de los k subproblemas para obtener la solucion
general.
La idea del algoritmo consiste en dividir al conjunto P de puntos en el plano
en dos subconjuntos P1 y P2 mediante una lınea vertical L, de tal forma que
ambos conjuntos tengan casi el mismo numero de puntos. Supongamos que P1 se
encuentra a la izquierda de L y P2 a su derecha.
Supongamos, ademas, que se han construido recursivamente los respectivos dia-
gramas de Voronoi para P1 y para P2, denotados como V(P1) y V(P2). Se debe
crear un algoritmo para fundir (merge) V(P1) y V(P2) para obtener V(P ). Este
proceso es un poco complicado y no se abordara aquı, para una mejor referencia,
consultar [44].
Capıtulo 3. Diagramas de Voronoi 52
Denotaremos por σ el subgrafo de Voronoi de un conjunto P , tal que los lados
de σ estan determinados por parejas de puntos pi, pj tales que pi ∈ V(P1) y
pj ∈ V(P2); σ es el grafo frontera.
Primero se expondra un algoritmo para construir la cadena de frontera σ que
concatenara (encadenara) los diagramas de Voronoi V(P1) y V(P2). σ posee dos
lados que son semirrectas infinitas: uno en la parte alta, denotado por Lu y otro
en la parte baja, denotado por Ld. Para ello, primero se deben unir las envolventes
convexas5 de V(P1) y V(P2), mediante el uso de los algoritmos Puente Superior y
Puente inferior [45].
En la Figura 3.17 puede observarse como se aplica este algoritmo. A(P1, P2) es el
conjunto de aristas que divide a V (P ) en dos regiones: V (P1) y V (P2).
Algorithm 3.3 Concatenamiento
Require: Conjuntos de Voronoi V1, V2, de tamano n2
cada unoEnsure: La lınea de frontera que los divide
begin
Construir la envolvente convexa de V1 y V2
Construir los puentes de union entre ambas envolventes, usando los algo-ritmos Puente Superior y Puente inferior
Construir σ. Hallar las mediatrices Lu del puente superior y Ld del puenteinferior
Comenzar en un punto suficientemente alto de Lu y comenzar a bajar,disminuyendo la coordenada Y de los puntos
Continuar bajando, siguiendo la trayectoria de las mediatrices determi-nadas por los puntos a la derecha de la envolvente de V1 y los puntos a laizquierda de la envolvente de V2
Detenerse cuando se intersecte la semirrecta Ld
Eliminar aquellas partes de los vertices de Voronoi que intersectan a σ
Hacer V (P ) = V(S1)⋃V(S2)
⋃σ
end
5De acuerdo con O’Rourke, la envolvente convexa de un conjunto de puntos P es la inter-seccion de todos los semiplanos que contienen a P [47]
Capıtulo 3. Diagramas de Voronoi 53
Figura 3.17: Algoritmo divide y venceras.
A continuacion se aplica el algoritmo Divide y venceras propiamente dicho, el cual
se auxilia del algoritmo de las Medianas [46].
Algorithm 3.4 Divide y Venceras Voronoi
Require: Un conjunto P de n puntos en el planoEnsure: Diagrama de Voronoi de V(P )
begin
Usando el algoritmo de las Medianas, dividir el conjunto P en dos partesiguales, P1 y P2 mediante una lınea vertical
Recursivamente aplicar el algoritmo de Concatenamiento a P1 y P2
end
3.4.4 Algoritmo de Fortune
Este algoritmo tiene como principio barrer (sweeping) con una lınea horizontal l
(sweep line) el plano, desde arriba hacia abajo, la cual desciende sobre cada punto
que pasa. Fortune [39] hizo la observacion de que podıa calcularse el diagrama de
Voronoi mediante un barrido del plano construyendo una version distorsionada de
este, pero que es topologicamente equivalente.
Esta nueva version se basa en una transformacion que modifica la forma en que las
distancias son medidas en el plano. El diagrama resultante tiene la misma estruc-
tura topologica que el diagrama de Voronoi, pero sus aristas son arcos parabolicos,
en vez de segmentos de lınea recta.
Capıtulo 3. Diagramas de Voronoi 54
Una vez que este diagrama distorsionado es obtenido, puede ser corregido en
tiempoO(n) para producir el diagrama de Voronoi correcto dentro de un rectangulo
en una estructura DCEL6.
Algorithm 3.5 Fortune(P )
Require: P := p1, . . . , pn un conjunto de n puntos en el planoEnsure: Diagrama de Voronoi V(P ) dentro de un rectangulo en una estructuraDCELInicializar la cola de eventos EventQueue Q con todos los SiteEventswhile EventQueue Q no esta vacıo do
Considerar el evento con mayor coordenada Y de Qif el evento es un Site Event del punto pi then
Tratar Site Event(pi)else
Tratar Circle Event(pc), donde pc es el punto mas bajo del cırculo que causael evento
end ifEliminar el evento de Q
end whileLos nodos internos presentes todavıa en T (el arbol binario) pertenecen a losmedios-lados infinitos del diagrama de Voronoi. Calcular un rectangulo quecontenga todos los vertices del diagrama de Voronoi en su interior, uniendolelos medios-lados infinitos, modificando la estructura DCEL apropiadamente.return Diagrama obtenido
Los procedimientos Tratar Site Event(pi)7 y Tratar Circle Event(pc) han sido de-
scritos a detalle por M. Abellanas en [48], la implementacion del algoritmo se
ilustra en la Figura 3.18.
6De acuerdo con Abellanas, siglas inglesas de la lista de lados doblemente enlazados (DoublyConnected Edge List): vertices, caras y lados [48].
7Evento de Punto: cuando la lınea de barrido pasa justamente por encima de uno de lospuntos de la nube [48].
Capıtulo 3. Diagramas de Voronoi 55
Figura 3.18: Algoritmo de Fortune.
3.5 Principales algoritmos de construccion de la
triangulacion de Delaunay
3.5.1 Algoritmo Incremental
Consiste en comenzar con un triangulo inicial, el cual contiene a todos los pun-
tos de un conjunto P . A continuacion se inserta cada uno de los vertices en la
triangulacion. El siguiente algoritmo fue consultado en [49].
Algorithm 3.6 Delaunay Incremental
Require: Vertice v, triangulacion TEnsure: Triangulacion de Delaunay de P
Triangulo tp = locate(v, T )Triangulo[ ] Nuevos Triangulos = Split(tp, v)T .agregar Triangulos(Nuevos Triangulos)Cola Triangulos PendientesTriangulos Pendientes.push(nuevos Triangulos)while !Triangulos Pendientes.Cola Vacıa( ) do
Triangulo ti = Triangulos Pendientes.pop( )if !es Valido(ti, v) then
Triangulo[ ] a Verificar = Flip(ti, v)Triangulos Pendientes.push(a Verficar)
end ifend while
Capıtulo 3. Diagramas de Voronoi 56
Figura 3.19: Operacion Split sobre un triangulo y un punto en su interior.
El algoritmo parte buscando el triangulo tp que contiene al vertice a insertar v.
Una vez localizado, el procedimiento Split lo divide en tres triangulos resultantes
de agregar tres nuevas aristas, desde los vertices de tp a v (ver Figura 3.19).
Los triangulos resultantes deben ser verificados tal que cumplan con el test del
cırculo. Si la triangulacion T es de Delaunay, entonces solo habra que comprobar
que el vertice del triangulo adyacente al triangulo que se esta verificando (opuesto
a la arista por la que ambos son vecinos) no esta dentro del cırculo definido por
los vertices de dicho triangulo. La arista por la cual estos triangulos son vecinos
es la opuesta al vertice insertado v (ver Figura 3.20).
Si algun triangulo no cumple con la verificacion, se aplica la operacion Flip sobre
la arista opuesta al vertice v (ver Figura 3.21). Esta consiste en intercambiar la
arista opuesta a v en el triangulo por la arista v, c. Los nuevos triangulos que
resulten de dicha operacion deben ser anadidos a la cola de triangulos por verificar.
La insercion de v termina cuando la cola de triangulos por verificar esta vacıa.
3.5.2 Divide y venceras
Construye de manera recursiva la triangulacion de Delaunay de un conjunto de
puntos, construyendo primero la triangulacion de Delaunay de dos mitades del
conjunto; el algoritmo presentado fue descrito por Guibas y Stolfi [50].
Capıtulo 3. Diagramas de Voronoi 57
Figura 3.20: Verificacion del triangulo T1.
Para dividir el conjunto de puntos a triangular y generar instancias mas pequenas
del problema, se ordenan los puntos segun su primera coordenada. Una vez ordena-
dos los puntos, el conjunto es dividido en dos mitades segun la primera coordenada
de los puntos (digamos L y R, ver Figura 3.22). Con cada una de las mitades se
construye la triangulacion de Delaunay correspondiente a los puntos de esa mitad.
Primero se presenta el algoritmo general y en seguida el algoritmo de union de las
dos triangulaciones.
Algorithm 3.7 Divide Delaunay
Require: Un conjunto P de n puntos en el plano (int low, int high)Ensure: Triangulacion de Delaunay de PSize = high− low + 1if Size == 2 then
return addEdge(low, high)else if Size == 3 then
return addFace(low, high)end if
middle = low + Size/2ldi = middle− 1rdi = middle
divideAndConquerDelaunay(low, ldi)divideAndConquerDelaunay(rdi, high)
merge(low, ldi, rdi, high)
Queda resolver como realizar la union de dos triangulaciones que sean correspon-
dientes a las dos mitades de un conjunto de puntos (ver Figura 3.23).
Capıtulo 3. Diagramas de Voronoi 58
Figura 3.21: Operacion Flip con respecto al vertice v en el triangulo T1.
Algorithm 3.8 Procedimiento merge
Require: L y R (int ldo, int ldi, int rdi, int rdo)Ensure: Union de L y R
rBase = rdilBase = ldiwhile true do
if right(rBase, nextCCW (rBase), lBase) thenrBase = nextCCW (rBase)
else if left(lBase, nextCW (lBase), rBase) thenlBase = nextCW (lBase)
elsebreak
end ifend while
addEdge(rBase, lBase)
while true dolCand = getLeftCandidate(rBase, lBase)rCand = getRightCandidate(rBase, lBase)if !is Valid(lCand) && !is Valid(rCand) then
breakend ifif !is Valid(lCand) —— (!is Valid(rCand) && inCircle(lBase, rBase, lCand,rCand)) thenaddFace(lBase, rBase, rCand)rBase = rCand
elseaddFace(lBase, rBase, lCand)lBase = lCand
end ifend while
Capıtulo 3. Diagramas de Voronoi 59
Figura 3.22: Las mitades L, R y sus respectivos ındices.
El procedimiento de union comienza buscando la arista lBase, rBase, denotada
como L − R Base, desde la cual se iran anadiendo nuevos triangulos [50]. Para
encontrar la arista L − R Base, se recorre la mitad derecha, R, partiendo desde
rdi en sentido CCW y la mitad izquierda, L, partiendo desde ldi en sentido CW .
El test del cırculo vacıo considera los triangulos definidos por la arista L−R Base
y ambos candidatos. Se escoge el candidato que cumpla con el test (ver Figura
3.24).
La actualizacion de la L − R Base, luego de la primera iteracion se aprecia en la
Figura 3.25.
El siguiente algoritmo es utilizado para encontrar el vertice candidato en L (se
omite el algoritmo analogo para R, en donde cambia el sentido en el que se recorren
los posibles candidatos).
Algorithm 3.9 Borrar arista
Require: int rBase, int lBaseEnsure: Vertice candidato valido
lCand = nextNeighbourCCW(lBase)if is Valid(lCand) then
lNextCand = nextCandidateCCW(lCand)while inCircle(lBase, rBase, lCand, lNextCand) dodeleteEdge(lBase, lCand)lCand = lNextCandlNextCand = nextCandidateCCW(lNextCand)
end whilereturn lCand
end if
Capıtulo 3. Diagramas de Voronoi 60
Figura 3.23: La arista L−R Base para la union de L y R. Las flechas indicanel sentido en el que el algoritmo recorre cada mitad para determinar la arista
L−R Base.
El algoritmo verifica que el vertice candidato sea valido y que el cırculo definido
por el vertice candidato, lBase y rBase, no contenga al proximo candidato. Si la
segunda condicion no se cumple, entonces la arista que une lBase con el vertice
candidato es eliminada y el vertice candidato es descartado, ver Figura 3.26.
3.6 Complejidad computacional
3.6.1 Interseccion de semiplanos
La interseccion de semiplanos de dos polıgonos convexos se puede realizar en un
tiempo proporcional a (n) usando la tecnica de barrido de plano [43]. En el ejemplo
propuesto, C1 y C2 pueden no ser necesariamente regiones poligonales, de hecho
pueden ser no acotadas, pero tambien degenerar en una lınea recta o en un punto.
Sin embargo, esto no tiene algun efecto sobre el resultado. Entonces, tenemos:
T (n) = O(1) si n = 1
T (n) = O(n) + 2gT (n2) si n > 1
(3.13)
Resolviendo, tenemos que T (n) = O(ng log2 n) = O(nlog2n). Resultado que im-
plica un tiempo de calculo para el diagrama de Voronoi completo proporcional a
O(n2 log n).
Capıtulo 3. Diagramas de Voronoi 61
Figura 3.24: Vertices candidatos lCand y rCand, se escoge lCand ya quecumple el test del cırculo vacıo.
3.6.2 Algoritmo incremental
Este algoritmo tiene una complejidad en el caso promedio del tipo O(n log n).
3.6.3 Divide y venceras
Si el tiempo para resolver el problema de tamano s es T (s), hay que tener en cuenta
que el tiempo para resolver el problema de tamano 1 es constante: T (1) = b. Los
pasos (1) y (2) de la tecnica de divide y venceras se pueden ejecutar en tiempo cn,
c constante, cada subproblema de tamano nk
se resuelve en tiempo T (nk). Entonces
se tiene la siguiente relacion de recurrencia.
T (1) = b (3.14)
T (n) = kT (n
k) + cn (3.15)
Se puede hallar un estimado del tiempo total explıcitamente. En el peor caso,
dividimos por la mitad cada problema, obteniendo las siguientes ecuaciones.
Capıtulo 3. Diagramas de Voronoi 62
Figura 3.25: Actualizacion de la arista L−B Base.
T (n) = 2T(n
2
)+ cn (3.16)
T(n
2
)= 2T
(n4
)+ c
n
2(3.17)
...
T( n
2s
)= 2T
( n
2s−1
)+ c
n
2s(3.18)
T (1) = b (3.19)
Agrupando, obtenemos T (n) = 2s + cns = nb+ cn log n.
Por lo tanto,
T (n) = O(n log n) (3.20)
3.6.4 Algoritmo de Fortune
Operaciones primitivas, tales como la busqueda de un elemento en el arbol o
en la cola o la eliminacion de eventos que ya no se pueden ejecutar, pueden ser
realizadas en tiempo O(log n). En cada evento, realizamos un numero constante
de estas operaciones.
Capıtulo 3. Diagramas de Voronoi 63
Figura 3.26: El cırculo definido por lCand, lBase y rBase contiene alNextCand, por lo cual la arista que une lCand con lBase es eliminada.
El numero de eventos de punto (site events) es N , el de eventos de cırculo (circle
events) es a lo sumo 2N − 5. En cada uno realizamos c operaciones primitivas.
Por lo tanto, la complejidad final es O(n log n).
3.6.5 Algoritmo incremental, triangulacion de Delaunay
1. Tomar un punto de la nube aun no triangulada. Los puntos seran elegidos
en el mismo orden en que son introducidos por el usuario, por lo que para
una nube de n puntos esto demorarıa O(n).
2. Averiguar el triangulo o la arista sobre la que cae el punto introducido, por
lo que habra que recorrer toda la lista de triangulos existente. Esto supone
un tiempo de O(n log n).
3. Trazar una arista desde el punto a triangular a cada uno de los tres vertices
del triangulo que lo contiene. Trazar una arista requiere un tiempo de O(1),
para n puntos, requiere O(n).
4. Averiguar si las nuevas aristas son legales (comprobar la propiedad del cırculo
vacıo), por lo que el tiempo en realizar esta comprobacion para n puntos es
de O(n).
5. Si alguna de las nuevas aristas es ilegal hay que borrarla y crear una legal,
esta operacion se puede hacer en un tiempo constante O(1), por lo que el
tiempo en realizar esto para n puntos es de O(n).
Capıtulo 3. Diagramas de Voronoi 64
Por lo tanto T (n) = O(n) +O(n log n) +O(n) +O(n) +O(n)
Es decir, T (n) = O(n log n).
Capıtulo 4
Optimizacion basada en
diagramas de Voronoi
En los ultimos anos, ha ocurrido un impulso en la comunidad cientıfica informatica
para desarrollar metodologıas automatizadas para hallar la solucion de problemas
complejos. Un elemento clave para ello es la generacion de mallas (del ingles mesh,
ver Figura 4.1), que son optimas en el sentido relacionado de minimizar el costo de
resolver el problema complejo. La busqueda de metodologıas para la generacion
de mallas ha motivado numerosos estudios de algoritmos rapidos, automaticos y
optimos para la creacion de mallas de calidad [51].
Definicion 4.1 (Malla). Una malla es una estructura geometrica lineal incrus-
tada a trozos en Rn.
Definicion 4.2 (Malla triangular). Una malla triangular es un tipo de malla
poligonal que comprende un conjunto de triangulos que se conectan por sus lados
o vertices mas comunes y aproximan una superficie.
En esta seccion, estudiaremos las mallas triangulares en tres dimensiones y, a
menos que se indique lo contrario, nos referiremos a ellas solo como mallas. Aunque
el campo de aplicacion de la generacion automatica de mallas triangulares ha sido
tradicionalmente la obtencion de modelos digitales de elevaciones del terreno, hoy
65
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 66
Figura 4.1: La malla contiene una estructura combinatoria (no una sopa detriangulos).
en dıa son usadas en renderizacion1, animacion, realidad virtual y el analisis de
elementos finitos [52].
Las mallas se clasifican regularmente como estructuradas y no estructuradas [53].
Aunque tambien se aplica a las primeras, esta investigacion se centrara en las
segundas. Un metodo muy popular para la generacion de mallas no estructuradas
son las Triangulaciones de Voronoi-Delaunay [54]. Dado un conjunto de entrada
de puntos P = p1, . . . , pk = piki=1 que pertenece al dominio Ω ∈ Rn, existe un
diagrama de Voronoi V = V (p1), . . . , V (pk) = V1, . . . , Vk = Viki=1 que forma
una particion de Ω y sus puntos generadores son piki=1. Su dual (la triangulacion
de Delaunay), esta formado mediante la conexion de los puntos generadores que
corresponden a las regiones de Voronoi adyacentes.
En el contexto de generacion de mallas no estructuradas, las triangulaciones de De-
launay se han usado como un buen punto de partida. Pueden contener triangulos
con angulos pequenos, o triangulos con areas muy variadas, por lo que la mayorıa
de los algoritmos relacionados con las triangulaciones de Voronoi-Delaunay no pro-
porcionan una garantıa acerca de la calidad de la malla resultante. Otro factor
influyente es la distribucion de los puntos generadores, para hallar una buena dis-
tribucion de puntos, muchas tecnicas han sido propuestas como el metodo de frente
de avance (advancing front method [55]), el metodo de empaquetamiento de esferas
(the method of sphere packing [56]) y el metodo de insercion sucesiva de puntos de
1Generacion de una imagen a partir de un modelo con ayuda de programas computacionales(CADs).
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 67
Steiner (the method of successive insertion of Steiner points [57]). Estas tecnicas
pueden producir mallas que satisfacen algunas restricciones de calidad, por ejem-
plo, el angulo mınimo puede ser mayor que un lımite inferior proporcionado por
el usuario [51].
4.1 Teselaciones de Voronoi Centroidales (TVC)
Las Teselaciones de Voronoi Centroidales, denotadas como TVC (del ingles Cen-
troidal Voronoi Tessellations, CVT) son un tipo especial de teselacion, que ofrecen
propiedades superiores comparadas con las ordinarias. Sus puntos generadores
son tambien centroides2 de las regiones de Voronoi asociadas, con respecto a una
funcion de densidad dada y un error funcional. Por lo tanto, se puede esperar que
una Triangulacion de Delaunay basada en Teselaciones de Voronoi Centroidales
(TDVC) puede proporcionar mejores alternativas a los metodos existentes para la
generacion de mallas de alta calidad [58].
Definicion 4.3 (Centroide). Dada una particion Viki=1 de Ω ∈ Rn y una
funcion de densidad3 ρ(x) definida para cada x ∈ Ω, el centroide (centro de masa,
ver Figura 4.2) de cada celda Vi es el punto zi ∈ V , definido por
minzi∈V
∫Vρ(x)||x− zi||2dx
(4.1)
Entonces, la forma explıcita de zi esta dada por
zi =
∫V xρ(x)dx∫V ρ(x)dx
(4.2)
Definicion 4.4 (TVC). Si los generadores de las regiones Viki=1 de Ω coinciden
con sus correspondientes centroides, es decir,
2Un centroide puede entenderse como la posicion media de todos los puntos en la totalidadde las direcciones de coordenadas.
3La funcion de densidad esta basada en una funcion de distribucion de densidad [59].
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 68
Figura 4.2: Diagrama de Voronoi de un rectangulo con 10 puntos aleatorios(() son los centroides, (•) son los generadores) y la funcion de densidad es una
constante. Notar que los generadores y los centroides no coinciden.
zi = zi, para i = 1, . . . , k (4.3)
entonces llamamos a la teselacion de Voronoi Viki=1 una Teselacion de Voronoi
Centroidal (TVC) de Ω y ziki=1 son los generadores de TVC que correspon-
den. El dual concerniente se conoce como Triangulacion de Delaunay basada en
teselaciones de Voronoi Centroidales (TDVC).
Notar que para un dominio dado Ω, la TVC asociada puede no ser unica [58]. Por
lo tanto, determinar una TVC de Ω es un proceso para encontrar un conjunto
de generadores ziki=1 tal que son al mismo tiempo centroides de las regiones de
Voronoi asociadas Viki=1.
Definicion 4.5 (Error funcional). Para cualquier teselacion Viki=1 del dominio
Ω y un conjunto de puntos ziki=1 en Ω, se define el error (costo, energıa [60])
funcional :
F(Viki=1, ziki=1) =k∑i=1
∫Vρ(x)||x− zi||2dx (4.4)
Las TVC estandar, junto con sus generadores son puntos crıticos de este error
funcional.
En la practica, las posiciones de los generadores pueden estar limitadas por varias
restricciones. Por ejemplo, en el contexto de generacion de una malla, puede ser
necesario que un cierto numero de generadores se encuentren en la frontera de
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 69
Ω. Esto motiva otra generalizacion del concepto de TVC: La TVC restringida,
definida como el mınimo de F bajo algunas restricciones especıficas.
Definicion 4.6 (TVCR). Dado un conjunto de puntos ziki=1 en Ω, una funcion
de densidad ρ y un conjunto de restricciones R, una teselacion de Voronoi es lla-
mada Teselacion de Voronoi Centroidal Restringida (TVCR) si (Viki=1, ziki=1)
es una solucion del problema
minziki=1∈R,Viki=1
F(Viki=1, ziki=1) =
k∑i=1
∫Vρ(x)||x− zi||2dx
(4.5)
La triangulacion de Delaunay relacionada se conoce como Triangulacion de De-
launay basada en teselaciones de Voronoi Centroidales Restringidas (TDVCR).
4.2 Algoritmos para TDVCs
Usualmente existen dos componentes en los algoritmos para hallar TDVCs, siendo
el primero el calculo de los generadores de la TVC y el segundo es la construccion de
la correspondiente triangulacion de Delaunay de los generadores. Una vez hallados
los generadores, la segunda componente se puede realizar usando algoritmos de
triangulacion de Delaunay estandar. Nos centraremos en los metodos para la
busqueda de los generadores de TVCs. Se discuten dos de estos metodos, que
son los representantes mas simples de dos clases de enfoques: probabilıstico y
determinıstico.
4.2.1 Enfoque probabilıstico (McQueen)
Nos centramos en el metodo aleatorio de McQueen, el cual tiene la ventaja de que
no se requiere el calculo de la teselacion de Voronoi hasta el paso final. Para otros
estudios del algoritmo, consultar [61] y [62]. Se emplea el metodo de Montecarlo
para generar un conjunto de puntos inicial [63]. El metodo de McQueen esta
definido como sigue.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 70
Algorithm 4.1 Metodo de McQueen
Require: Un conjunto Ω, un entero positivo k y una funcion de densidad deprobabilidad ρ definida en Ω
Ensure: TDVC de Ωbegin
1. Elegir un conjunto inicial de k puntos ziki=1 en Ω, usando un metodo deMontecarlo
2. Inicializar el ındice ji = 1 para toda i = 1, . . . , k
3. Seleccionar un punto y ∈ Ω al azar de acuerdo con la funcion de densidadde probabilidad ρ(y)
4. Hallar el punto zi en ziki=1 mas cercano a y
5. Denotar el ındice de zi como i∗
6. Fijar
zi∗ ←ji∗zi∗ + y
ji∗ + 1y ji∗ ← ji∗ + 1
7. El nuevo zi∗ , junto con zii 6=i∗ , forman el nuevo conjunto ziki=1
if El nuevo ziki=1 cumple algun criterio de convergencia thenHallar la correspondiente triangulacion de Delaunay y terminar
elseVolver al paso 3
end ifend
Notar que el ındice ji representa el numero de veces que el punto zi ha sido
actualizado.
El analisis de la complejidad computacional de este algoritmo es extenso, no
sera revisado en esta seccion. Ju, Du y Gunzburger han realizado experimentos
numericos, los cuales pueden consultarse en [64].
4.2.2 Enfoque determinıstico (Lloyd)
Se describe un algoritmo basado en el metodo de Lloyd, que es una iteracion entre
la construccion de teselaciones de Voronoi y los centroides. Tambien hace uso del
metodo de Montecarlo para generar un conjunto de puntos inicial.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 71
Algorithm 4.2 Metodo de Lloyd
Require: Un conjunto Ω, un entero positivo k y una funcion de densidad deprobabilidad ρ definida en Ω
Ensure: TDVC de Ωbegin
1. Elegir un conjunto inicial de k puntos ziki=1, por ejemplo, mediante eluso de un metodo de Montecarlo
2. Construir la teselacion de Voronoi Viki=1 de Ω, asociada con los puntosziki=1
3. Calcular los centroides de las regiones de Voronoi halladas
4. Estos centroides son el nuevo conjunto de puntos ziki=1
if El nuevo ziki=1 cumple algun criterio de convergencia thenEncontrar la triangulacion de Delaunay y terminar
elseVolver al paso 2
end ifend
El metodo de Lloyd original fue usado solo para encontrar la TVC y puede ser
interpretado como una iteracion de punto fijo para el mapeo entre los generadores
y los centroides [65]. Una discusion mas detallada puede encontrarse en [58]. El
analisis de la complejidad computacional de este algoritmo tampoco sera revisado
en esta seccion. Ju, Du y Gunzburger han realizado experimentos numericos, los
cuales pueden consultarse en [64].
4.2.3 Algoritmos para TDVCs restringidos (TDVCRs)
Existen varias generalizaciones para la construccion de TDVCRs. En la configu-
racion mas simple del caso unidimensional, dos de los generadores pueden limitarse
a ser los puntos lımite del intervalo Ω = [a, b]. Du y Gunzburger proponen una
modificacion al metodo de McQueen [66](Algoritmo 4.3), ası mismo se realizaron
experimentos numericos en [64] para analizar la complejidad computacional del
algoritmo.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 72
Algorithm 4.3 Metodo de McQueen Modificado
Require: Un conjunto Ω = [a, b], un entero positivo k y una funcion de densidadde probabilidad ρ definida en Ω
Ensure: TDVCR de Ωbegin
1. Hacer z1 = a y zk = b
2. Elegir un conjunto inicial de k − 2 puntos ziki=1, usando un metodo deMontecarlo, pertenecientes a un conjunto de restricciones R
3. Fijar ji = 1 para toda 1 < i < k
4. Seleccionar y ∈ Ω al azar de acuerdo con ρ(y)
5. Hallar el punto zi en ziki=1 mas cercano a y
6. Denotar el ındice de zi como i∗
if i∗ = 1 o i∗ = k thenVolver al paso 4
elseFijar
zi∗ ←ji∗zi∗ + y
ji∗ + 1y ji∗ ← ji∗ + 1
end ifEl nuevo zi∗ , junto con zii 6=i∗ , forman el nuevo conjunto ziki=1
if El nuevo ziki=1 cumple algun criterio de convergencia thenHallar la correspondiente triangulacion de Delaunay y terminar
elseVolver al paso 4
end ifend
Otras generalizaciones a conjuntos de restricciones mas complicados pueden ser
realizadas analogamente [64].
Similarmente, dado conjunto de restricciones R, Du y Gunzburger proponen una
modificacion al metodo de Lloyd [66](Algoritmo 4.4).
El algoritmo de Lloyd tambien tiene la propiedad de que F es monotona decreciente
a lo largo de la iteracion.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 73
Algorithm 4.4 Metodo de Lloyd Modificado
Require: Un conjunto Ω, un entero positivo k y una funcion de densidad deprobabilidad ρ definida en Ω
Ensure: TDVCR de Ωbegin
1. Elegir un conjunto inicial de k puntos ziki=1, mediante el uso de unmetodo de Montecarlo, pertenecientes a R
2. Construir la teselacion de Voronoi Viki=1 de Ω, asociada con los puntosziki=1
3. Calcular, en el conjunto R, el mınimo de
F(Viki=1, ziki=1) =k∑i=1
∫Vρ(x)||x− zi||2dx (4.6)
4. El mınimo es el nuevo conjunto de puntos ziki=1
if El nuevo ziki=1 cumple algun criterio de convergencia thenEncontrar la triangulacion de Delaunay y terminar
elseVolver al paso 2
end ifend
4.3 Aplicaciones de TDVCs para la generacion
de mallas
Du, Faber y Gunzburger han comentado muchas aplicaciones de las TVC, como
las reglas de cuadratura optima, representacion optima, cuantificacion, agrupacion
(clustering), colocacion optima de recursos, division celular y el comportamiento
territorial de los animales [58]. En esta seccion se discutira la aplicacion de las
TVC y TDVCs para la generacion de mallas.
4.3.1 Generacion de mallas sin restricciones
Existen propiedades geometricas asociadas con la triangulacion de Delaunay, a
continuacion se describen.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 74
Propiedad 4.1 (Criterio de Delaunay). El interior de la esfera circunscrita de
un simplex en la triangulacion no contiene puntos generadores.
Propiedad 4.2 (Propiedad Dual de Delaunay). La arista es perpendicular a
alguna cara de la teselacion de Voronoi.
Propiedad 4.3 (Propiedad del cırculo vacıo). Para cada arista, se puede
encontrar una esfera que contiene los puntos extremos de la arista, pero no contiene
cualquier otro punto generador.
La aplicacion de la TDVC para la generacion de mallas sin restricciones trata
principalmente con la distribucion de generadores de acuerdo a alguna funcion de
densidad ρ, la cual refleja las propiedades de la solucion.
4.3.2 Generacion de mallas con restricciones
En las aplicaciones practicas, las mallas estan sujetas a restricciones sobre la
posicion de los puntos generadores, tambien de las aristas y caras de los simplex.
Es importante tomar en cuenta la restriccion de marcar las mallas de acuerdo a
la frontera geometrica, algunos enfoques para manejar estas restricciones son las
siguientes.
• De la frontera al interior : Se puede determinar un subconjunto de puntos
generadores en la frontera, por ejemplo, a traves de una construccion de TVC
dimensionalmente inferior, basada en una funcion predefinida. Su ventaja
radica en el uso consistente del concepto de TVC que resulta en un algoritmo
relativamente simple. La desventaja es que puede no ser facil de determinar
a priori el numero de puntos generadores en la frontera y la funcion de
densidad apropiada.
• Del interior a la frontera: Se puede construir la TVC y la TDVC sin aplicar
restricciones usando un algoritmo estandar, como la iteracion de Lloyd. Cada
vez que se encuentra un nuevo conjunto de generadores, se determina si
alguna de las correspondientes regiones de Voronoi se extienden hacia el
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 75
exterior del dominio. Algunos procedimientos pueden ser aplicados para
proyectar varios o todos los generadores correspondientes hacia la frontera
del dominio y luego continuar el proceso de iteracion.
• Formulacion variacional : En una configuracion mas general, considerar las
TDVCs para un dominio acotado donde se tienen N puntos generadores zi
en el interior del dominio Ω, y M puntos yj en la frontera ∂Ω. Considerar
minimizar la funcion modificada
F(zi, ViNi=1, yj,WjMj=1) =N∑i=1
∫Vρ1(x)||x−zi||2dV+
M∑j=1
∫Wρ2(x)||x−yj||2dW
con respecto a ziNi=1 ⊂ Ω, yjMj=1 ⊂ ∂Ω, V = ViNi=1 y W = WjMj=1,
donde los conjuntos V y W forman una particion de Ω conjuntamente. Las
funciones de densidad pueden ser definidas de manera diferente para reflejar
los diferentes pesos colocados en los puntos generadores del interior y la
frontera. La triangulacion de Delaunay correspondiente con la minimizacion
puede ser usada para generar mallas con relacion a la frontera. Las funciones
de densidad ρ1 y ρ2 pueden estar basadas en informacion previa o en un
estimador 4 de error local.
4.3.3 Adaptacion y suavizado local (Smoothing)
La adaptacion de las mallas generalmente implica refinamiento, engrosamiento y
suavizado [67, 68, 69]. Un enfoque popular es el Suavizado de Laplace (Laplacian
Smoothing) [67, 69]. Al mover sucesivamente cada punto al centroide de sus veci-
nos, a menudo se mejoran las rejillas o cuadrıculas (del ingles grids) resultantes.
El concepto de TDVC proporciona una buena explicacion teorica para el proceso
de suavizado: moviendo sucesivamente generadores hacia los centroides de las
regiones de Voronoi, el coste funcional se reduce. Con una buena eleccion de la
funcion de densidad, el coste funcional puede estar relacionado a los estimadores de
4Un estimador es una medida cuantitativa usada para valorar o inferir un parametro descono-cido.
Capıtulo 4. Optimizacion basada en diagramas de Voronoi 76
error para el subproblema. Los promedios de los generadores vecinos proporcionan
aproximaciones a los centroides de las regiones de Voronoi. Por lo tanto, el proceso
de suavizado imita el proceso de construccion iterativa de TVCs (como el algoritmo
de Lloyd) y, en consecuencia, contribuye a la reduccion del error de discretizacion5.
5Se refiere al error que se comete al utilizar un algoritmo determinado.
Capıtulo 5
Reconstruccion 3D
En este capıtulo se expondra un metodo para la reconstruccion tridimensional de
objetos, basada en teselaciones de Voronoi, su implementacion ha sido realizada
en el Software Libre MeshLab, el cual es un sistema de codigo abierto, portatil y
extensible para el procesamiento y la edicion de mallas triangulares tridimension-
ales no estructuradas [70]. El sistema esta basado en gran medida en la librerıa
VCG, desarrollado en el Laboratorio de Computacion Visual del Istituto di Scienza
e Tecnologie dell’Informazione “A. Faedo” [71]. Antes de desarrollar el metodo,
es necesario tener en consideracion algunos conceptos basicos del procesamiento y
edicion de mallas.
5.1 Procesamiento y edicion de mallas
El proceso de convertir un conjunto de puntos de muestra en Rn en un modelo
de graficos por ordenador generalmente implica varios pasos: la reconstruccion de
un modelo lineal inicial a trozos, limpieza, simplificacion y a veces el ajuste con
parches (del ingles patches) de superficie curvadas.
La reconstruccion de superficies 3D a partir de puntos de muestreo es un problema
bien estudiado por la teorıa de Graficos por ordenador.
77
Capıtulo 5. Reconstruccion 3D 78
Definicion 5.1 (Reconstruccion de superficies). La reconstruccion de super-
ficies es una serie de metodos y tecnicas computacionales que permiten un ajuste
de los datos escaneados, relleno de huecos en la superficie y un remallado (del
ingles remeshing) de los modelos tridimensionales existentes.
El algoritmo usado en MeshLab (Surface reconstruction VGC) es en su mayorıa
una variante de la aproximacion volumetrica de Curless y Levoy [72] con algunos
sistemas de ponderacion originales, una regla de expansion diferente y del Labora-
torio de Computacion Visual ISTI [73] y otro enfoque para el relleno de huecos a
traves del volumen de dilatacion/relajacion. Un filtro es aplicado a todas las capas
visibles del modelo a modificar. En la practica, las nubes de mallas (o puntos) que
son visibles son usadas para construir el campo de distancia volumetrica.
Definicion 5.2 (Subdivision de superficies). La subdivision de superficies es
un metodo de representacion de una superficie lisa (suave1), a traves de la especi-
ficacion de una malla poligonal lineal a trozos2 mas gruesa.
La superficie lisa se puede calcular como el lımite de un proceso recursivo de
subdividir cada cara poligonal en caras mas pequenas que aproximen mejor la
superficie lisa.
MeshLab aplica el algoritmo de Loop para la subdivision de superficies [74], que
funciona para cada triangulo y que tiene reglas para vertices extraordinarios.
En el muestreo estocastico, cada punto tiene la misma probabilidad finita de ser
elegido, el patron de Muestreo de Poisson se genera al agregar puntos en posiciones
aleatorias hasta que se alcanza la densidad deseada (o hasta que la superficie se
llena).
Definicion 5.3 (Muestreo de Poisson-disk). El muestreo de Poisson-disk es
una generalizacion del muestreo con distribucion de Poisson, donde cada punto
muestra satisface la restriccion de una distancia mınima. Este patron se forma
1Una superficie es suave cuando no tiene picos ni pliegues, es decir, cuando el vector productoelemental es diferente de cero.
2Estructura topologica en la cual se puede pasar de un grafico a otro a traves de una funcionlineal a trozos.
Capıtulo 5. Reconstruccion 3D 79
por la generacion de puntos uniformemente distribuidos como en el muestreo de
Poisson y se retienen aquellos que satisfacen la restriccion de distancia mınima
[75].
MeshLab crea una capa rellena con puntos de muestreo de la malla actual; las
muestras son generadas de acuerdo a la distribucion de Poisson-disk, usando el
algoritmo descrito por Corsini et al [76].
Definicion 5.4 (Coloracion de vertices). Dada una malla M y un conjunto
de puntos P , una coloracion de vertices ocurre cuando se proyecta cada vertice
de P sobre M y pinta a M de acuerdo a determinada propiedad de los puntos
proyectados.
MeshLab proyecta los puntos sobre la malla segun la distancia geodesica (ver
Definicion 2.17) entre ellos, mediante la opcion Coloracion de vertices de
Voronoi. La coloracion y la proyeccion se hacen en funcion de cada vertice.
Definicion 5.5 (Remuestreo de malla). Un remuestreo (del ingles resampling)
se realiza mediante la construccion de una representacion volumetrica3 uniforme,
donde cada voxel4 posee una distancia orientada5 de la superficie original, creando
una nueva malla.
MeshLab crea una nueva malla, la cual es una version de remuestreo de la ultima, la
superficie remuestreada se reconstruye utilizando el algoritmo de Marching Cubes
[77].
Definicion 5.6 (Suavizado de Taubin). El algoritmo de Taubin es utilizado
para el suavizado de mallas, este abarca dos caracterısticas: progresiva y gradual,
para cada iteracion [78].
Ahora nos encontramos en condiciones de exponer un metodo para Voronizar
cualquier modelo tridimensional haciendo uso del Software Libre MeshLab.
3Visualizacion grafica que forma una representacion optica de un objeto en tres dimensionesfısicas.
4Unidad cubica que compone un objeto tridimensional, el equivalente de un pıxel en 3D.5La funcion distancia orientada, o funcion distancia con signo, mide cuan cerca se encuentra
un punto de un conjunto, otorgandole un signo dependiendo del lado en que se encuentre delconjunto.
Capıtulo 5. Reconstruccion 3D 80
5.2 Metodo de reconstruccion 3D con MeshLab
Despues de ejecutar MeshLab, asegurarse de mostrar el Dialogo de capas, ası
como de activar la Vista de lıneas planas (Flat Lines), de ser el caso, para
observar mejor la triangulacion de la superficie. A continuacion se debe importar
un modelo tridimensional cuya extension sea soportable por el Software, una lista
de las extensiones se muestra en la Tabla 5.1. El modelo aparecera en el dialogo
de capas como “0 xxx.yyy”. Por ejemplo, si nuestro modelo se llama “Pieza 1”
y tiene extension “.stl”, sera nombrado “0 Pieza 1.stl” (0 se refiere al numero de
capa).
Paso 1: Crear una nueva superficie
Aplicar el filtro Surface Reconstruction: VCG, ubicado en la pestana Fil-
ters → Remeshing, Simplification and Reconstruction. Se abrira un cuadro de
dialogo en la cual podremos introducir los parametros de nuestra preferencia, se
recomienda cambiar unicamente el parametro de la caracterıstica Voxel Side con
un porcentaje de 0.5; la casilla se presenta como perc on, abarcando los valores
(0, 119.501). Una vez aplicada tal caracterıstica, cerrar el cuadro de dialogo (en
adelante, Aplicar y cerrar). Esto creara una nueva capa que se mostrara en el
dialogo de capas, generalmente con el nombre de “1 plymcout.ply”.
Para mayor comodidad, se aconseja eliminar la capa 0. Para ello, primero se debe
seleccionar, dar clic secundario y elegir la opcion Delete Current Mesh.
Paso 2: Crear una subdivision de la superficie
Aplicar el filtro Subdivision Surfaces: Loop, ubicado en Filters → Remeshing,
Simplification and Reconstruction. En el cuadro de dialogo abierto, se sugiere cam-
biar solo el parametro de la caracterıstica Edge Threshold, que sera el umbral
de las aristas, con un porcentaje de 0.5. Aplicar y cerrar.
Capıtulo 5. Reconstruccion 3D 81
Formato Extension
Stanford Polygon File Format (*.ply)STL File Format (*.stl)Alias Wavefront Object (*.obj)Quad Object (*.qobj)Object File Format (*.off)PTX File Format (*.ptx)VCG Dump File Format (*.vmi)Breuckmann File Format (*.bre)Collada File Format (*.dae)OpenCTM Compressed Format (*.ctm)Expe’s Point Set (Binary) (*.pts)Expe’s Point Set (ASCII) (*.apts)XYZ Point Cloud (With or Without Normal) (*.xyz)GNU Triangulated Surface (*.gts)Protein Data Bank (*.pdb)TRI (Photogrammetric Reconstructions) (*.tri)ASC (ASCII Triplets of Points) (*.asc)TXT (Generic ASCII Point List) (*.txt)X3D File Format - XML Encoding (*.x3d)X3D File Format - VRML Encoding (*.x3dv)VRML 2.0 File Format (*.wrl)
Tabla 5.1: Extensiones soportadas por MeshLab.
Una vez aplicado el filtro, el modelo tendra un mayor numero de triangulaciones
en su superficie.
Paso 3: Crear los generadores (centroides)
Aplicar el filtro Poisson-disk Sampling, ubicado en Filters → Sampling. En
el cuadro de dialogo elegir el numero de muestras (puntos) deseado, mediante la
caracterıstica Number of Samples, ası como un radio especıfico, caracterıstica
Explicit Radius. Esto creara una nueva capa en el dialogo de capas.
Dependiendo del modelo, se sugiere probar distintos parametros hasta encontrar
una configuracion oportuna. Haciendo esto se produciran varias capas, y para
comprobar cual sera elegida, se debe desactivar la vista de la capa 1, haciendo clic
sobre el ıcono de la misma. Aplicar y cerrar.
Capıtulo 5. Reconstruccion 3D 82
Paso 4: Colorear los vertices
Aplicar el filtro Voronoi Vertex Coloring, ubicado en Filters → Sampling.
Seleccionar la caracterıstica Back Distance y la vista previa (Preview), con
lo cual el modelo sera coloreado en base a sus vertices y podremos observar una
primera vista de las aristas de Voronoi en el modelo. Aplicar y cerrar.
Es importante recalcar que antes de aplicar este filtro, debe estar seleccionada la
capa 1.
Paso 5: Elegir las caras por sus vertices
Aplicar el filtro Select Faces by Vertex Quality, ubicado en Filters → Selection.
Seleccionar la vista previa (Preview) y no cerrar cuadro de dialogo.
Este filtro permite elegir las caras que seran finalmente eliminadas, para obtener
solo las aristas de Voronoi. Para ello primero se deben aplicar ciertas configura-
ciones para que MeshLab determine de manera correcta cuales componentes deben
suprimirse, a continuacion descritas:
1. Ocultar el color de seleccion: Render → Color → None.
2. En el cuadro de dialogo de Select Faces by Vertex Quality, cambiar el
parametro de la caracterıstica Min Quality a 0, mientras que el parametro
de Max Quality dependera del grosor deseado en las aristas. Aplicar y
cerrar.
3. Debido a que MeshLab reconoce los colores de manera particular (rojo es el
color de la seleccion), debemos invertir la seleccion. Para borrar las caras,
primero debemos elegirlas y despues aplicar el filtro Invert Selection, ubi-
cado en Filters → Selection. Aplicar y Cerrar.
Capıtulo 5. Reconstruccion 3D 83
Paso 6: Eliminar las caras y los vertices
Aplicar el filtro Delete Selected Faces and Vertices, ubicado en Filters →
Selection. Este filtro borra las caras y los vertices del modelo; en la vista final
apareceran las aristas y los centroides calculados en el Paso 3, lo cual no es mo-
tivo de inquietud, puesto que no es determinante en el resultado final, solo debe
desactivarse la vista de la capa 2 (o la capa elegida en el Paso 3).
Paso 7: Suavizar las aristas
Aplicar el filtro Laplacian Smooth, ubicado en Filters → Smoothing, Fairing and
Deformation, las veces que sean necesarias hasta obtener un modelo mas estetico.
Paso 8: Crear un remuestreo de malla
Aplicar el filtro Uniform Mesh Resampling, ubicado en Filters → Remeshing,
Simplification and Reconstruction. En el cuadro de dialogo se sugiere modificar los
parametros de las caracterısticas Precision (con un porcentaje de 0.5) y Offset
(con un porcentaje de 52), ası como dejar activadas las casillas Multisample y
Absolute Distance.
Esto creara la nueva capa Offset mesh, que es un nuevo muestreo de superficie
del modelo, es decir, se crearan nuevas mallas a partir de la existente, otorgando
volumen a las aristas. El uso de memoria con el algoritmo de Marching Cubes
es elevado, por lo que esta etapa puede durar incluso minutos, dependiendo de la
complejidad del modelo.
En este punto dejar solo la vista Offset mesh activada.
Capıtulo 5. Reconstruccion 3D 84
Paso 9: Suavizado del modelo final
Aplicar el filtro Taubin Smooth, ubicado en Filters → Smoothing, Fairing and
Deformation. Recordar que debe estar seleccionada la capa Offset mesh, ya que
es el modelo final al que se va a aplicar este filtro. Se recomienda no modificar los
parametros por defecto en el cuadro de dialogo y usar el filtro las veces necesarias
hasta obtener un buen resultado.
Para observar mejor los efectos de cada filtro se aconseja aumentar o disminuir el
zoom, dependiendo de cual se este utilizando.
Finalmente, si se requiere, guardar el modelo voronizado exportandolo como malla
en el formato que se desee: File → Export Mesh As... Antes se debe seleccionar la
capa final que hemos obtenida, llamada “Offset mesh”, a continuacion elegir el for-
mato en la seccion Files of type y nombrarlo como se prefiera. Alternativamente
se puede exportar directamente mediante la combinacion de teclas Ctrl+E.
Capıtulo 6
Resultados
6.1 Aplicaciones analizadas
Antes de exponer los resultados del metodo, seran consideradas algunas aplica-
ciones del diagrama de Voronoi analizadas durante la investigacion.
6.1.1 El brote de colera en Londres
En los anos 1853 y 1854, Londres enfrento una tercera epidemia de colera. Por
aquel entonces los habitantes de ciertos distritos del sur de la ciudad extraıan agua
del Tamesis o la obtenıan de bombas de uso publico. Pero los desechos humanos
eran vertidos en alcantarillas improvisadas o directamente al rıo. Snow sostenıa
que la gente, al beber agua contaminada extraıda del rıo, ingerıa materia insana
y de esta manera contraıa el colera [79].
A principios de septiembre de 1854, el sector Golden Square fue escenario de un
brote epidemico de gran intensidad (500 muertes en 10 dıas). Snow era vecino del
area y sabıa que la mayorıa extraıa agua de una bomba en la calle Broad Street, por
ello registro las direcciones de 83 personas fallecidas en el area. Pronto confirmo
que la mayorıa de los moradores se abastecıan de la bomba mencionada, dado que
calculo la distancia entre la residencia de cada vıctima y la bomba mas cercana.
85
Capıtulo 6. Resultados 86
Figura 6.1: Analisis del brote de colera en Londres, por John Snow, la cruzroja representa la bomba de Broad Street.
En la Figura 6.1, los puntos identifican los domicilios de las personas fallecidas,
mientras que las cruces representan las bombas, se ha resaltado la bomba de Broad
Street con una cruz roja.
Probamos si en verdad la bomba de Broad Street es la mas cercana al domicilio
de las muertes por colera. Para ello dibujamos el diagrama de Voronoi tomando
como puntos generadores cada bomba en el mapa, el resultado se expone en la
Figura 6.2. Este y los consecuentes diagramas fueron construidos con el Software
Libre GeoGebra [80].
Se mostro graficamente la relacion espacial entre las muertes por colera y la bomba
de Broad Street. Tras la inhabilitacion de la bomba, se observo una reduccion
en la incidencia y mortandad por colera. Aunque posteriormente, debido a la
incredulidad de las autoridades y la presion popular, se habilito nuevamente su
uso.
Capıtulo 6. Resultados 87
Figura 6.2: Diagrama de Voronoi del analisis de brote de colera en Londres.
6.1.2 Ataque a Pearl Harbor
El 26 de noviembre de 1941 una fuerza de ataque japonesa compuesta por seis por-
taaviones zarpo desde el norte de Japon en ruta hacia el noroeste del archipielago
de Hawai, desde donde lanzarıa sus unidades aereas para atacar Pearl Harbor,
accion sucedida en la manana del 7 de diciembre. El ataque conmociono al pueblo
estadounidense y llevo directamente la entrada de los Estados Unidos en la Segunda
Guerra Mundial. La Figura 6.3 muestra el trayecto seguido por los japoneses [81],
se ha marcado con una cruz roja la base naval de Pearl Harbor y las bases navales
cercanas (islas Aleutianas, Midway y Wake) a ella mediante una cruz azul. Hay
que aclarar que la ruta es aproximada.
Nuestro proposito fue mostrar si en realidad el plan fue rigurosamente estruc-
turado, con base en la distancia a las bases navales cercanas a Pearl Harbor, que
pudieran detectar el ataque antes de cometerse. Trazamos el diagrama de Voronoi
y el resultado se observa en la Figura 6.4.
Capıtulo 6. Resultados 88
Figura 6.3: Ruta del ataque a Pearl Harbor recorrida por la Fuerza Especialde Portaaviones Japonesa de ida y vuelta.
Podrıa suponerse que la flota japonesa escogio uno de los puntos mas alejados
de las bases en las islas Aleutianas y Wake para salir. La ruta siguio la lınea
mediatriz entre las islas Aleutianas y Midway antes de desviarse en el punto mas
alejado entre las islas Aleutianas, Midway y Pearl Harbor.
6.1.3 Patrones en la piel de una jirafa
Un reciente estudio efectuado por investigadores del King’s College de Londres
acaba de confirmar la hipotesis planteada por el matematico britanico Alan Turing
hace medio siglo [82]. Segun su teorıa, los patrones biologicos como las rayas
del tigre y las manchas del leopardo aparecen por la interaccion de un par de
morfogenos (sustancias que gobiernan el desarrollo tisular), uno activador y otro
inhibidor. Estos dos morfogenos se combinarıan para crear el patron de rayas o
manchas ası: el activador forma la raya, pero, al interaccionar con el inhibidor, deja
Capıtulo 6. Resultados 89
Figura 6.4: Diagrama de Voronoi aplicado a la ruta de ataque a Pearl Harbor.
de manifestarse y da lugar a un espacio en blanco antes de volver a manifestarse
en forma de otra raya.
Las jirafas tienen un sistema de vasos sanguıneos que pasan por debajo de las
manchas rojizas de sus pelajes (ver Figura 6.5). Un vaso sanguıneo mas grande
rodea cada mancha y envıa vasos mas pequenos al centro de la mancha.
Figura 6.5: Patrones en la piel de una jirafa.
Capıtulo 6. Resultados 90
En el centro de cada mancha, los vasos liberan calor desde el cuerpo, regulando
la temperatura corporal del animal. Sus manchas sirven para deshacerse del calor
ya que ellas no pueden sudar, el centro de las manchas es por donde emana la
temperatura mas caliente del cuerpo.
Para asegurarnos de que la piel de una jirafa sigue un diseno de diagrama de
Voronoi, se trataron de ubicar los puntos generadores a partir del color mas obscuro
dentro de las regiones, es decir, se intentaron hallar los vasos que liberan el calor,
el resultado puede observarse en la Figura 6.6.
Como se esperaba, los vasos que liberan calor poseen un color mas obscuro en
relacion al resto de la piel, tambien se constata que los patrones de esta siguen un
diseno de diagrama de Voronoi.
Figura 6.6: Aproximacion del diagrama de Voronoi en la piel de una jirafa.
6.1.4 Oxxos cerca de CU
Este analisis surgio como una necesidad de proximidad en nuestro entorno, es-
pecıficamente la ubicacion de los Oxxos cercanos a Ciudad Universitaria (BUAP).
Supongamos que nos encontramos en la Facultad de Ciencias Fısico Matematicas
(marcada con una cruz naranja en la Figura 6.7) y se desea comprar una bebida
energetica, cafe o realizar una recarga telefonica; serıa de gran utilidad conocer
Capıtulo 6. Resultados 91
Figura 6.7: Vista del area cercana a CU.
que tienda es mas cercana a la Facultad para evitar un gasto innecesario de tiempo
y espacio. Para ello se trazo el diagrama de Voronoi tomando como generadores
cada Oxxo en los alrededores a CU (ver Figura 6.8). Como puede observarse, el
Oxxo mas cercano a la facultad es el de la Calle 22 Sur, esquina con Boulevard
Valsequillo, por lo que en este caso debemos dirigirnos a el.
Figura 6.8: Diagrama de Voronoi aplicado al area cercana a CU.
Capıtulo 6. Resultados 92
6.2 Resultados de la aplicacion del metodo
A continuacion se presentan imagenes de los pasos principales a seguir del metodo
de reconstruccion 3D. Se ha elegido una pieza ornamental que fue escaneada tridi-
mensionalmente en el Laboratorio de Sistemas Dinamicos Controlables.
Pieza original
En el diseno original de la Figura 6.9, puede apreciarse que la superficie del modelo
aun no ha sido suavizada, es por ello que utilizamos la instruccion de remallado
y la de suavizado. Se desactivo la vista de lıneas planas, en su lugar se activo la
vista de superficie plana (Flat).
Cabe resaltar que el modelo 3D, al haber sido escaneado, contiene una cantidad
grande de informacion, lo cual aumenta un poco mas el tiempo de respuesta a
cada instruccion.
Figura 6.9: Diseno original de la pieza ornamental.
Capıtulo 6. Resultados 93
Creacion de los puntos generadores (centroides)
La figura 6.10 expone los puntos creados; para este ejemplo se tomaron 222 mues-
tras y un radio explıcito del 5%. Para ello la vista de la capa 1 fue desactivada y
la capa 2 es mostrada, que lleva por nombre “Poisson-disk Samples”.
Esta parte es importante, ya que el numero de puntos depende directamente del
modelo original, ası como saber aproximadamente cuantos de ellos seran necesarios
para que nuestro modelo final sea el mejor.
Notar que los generadores de las teselaciones de Voronoi fueron creados aleatori-
amente, pero de tal manera que cubren la totalidad de la superficie del modelo
original.
Figura 6.10: Vista de Puntos con la distribucin Poisson-disk.
Capıtulo 6. Resultados 94
Delimitacion de aristas
En el cuadro de dialogo Selected Faces by Vertex Quality se cambio el
parametro Min Quality a un valor de 0 y el parametro Max Quality a 1.2,
de tal manera que las aristas quedaron formadas como se exhiben en la Figura
6.11.
Notar que las aristas de Voronoi estan marcadas en rojo.
Figura 6.11: Vista con la calidad de vertice modificada.
Capıtulo 6. Resultados 95
Eliminacion de caras y vertices
La Figura 6.12 muestra la vista de eliminacion de vertices y caras. Notamos que
las aristas aun exhiben vertices que no han sido suavizados.
Figura 6.12: Vista de supresion de caras y vertices seleccionados.
Capıtulo 6. Resultados 96
Suavizado final
Finalmente se aplico 4 veces el algoritmo de Taubin para suavizar mallas, otor-
gando una vista mejorada a nuestro modelo, el resultado se observa en la Figura
6.20.
Se guardo el archivo final con el nombre “Pieza ornamental.stl” para su posterior
impresion.
Figura 6.13: Vista de las aristas suavizadas mediante la aproximacion deTaubin.
Capıtulo 7
Conclusiones y Recomendaciones
97
Apendice A
Figuras
Creacion de una subdivision de la superficie
Despues de formarse la nueva superficie, se anadira una triangulacion al modelo,
para nuestros fines se ha creado una superficie con mas vertices, aristas y caras
(Voxel Side = 0.5%).
Puede observarse en la Figura A.1 que el modelo ha sufrido una ligera modificacion,
la superficie se nota mas suavizada, debido a que se anadieron nuevos elementos,
lo cual lo hace un poco mas estetico.
Esto hace pensar a la instruccion Surface Reconstruction: VCG como un
auxiliar importante para la reconstruccion de superficies en cualquier ambito.
Se produjo una nueva capa: “1 plymcout.ply” y se elimino la capa 0 (modelo
original).
98
Appendix A. Figuras 99
Figura A.1: Modelo con superficie reconstruida.
Appendix A. Figuras 100
Coloreado de los vertices
La Figura A.2 muestra el coloreado de los vertices, se puede observar la aplicacion
del proceso de voronizacion en la superficie del modelo.
Ası mismo, notar que cada region de Voronoi tiene como punto generador su
correspondiente centroide creado anteriormente.
Figura A.2: Vista de filtro de coloracion de vertices de Voronoi (Back dis-tance activado).
Appendix A. Figuras 101
Eleccion de las caras por sus vertices
En la Figura A.3 pueden observarse las caras que seran eliminadas, para ello antes
se configuro la eleccion, ya que MeshLab debio reconocer los elementos a suprimir.
Figura A.3: Vista de seleccion de caras por su rango de calidad sin modificar.
Appendix A. Figuras 102
Color oculto
Primero se oculto el color, de tal manera que los colores mostrados en la Figura
A.4 (rojo y gris) son los cuales MeshLab detectara para efectuar la eliminacion.
Notar que las caras aun no estan bien definidas.
Figura A.4: Vista sin color.
Appendix A. Figuras 103
Color invertido
MeshLab reconoce al rojo como tono de distincion, es por esta razon que se invirtio
el color de seleccion. En la Figura A.5 se observan las caras que seran eliminadas.
De igual manera, notar que las caras estan completamente definidas.
Figura A.5: Vista con la seleccion de caras y vertices invertida.
Appendix A. Figuras 104
Suavizado de aristas
La Figura A.6 muestra el efecto del algoritmo de Suavizado de Laplace para el
suavizado de mallas. Notamos que las aristas se observan mas esteticas y delimi-
tadas.
Figura A.6: Vista de aristas suavizadas.
Appendix A. Figuras 105
Aristas con volumen
La aplicacin del algoritmo de Marching Cubes se prolongo aproximadamente 8
minutos, ya que nuestro modelo ejemplo provenıa de un escaneo tridimensional
con muchos vertices.
En la Figura A.7 se aprecia que las aristas han adquirido volumen, si bien no han
sido suavizadas.
Figura A.7: Vista de remuestreo de mallas uniforme.
Apendice B
Mathematica
Algoritmo aplicado en el Software Mathematica.
n = Input[‘‘Puntos deseados, n= ’’];
Manipulate[If[Length[ptos] < 3, AppendTo[ptos, RandomReal[0, 10, 2]]];
vor = ListDensityPlot[
Map[Flatten, Transpose[ptos, Range[Length[ptos]]]],
PlotRange → 0, 10, 0, 10,InterpolationOrder → 0,
Mesh → If[mesh, All, None], ColorFunction → (ColorData[colors][#] &),
FrameTicks → False],
‘‘Ninguno’’ → ptos, RandomReal[0, 10, n, 2], 0, 0, 10, 10,
Locator, LocatorAutoCreate → True,
colors, ‘‘BrightBands’’, ‘‘Esquema de Colores’’, ColorData[‘‘Gradients’’],
mesh, False, ‘‘Mostrar Fronteras’’, True, False]
Si n = 10 se produce una imagen como la que se muestra en la Figura B.1. Esta
consiste en 10 puntos generados aleatoriamente y que cuenta con la posibilidad de
moverlos y una opcion para ver las aristas (fronteras).
106
Appendix B. Mathematica 107
Figura B.1: Diagrama de Voronoi realizado con Mathematica.
Bibliografıa
[1] Shamos, M. I., The early years of Computational Geometry, a personal
memoir., Contemporary Mathematics, pg. 313-332, 1999.
[2] Davies, J., Freelance data visualization and Computer Science., recuperado
de http://www.jasondavies.com/.
[3] Gomez, J. R., Diagramas de Voronoi., Matematica Aplicada, Universidad
de Sevilla, pg. 8-12.
[4] Aurenhammer, F., Klein, R., Voronoi Diagrams., Cap. 5 en Handbook
of Computational Geometry. (Ed. J.-R. Sack and J. Urrutia). Amsterdam,
Netherlands: North-Holland, pg. 203, 2000.
[5] Dirichlet, G. L., Uber die Reduktion der positiven quadratischen Formen
mit drei unbestimmten ganzen Zahlen., J. reine angew. Math. 40, pg. 209-227,
1850.
[6] Doval, H., John Show y la epidemia de colera en Londres en 1854., Revista
Argentina de Cardiologıa, Vol. 71, No. 6, pg. 463-467, 2003.
[7] Manzoor, S., et al., Boundary Aligned Grid Generation and CVD-MPFA-
Cell-centred Versus Cell-vertex on Unstructured Grids., ECMOR XIV-14th
European conference on the mathematics of oil recovery, 2014.
[8] Okabe, A., Boots, B., Sugihara, K., y Chiu, S. N., Spatial Tessel-
lations: Concepts and Applications of Voronoi Diagrams., 2a Edicion, Ed.
John Wiley and Sons, pg. 6-12, 1999.
108
Appendix B. Mathematica 109
[9] Frank, F. C., Kasper, J. S., Complex alloy structures regarded as spherical
packings. I. Definitions and basic principles., Acta Crystallogr. 11, pg. 184-
190, 1958.
[10] Brown, G.S., Point density in stems per acre., New Zealand Forest Re-
search Note 38, pg. 1-12, 1965.
[11] Turek, Z., Hoofd, L., Batra, S., Rakusan, K., The Effect of Realistic
Geometry of Capillary Networks on Tissue PO2 in Hypertrophied Rat Heart.,
Oxygen Transport to Tissue XIV. Advances in Experimental Medicine and
Biology, Vol. 317, pg. 567-572, 1992.
[12] Icke, V., van de Weygaert, R., Fragmenting the Universe I. Statistics
of two-dimensional Voronoi foams., Astron. Astrophys., Vol. 184, pg. 16-32,
1987.
[13] Okabe, A., Boots, B., Sugihara, K., y Chiu, S. N., Spatial Tessel-
lations: Concepts and Applications of Voronoi Diagrams., 2a Edicion, Ed.
John Wiley and Sons, pg. 221-224, 1999.
[14] Haag, C., Die Mundarten des oberen Neckar- und Donautales (Schwbisch-
alemannisches Grenzgebiet: Baarmundarten)., Hutzler, Reutlingen, 1898.
[15] Bogue, D. J., The Structure of the Metropolitan Community: A Study
of Dominance and Sub-dominance., University of Michigan: Contributions
of the Institute for Human Adjustment, Social Science Research Project,
University of Florida Libraries, pg. 14-30.
[16] Okabe, A., Boots, B., Sugihara, K., y Chiu, S. N., Spatial Tessel-
lations: Concepts and Applications of Voronoi Diagrams., 2a Edicion, Ed.
John Wiley and Sons, pg. 119, 1999.
[17] Kopec, R. J., An alternative method for the construction of Thiessen Poly-
gons., The Profesional Geographer, Vol. 5, 5a Edicion, pg. 24-26, 1963.
[18] Shamos, M. I., Hoey, D., Closest-point problems., 16th Annual Sympo-
sium on Foundations of Computer Science, Ed. IEEE, pg. 151-162, 1975.
Appendix B. Mathematica 110
[19] Gruber, P. M., Convex and Discrete Geometry., A Series of Comprehensive
Studies in Mathematics, Vol 336, Ed. Springer, pg. 467, 2007.
[20] Euler, L., Solutio problematis ad geometriam situs pertinentis., original-
mente publicado en Commentarii academiae scientiarum Petropolitanae 8 ,
pg. 128-140, 1741.
[21] Rosen, K. H., Matematica discreta y sus aplicaciones., 5a Edicion, Ed.
McGraw-Hill, pg. 503-581, 2004.
[22] Skiena, S., The Stony Brook Algorithm Repository., Stony Brook
University, sitio oficial en http://www3.cs.stonybrook.edu/~algorith/
implement/nauty/implement.shtml.
[23] Brualdi, R. A., Introductory Combinatorics., Ed. North-Holland, 1977.
[24] Hsu, L., Lin, C., Planar Graphs., Cap. 10 en Graph Theory and Intercon-
nection Network, Ed. CRC Press, pg. 165, 2008.
[25] Rosen, K. H., Matematica discreta y sus aplicaciones., 5a Edicion, Ed.
McGraw-Hill, pg. 568, 2004.
[26] West, D. B., Introduction to Graph Theory., 3a Edicion, Ed. Prentice Hall,
2007.
[27] Okabe, A., Boots, B., Sugihara, K., y Chiu, S. N., Spatial Tessel-
lations: Concepts and Applications of Voronoi Diagrams., 2a Edicion, Ed.
John Wiley and Sons, pg. 17, 1999.
[28] Martinetz T., Schulten K., Neural Networks., Topology representing net-
works, Vol. 7, pg. 507-522, 1994.
[29] Dehne, F., Computing digitized Voronoi diagrams on a systolic screen and
applications to clustering., Lecture Notes in Computer Science, Vol. 401, pg.
14-24, 1989.
Appendix B. Mathematica 111
[30] ArcGIS., ArcGIS Resource Center., recuperado de http://help.arcgis.
com/es/arcgisdesktop/10.0/help/index.html#//009t00000002000000,
Copyright c© 1995-2012 Esri. Todos los derechos reservados.
[31] Toriwaki, J. I., Yokoi, S., Voronoi and related neighbors on digitized 2-
dimensional space with application of texture analysis., Computational Mor-
phology, Ed. Toussaint, North-Holland, 1988.
[32] Watanabe, T., Murashima, S., A method to construct a Voronoi dia-
gram on 2-D digitized space (1) computing time., Faculty of Engineering,
Kagoshima, 1996.
[33] Siersma, D., Tibar, M., Topology of polynomial functions and monodromy
dynamics., C. R. Acad. Sci. Paris, T. 327, Serie I, pg. 655-660, 1998.
[34] Rodrıguez, E. A., Cubiertas convexas II., CINVESTAV-Tamaulipas, pg.
3-38, 2013.
[35] De Berg, M., Cheong, O., Van Krevel, M., Overmars M., Compu-
tational Geometry: Algorithms and Applications., Ed. Springer-Verlag, pg.
191-218, 2008.
[36] Valenzuela, P. D., Implementacion de una biblioteca de triangulacion de
polıgonos basada en el algoritmo Lepp Delaunay., Universidad de Chile, De-
partamento de Ciencias de la Computacion, pg. 14, 2009.
[37] Abellanas, M., Envolvente Convexa, Triangulacion de Delaunay y Dia-
grama de Voronoi: tres estructuras geometricas en una, con muchas apli-
caciones., Art. en Un paseo por la geometrıa, Universidad Politecnica de
Madrid, pg. 161-165, 2006/2007.
[38] Rodrıguez, E. A., Triangulaciones de Delaunay., CINVESTAV-
Tamaulipas, pg. 13-14, 2013.
[39] Fortune, S., A fast algorithm for Voronoi Diagrams., Algorithmica 2, pg.
153-174, 1987.
Appendix B. Mathematica 112
[40] Brown, K. Q., Voronoi diagrams from convex hulls., Information Process-
ing Letters, Vol. 9, No. 5, pg. 223-228, 1979.
[41] Edelsbrunner, H., Seidel, R., Voronoi diagrams and arrangements., Dis-
crete Comput. Geom. I, pg. 25-44, 1986.
[42] Klein, R., Abstract Voronoi diagrams and their applications (extendend ab-
stract)., Proc. Computational Geometry and its Applications (CG′88), Lec-
ture Notes in Computer Science, Vol. 333, Ed. H. Noltemeier, pg. 148-157,
1988.
[43] Fortune, S., A sweepline algorithm for Voronoi diagrams., Algorithmica 2,
pg. 153-174, 1987.
[44] Rivero, F., Diagrama de Voronoi., Cap. 4 en Geometrıa Computacional,
Universidad de los Andes, pg. 60-64.
[45] Rivero, F., Diagrama de Voronoi., Cap. 4 en Geometrıa Computacional,
Universidad de los Andes, pg. 48-49.
[46] Pelegrın, B, Un algoritmo para determinar las medianas absolutas generales
sobre una red tipo arbol., Trabajos de estadıstica y de investigacion operativa,
Vol. 33, No. 1, pg. 54-63, 1982.
[47] O′Rourke, J., Computational Geometry in C., 3a Edicion, Ed. Cambridge
University Press, pg. 64, 1998.
[48] Abellanas, M., Diagramas de Voronoi., recuperado de http://www.dma.
fi.upm.es/mabellanas/voronoi/voronoi/voronoi.html#3.3.4.
[49] Valenzuela, P. D., Implementacion de una biblioteca de triangulacion de
polıgonos basada en el algoritmo Lepp Delaunay., Universidad de Chile, De-
partamento de Ciencias de la Computacion, pg. 18-28, 2009.
[50] Guibas, L., Stolfi, J., Primitives for the manipulation of general subdivi-
sions and the computation of Voronoi., ACM Trans. Graph., Vol. 4, No. 2,
pg. 74-123, 1985.
Appendix B. Mathematica 113
[51] Chew, L., Guaranteed-quality triangular meshes., Department of Computer
Science, Technical Report, Cornell University, Report 89-983, 1989.
[52] Posada, E. S., Reduccion y ajuste de mallas triangulares., Universidad
Nacional de Colombia, pg. 6, 2013.
[53] Thompson, J., Soni, B., Weatherill N., Handbook of Grid Generation.,
Ed. CRC Press, 1998.
[54] Fortune, S., Voronoi diagrams and Delaunay triangulations in Computing
in Euclidean Geometry., World Scientific, River Edge, NJ, pg. 193-233, 1992.
[55] Frey, P., Borouchaki, H., George, P., Delaunay tetrahedralization using
an advancing-front approach., Proc. Fifth Internat. Meshing Roundtable,
Sandia National Lab., pg. 87-106, 1996.
[56] Miller, G., Talmor, D., Teng, S., Walkington, N., Wang, H., Control
volume meshes using sphere packing: generation, refinement and coarsening.,
Proc. Fifth Internat. Meshing Roundtable, Sandia National Lab., pg.47-62,
1996.
[57] Ruppert, J., A Delaunay refinement algorithm for quality 2-dimensional
mesh generation., J. Algorithms, Vol. 18, pg. 548-585, 1995.
[58] Du, Q., Faber, V., Gunzburger, M., Centroidal Voronoi tessellations:
applications and algorithms., SIAM Rev.41, pg. 637-676, 1999.
[59] Zhao, Y., Liu, S., Zhang, Y., Spatial Density Voronoi Diagram and
Construction., Journal of Computers, Vol. 7, No. 8, pg. 2007-2014, 2012.
[60] Wang, J., Wang, X., Edge-Weighted Centroidal Voronoi Tessellations.,
Numer. Math. Theor. Meth. Appl., Vol. 3, No. 2, pg. 223-244, 2010.
[61] Bottou, L., Vapnik, V., Neural computation., Local learning algorithms,
Vol. 4, No. 6, pg. 888-900, 1992.
[62] Hedenfalk, I., et al., Gene expression profiles in hereditary breast cancer.,
New England Journal of Medicine, Vol. 344, No. 8, pg. 539-548, 2001.
Appendix B. Mathematica 114
[63] Kalos, M. H., Whitlock, P. A., Monte Carlo methods., Ed. John Wiley
& Sons, 2008.
[64] Ju, L., Du, Q., Gunzburger, M., Probabilistic methods for centroidal
Voronoi tessellations and their parallel implementations., Parallel Comput-
ing, Vol. 28, pg. 1477-1500, 2001.
[65] Lloyd, S., Least square quantization in PCM., IEEE Transactions on Infor-
mation Theory, Vol. 28, No. 2, pg. 129-137.
[66] Du, Q., Gunzburger, M., Grid generation and optimization based on cen-
troidal Voronoi tessellations., Applied Mathematics and Computation 133,
Ed. Elsevier, pg. 591-607, 2002.
[67] Eiseman, P., Adaptive grid generation., Computer Methods in Applied
Mechanics and Engineering, Vol. 64, pg. 321-376, 1987.
[68] Freitag, L., Jones, M., Plassmann, P., A parallel algorithm for mesh
smoothing., SIAM Journal on Scientific Computing, Vol. 20, pg. 2023-2040,
1999.
[69] McRae, D., Laflin, K., Dynamic grid adaptation and grid quality., Hand-
book of Grid Generation, Ed. CRC Press, pg. 34-1-34-33, 1998.
[70] MeshLab, Sitio Oficial de MeshLab, recuperado de http://meshlab.
sourceforge.net/.
[71] VCG, Sitio Oficial de la Librera VCG, recuperado de http://vcg.isti.
cnr.it/vcglib/.
[72] Curless, B., Levoy, M., A Volumetric Method for Building Complex Mod-
els from Range Images., SIGGRAPH, pg. 302-312, 1996.
[73] Visual Computing Lab ISTI, Sitio Oficial del Laboratorio de Com-
putacion Visual ISTI, recuperado de http://www.isti.cnr.it/.
[74] Loop, C. T., Smooth Subdivision Surfaces Based on Triangles., M.S. Math-
ematics thesis, The University of Utah, 1987.
Appendix B. Mathematica 115
[75] McCool, M., Fiume, E., Hierarchical Poisson Disk Sampling Distribu-
tions., University of Toronto, 1992.
[76] Corsini, M., Cignoni, P., Scopigno, R., Efficient and Flexible Sam-
pling with Blue Noise Properties of Triangular Meshes., IEEE Transaction
on Visualization and Computer Graphics, Vol. 18, No. 6, pg. 914-924, 2012.
[77] Lorensen, W. E., Cline, H. E., Marching Cubes: A Hight-Resolution 3D
Surface Construction Algorithm., Computer Graphics, Vol. 21, No. 4, pg.
163-169, 1987.
[78] Taubin, G., A Signal Processing Approach To Fair Surface Design., Proc.
of SIGGRAPH ’95, pg. 351-358, 1995.
[79] Snow, J., On the Mode of Communication of Cholera., Ed. John Churchill,
1855.
[80] GeoGebra, Sitio Oficial de GeoGebra., recuperado de http://www.
geogebra.org/.
[81] Johnson, H. Historia del ataque japones a Pearl Harbor., recuperado de
http://goo.gl/G5veUr.
[82] Turing, A. M., The Chemical Basis of Morphogenesis., Philosophical
Transactions of the Royal Society of London, Series B, Biological Sciences,
Vol. 237, No. 641, pg. 37-72, 1952.