java - ¿Cómo encontrar puntos de curva de curva usando JTS o NTS?
c# .net (1)
Hice algunas investigaciones e hice algunas pruebas en JTS, y la mejor manera que encontré es:
- Crea polígonos y usa la función
union
- Luego itere sobre las Coordenadas y cree una sub-matriz en cada "ángulo duro" (producto escalar negativo) y cuando la suma del ángulo alcance 180 (no tome el último ángulo para evitar problemas de no función)
- Luego cambio la base a una base ortonormal con
x(firstElemOfSubArray, lastElemOfSubArray)
calculando la matriz de cambio de base, y luego vuelvo a calcular la sub-matriz en un nuevo sistema de coordenadas - Luego creo una función usando
org.apache.commons.math3.analysis.interpolation.SplineInterpolator
para interpolar la función del curso, y luego obtengo la derivada y busco los extremos (no tome elementos con una ordenada que sea demasiado baja ). Con su absisio puedes encontrar qué punto es un punto de inflexión. - Entonces, el punto que busca son los primeros elementos de cada sub array, y sus puntos de inflexión (si hay alguno)
Tengo una curva (digamos borde de JTS):
Cómo encontrar todos los puntos de cambio de dirección de la curva que superan el ángulo dado usando JTS (Java) o NTS (C #) :