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.

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.

Ejecutar Applet