Explicación del Applet
Aspectos Generales
Antes de empezar a utilizar los algoritmos propuestos en el applet se
deben introducir los puntos sobre los que se desea trabajar.
Existen tres opciones:
El botón de "Limpoar Puntos", borra todos
los puntos de la pantalla, por si queremos empezar un nuevo
ejemplo.
Tras esto, se puede dibujar la curva. Para indicar donde se quiere que
empiece la curva haremos un sólo click sobre la ventana. A
continuación se puede mover libremente el ratón, mientras se van
dibujando puntos por donde éste pasa, según la densidad
seleccionada. Para indicar que queremos terminar de dibujar la curva,
haremos click nuevamente sobre la ventana.
Por último, dentro de la interfaz general disponemos de la opción
"Rellenar Triángulos". Se trata de un
checkbox. En caso de estar activado, a la hora de calcular una de las
dos triangulaciones disponibles, se colorearán los triangulos con
colores aleatorios. Si no estuviese activado, simplemente se dibujan
las aristas de los triángulos.
Triangulación de Graham
Esta triangulación se basa en el algoritmo del Cierre Convexo de
Grham. Se trata de un algoritmo lineal que, con una pequeña
modificación permite sacar una triangulación de puntos en complejidad
O(n).
La triangulación ordena en primer lugar todos los puntos angularmente,
respecto al punto que esté más abajo y más a la derecha. Desde ahí
empieza la triangulación.
Dada la baja complejidad de este algoritmo se puede probar con un alto
número de puntos para comprobar que es muy ligero. Sin embargo, la
triangulación resultante es muy poco representativa de los datos,
exceptuando el área, perímetro o cierre convexo.
A pesar de esto, se ha usado esta triangulación, ya que gracias a ella
se puede llegar a la triangulación de Delaunay, flipando aristas. Es
entonces una herramienta muy ligera de apoyo para otros algoritmos más
complejos como son los que más abajo se explican.
Triangulación de Delaunay
Delaunay parte de la Triangulación de Graham. Sobre esta, se recorre
todas las aristas comprobando si se pueden flipar. Dada un arista que
separa dos triangulos, fliparla, consiste en cambiar sus puntos por
los otros dos que estuviesen libres.
Una vez recorridas todas las aristas, se deben volver a recorrer, para
ver si se puede flipar alguna nueva. Se dejará de recorrer las
aristas, cuando en una pasada no se haya podido flipar
ninguna.
La complejidad de este algoritmo es mucho mayor al
anterior. Teóricamente es un algoritmo de complejidad O(n^2), aunque
en la práctica se comprueba que en la mayoría de los casos la
complejidad baja a O(n log n). Al hacer la triangulación de Delaunay
sobre una nuve de puntos densa, se comprueba que el algoritmo es mucho
más denso al de Graham. Sin embargo, se pueden obtener datos mucho
mejores de esta triangulación.
Diagrama de Voronoi
El Diagrama de Voronoi es el Grafo Dual de la Triangulación de Delaunay y representa las áreas en las que se está más cerca de un punto. Esto se consigue uniendo los circuncentros de los triángulos de Delaunay. Para los triángulos que contengan una arista del cierre convexo, se traza una recta que una su circuncentro con el punto medio de dicha arista y se prolonga hasta el infinito.
Crust - Reconstrucción de Curvas -
El algoritmo de Crust trata de resolver la reconstrucción de curvas definidas
por un conjunto de puntos.
Hay que destacar que en las zonas en las que la curva haga firos
bruscos, se necesita una mayor densidad de puntos para que el
algoritmo funcione correctamente.
Ya que este algoritmo usa la Triangulación de Delaunay, la complejidad
será la mismo. Tardará algo más ya que tiene que realizar la
Triangulación en dos ocasiones, y una de ellas con bastantes más
puntos, pero la complejidad es la misma.
AntiCrust - Esqueleto -
AntiCrust, al igual que pasaba entre Voronoi y Delaunay, es el grafo
dual de Crust, y representa el esqueleto de la "figura" o "curva". Si
por ejemplo la nube de puntos representase una hoja, el anticrust
sería en gran medida el esqueleto de esa hoja.
El AntiCrust se calcula basándose en Crust y en el Diagrama de
Voronoi. El esqueleto son todas aquellas aristas que pertenezcan al
Diagrama de Voronoi y que no corten a ninguna arista de Crust.
Si se dispone de Crust y del Diagrama de Voronoi, el cálculo del
AntiCrust es directo.
Aspectos generales de los Algoritmos
En el applet, hay que destacar la relación que mantienen los distintos
algoritmos, ya que es la base a la hora de optimizar trabajo. En todos
los casos, a la hora de ejecutar cualquier algoritmo, se utilizará
todo lo que previemente se hubiese calculado. Es decir, que si primero
calculamos el Crust de los puntos dados, la Triangulación de Graham y
la de Delaunay ya estarán calculadas, con lo que si más tarde se
quiere ver la Triangulación de Delaunay, no hay que volver a
calcularla. Así ocurre entre todos los algoritmos.
El caso más extremo es que calculemos en primer lugar AntiCrust. Si
esto ocurre, ha sido necesario calcular las Triangulaciones de Graham,
de Delaunay, el diagrama de Voronoi y Crust. Con esto, si más tarde
queremos ver cualquiera de estos algoritmos no hay que calcularlos.