En geometría computacional , una triangulación de Delaunay o triangulación de Delone de un conjunto de puntos en el plano subdivide su envoltura convexa [1] en triángulos cuyos círculos circunscritos no contienen ninguno de los puntos. Esto maximiza el tamaño del ángulo más pequeño en cualquiera de los triángulos y tiende a evitar los triángulos de astillas .
La triangulación recibe su nombre de Boris Delaunay por su trabajo sobre ella en 1934. [2]
Si todos los puntos se encuentran sobre una línea recta, la noción de triangulación se vuelve degenerada y no hay triangulación de Delaunay. Para cuatro o más puntos sobre el mismo círculo (por ejemplo, los vértices de un rectángulo), la triangulación de Delaunay no es única: cada una de las dos triangulaciones posibles que dividen el cuadrángulo en dos triángulos satisface la "condición de Delaunay", es decir, el requisito de que los círculos circunscritos de todos los triángulos tengan interiores vacíos.
Al considerar esferas circunscritas, el concepto de triangulación de Delaunay se extiende a tres dimensiones y más. Es posible generalizar a otras métricas distintas de la distancia euclidiana . Sin embargo, en estos casos no se garantiza que exista una triangulación de Delaunay ni que sea única.
La triangulación de Delaunay de un conjunto de puntos discretos P en posición general corresponde al grafo dual del diagrama de Voronoi para P . Los circuncentros de los triángulos de Delaunay son los vértices del diagrama de Voronoi. En el caso 2D, los vértices de Voronoi están conectados a través de aristas, que pueden derivarse de las relaciones de adyacencia de los triángulos de Delaunay: Si dos triángulos comparten una arista en la triangulación de Delaunay, sus circuncentros deben estar conectados con una arista en la teselación de Voronoi.
Los casos especiales en los que esta relación no se cumple o es ambigua incluyen casos como:
Para un conjunto P de puntos en el espacio euclidiano ( d -dimensional) , una triangulación de Delaunay es una triangulación DT( P ) tal que ningún punto en P está dentro de la circunhiperesfera de ningún d - símplex en DT( P ) . Se sabe [2] que existe una única triangulación de Delaunay para P si P es un conjunto de puntos en posición general ; es decir, la envoltura afín de P es d -dimensional y ningún conjunto de d + 2 puntos en P se encuentra en el límite de una bola cuyo interior no interseca a P.
El problema de encontrar la triangulación de Delaunay de un conjunto de puntos en un espacio euclidiano de dimensión d se puede convertir en el problema de encontrar la envoltura convexa de un conjunto de puntos en un espacio de dimensión ( d + 1 ). Esto se puede hacer dando a cada punto p una coordenada adicional igual a | p | 2 , convirtiéndolo así en un hiperparaboloide (esto se denomina "elevación"); tomando el lado inferior de la envoltura convexa (ya que la tapa del extremo superior mira hacia arriba alejándose del origen y debe descartarse); y mapeando de nuevo al espacio de dimensión d eliminando la última coordenada. Como la envoltura convexa es única, también lo es la triangulación, asumiendo que todas las facetas de la envoltura convexa son símplices . Las facetas no simpliciales solo ocurren cuando d + 2 de los puntos originales se encuentran en la misma hiperesfera d , es decir, los puntos no están en posición general. [3]
Sea n el número de puntos y d el número de dimensiones.
De las propiedades anteriores surge una característica importante: mirando dos triángulos △ ABD , △ BCD con el borde común BD (ver figuras), si la suma de los ángulos α + γ ≤ 180° , los triángulos cumplen la condición de Delaunay.
Esta es una propiedad importante porque permite el uso de una técnica de inversión . Si dos triángulos no cumplen la condición de Delaunay, al cambiar la arista común BD por la arista común AC se obtienen dos triángulos que sí cumplen la condición de Delaunay:
Esta operación se llama flip y puede generalizarse a tres dimensiones y más. [8]
Muchos algoritmos para calcular triangulaciones de Delaunay se basan en operaciones rápidas para detectar cuándo un punto se encuentra dentro del círculo circunscrito de un triángulo y en una estructura de datos eficiente para almacenar triángulos y aristas. En dos dimensiones, una forma de detectar si el punto D se encuentra en el círculo circunscrito de A, B, C es evaluar el determinante : [9]
Cuando A, B, C se ordenan en sentido antihorario , este determinante es positivo solo si D se encuentra dentro del círculo circunscrito.
Como se mencionó anteriormente, si un triángulo no es Delaunay, podemos invertir uno de sus bordes. Esto conduce a un algoritmo sencillo: construir cualquier triangulación de los puntos y luego invertir los bordes hasta que ningún triángulo sea no Delaunay. Desafortunadamente, esto puede requerir Ω( n 2 ) inversiones de bordes. [10] Si bien este algoritmo se puede generalizar a tres dimensiones y dimensiones superiores, su convergencia no está garantizada en estos casos, ya que está condicionado a la conectividad del gráfico de inversión subyacente : este gráfico está conectado para conjuntos de puntos bidimensionales, pero puede estar desconectado en dimensiones superiores. [8]
La forma más sencilla de calcular de manera eficiente la triangulación de Delaunay es agregar repetidamente un vértice a la vez, retriangulando las partes afectadas del grafo. Cuando se agrega un vértice v , dividimos en tres el triángulo que contiene v y luego aplicamos el algoritmo de volteo. Si lo hacemos de manera ingenua, esto tomará O( n ) tiempo: buscamos entre todos los triángulos para encontrar el que contiene v y luego potencialmente volteamos todos los triángulos. Entonces, el tiempo de ejecución total es O( n 2 ) .
Si insertamos vértices en orden aleatorio, resulta (mediante una prueba algo intrincada) que cada inserción volteará, en promedio, solo O(1) triángulos, aunque a veces volteará muchos más. [11] Esto aún deja el tiempo de ubicación del punto para mejorar. Podemos almacenar el historial de las divisiones y volteretas realizadas: cada triángulo almacena un puntero a los dos o tres triángulos que lo reemplazaron. Para encontrar el triángulo que contiene v , comenzamos en un triángulo raíz y seguimos el puntero que apunta a un triángulo que contiene v , hasta que encontramos un triángulo que aún no ha sido reemplazado. En promedio, esto también tomará O(log n ) tiempo. Sobre todos los vértices, entonces, esto toma O( n log n ) tiempo. [12] Si bien la técnica se extiende a dimensiones superiores (como lo demostraron Edelsbrunner y Shah [13] ), el tiempo de ejecución puede ser exponencial en la dimensión incluso si la triangulación de Delaunay final es pequeña.
El algoritmo Bowyer-Watson ofrece otro enfoque para la construcción incremental. Ofrece una alternativa a la inversión de aristas para calcular los triángulos de Delaunay que contienen un vértice recién insertado.
Desafortunadamente, los algoritmos basados en volteretas son generalmente difíciles de paralelizar, ya que agregar un punto determinado (por ejemplo, el punto central de una rueda de carreta) puede llevar a hasta O( n ) volteretas consecutivas. Blelloch et al. [14] propusieron otra versión del algoritmo incremental basado en rip-and-tent, que es práctico y altamente paralelizado con span polilogarítmico .
Lee y Schachter desarrollaron un algoritmo de división y conquista para triangulaciones en dos dimensiones, que fue mejorado por Guibas y Stolfi [9] [15] y, más tarde, por Dwyer [16] . En este algoritmo, se dibuja recursivamente una línea para dividir los vértices en dos conjuntos. Se calcula la triangulación de Delaunay para cada conjunto y, a continuación, se fusionan los dos conjuntos a lo largo de la línea divisoria. Con algunos trucos ingeniosos, la operación de fusión se puede realizar en un tiempo O( n ) , por lo que el tiempo total de ejecución es O( n log n ) . [17]
Para ciertos tipos de conjuntos de puntos, como una distribución aleatoria uniforme, al seleccionar inteligentemente las líneas de división, el tiempo esperado se puede reducir a O( n log log n ) mientras se mantiene el rendimiento en el peor de los casos.
En "DeWall: A fast divide and acquire Delaunay triangulation algorithm in E d " de P. Cignoni, C. Montani y R. Scopigno se presenta un paradigma de "dividir y vencer" para realizar una triangulación en d dimensiones. [18]
Se ha demostrado que el algoritmo de dividir y vencer es la técnica de generación de DT más rápida a nivel secuencial. [19] [20]
Sweephull [21] es una técnica híbrida para la triangulación de Delaunay 2D que utiliza una envoltura de barrido que se propaga radialmente y un algoritmo de inversión. La envoltura de barrido se crea de forma secuencial iterando un conjunto de puntos 2D ordenados radialmente y conectando triángulos a la parte visible de la envoltura convexa, lo que da una triangulación sin superposición. Se puede construir una envoltura convexa de esta manera siempre que el orden de los puntos garantice que ningún punto caiga dentro del triángulo. Pero la ordenación radial debería minimizar la inversión al ser altamente Delaunay para empezar. Esto se combina luego con un paso final iterativo de inversión de triángulos.
El árbol de expansión mínimo euclidiano de un conjunto de puntos es un subconjunto de la triangulación de Delaunay de los mismos puntos, [22] y esto se puede aprovechar para calcularlo de manera eficiente.
Para modelar terrenos u otros objetos a partir de una nube de puntos , la triangulación de Delaunay proporciona un conjunto de triángulos muy útil para utilizar como polígonos en el modelo. En particular, la triangulación de Delaunay evita los triángulos estrechos (ya que tienen circunferencias circunscritas grandes en comparación con su área). Véase red irregular triangulada .
Las triangulaciones de Delaunay se pueden utilizar para determinar la densidad o intensidad de muestreos de puntos mediante el estimador de campo de teselación de Delaunay (DTFE) .
Las triangulaciones de Delaunay se utilizan a menudo para generar mallas para solucionadores discretizados en el espacio, como el método de elementos finitos y el método de volumen finito de simulación física, debido a la garantía de ángulos y porque se han desarrollado algoritmos de triangulación rápidos. Normalmente, el dominio que se va a mallar se especifica como un complejo simplicial grueso ; para que la malla sea numéricamente estable, debe refinarse, por ejemplo, utilizando el algoritmo de Ruppert .
La creciente popularidad de las técnicas del método de elementos finitos y del método de elementos de contorno aumenta el incentivo para mejorar los algoritmos de mallado automático. Sin embargo, todos estos algoritmos pueden crear elementos de malla distorsionados e incluso inutilizables. Afortunadamente, existen varias técnicas que pueden tomar una malla existente y mejorar su calidad. Por ejemplo, el suavizado (también conocido como refinamiento de malla) es uno de esos métodos, que reposiciona los nodos para minimizar la distorsión de los elementos. El método de malla estirada permite la generación de mallas pseudo-regulares que cumplen con los criterios de Delaunay de manera fácil y rápida en una solución de un solo paso.
La triangulación de Delaunay restringida ha encontrado aplicaciones en la planificación de rutas en la conducción automatizada y en la topografía. [23]
{{cite web}}
: CS1 maint: copia archivada como título ( enlace )