Tengo un conjunto de puntos 3D (que recupero de una biblioteca que realiza la teselación de un cuerpo sólido) que pertenecen a una curva (es decir, un borde del sólido). Eso significa que la curva seguramente pasa por cada uno de estos puntos.
Sin embargo, el conjunto de puntos no está ordenado, así que necesito ordenarlos para poder dibujar esta curva correctamente.
¿Existe algún enfoque conocido para este tipo de problema?
Alguna información adicional:
- Las curvas son paramétricas en general (splines / bezier, cortes de círculo ...).
- Los puntos se dan como coordenadas de coma flotante.
- Los puntos están muy densos (pero pueden ser tan densos como yo quiero que sea). Para darle una idea, para una curva que ocupa 19 unidades en x, 10 unidades en x y 5 unidades en z, cito una secuencia de puntos en un segmento de curva: (20.7622, 25.8676, 0) (20.6573, 25.856, 0) (20.5529, 25.8444, 0) (20.4489, 25.8329, 0) (20.3454, 25.8213, 0)
Respuestas:
Tiene una instancia de un problema llamado reconstrucción de curva desde puntos no organizados . Ahora que sabe qué buscar, encontrará varios métodos, como la corteza, la corteza NN, etc. Aquí hay algunos enlaces:
El applet de reconstrucción de curva de corteza
Reconstrucción de curvas por Tamal Dey
Reconstrucción de curvas y superficies: algoritmos con análisis matemático , libro de Tamal K. Dey, Cambridge University Press, 2006
Como se trata de curvas y las muestras son densas, le sugiero que calcule un árbol de expansión mínima euclidiana.
fuente
Después de algunas aclaraciones, probablemente haya un enfoque mucho mejor que ni siquiera requiere conocer la forma paramétrica de la curva, y también evita el paso de minimización numérica potencialmente problemático.
Si la curva no se cruza y los puntos están suficientemente densamente empaquetados en la curva (y con eso quiero decir que tienen que estar más cerca que cualquiera de los dos puntos de la curva que no pertenecen al mismo segmento, por ejemplo, por el envoltorio de la curva alrededor de sí mismo), luego puede determinar fácilmente el punto anterior y siguiente de cada muestra:
fuente
fuente