Как найти угловые точки кривой, используя JTS или NTS? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть кривая (скажем, край JTS):

enter image description here

Как найти все точки изменения направления кривой, которые превосходят данный угол, используя JTS (Java) или NTS (C #) :

enter image description here

1 Ответ

0 голосов
/ 19 июня 2018

Я провел некоторое исследование и провел несколько тестов на JTS, и лучший способ, который я нашел, это:

  • Создание полигонов и использование функции union
  • Затем итерация поКоординаты и создание подмассива для каждого «жесткого угла» (отрицательного скалярного произведения) и когда сумма углов достигает 180 (не берите последний угол, чтобы избежать проблем с функциями)
  • Тогда яизмените основание на ортонормированное основание с помощью x(firstElemOfSubArray, lastElemOfSubArray) путем вычисления матрицы, изменяющей основание, и затем я заново вычислю подмассив в новой системе координат
  • Затем я создаю функцию, используя org.apache.commons.math3.analysis.interpolation.SplineInterpolator для интерполяциифункция курса, а затем я получаю производную и ищу экстремумы (не берите элементы с ординатой, которая является слишком низкой).С его помощью вы можете найти, какая точка является точкой перегиба
  • Таким образом, искомая точка является первыми элементами каждого подмассива, а точки перегиба (если они есть)
...