java c# .net jts

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 #) :