Как найти угловые точки кривой с помощью JTS или NTS?

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

введите описание изображения здесь

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

введите описание изображения здесь


person DuckQueen    schedule 30.05.2018    source источник
comment
В качестве указателей в правильном направлении ... для каждого многоугольника вы можете взять внешнее кольцо и затем начать итерацию, вычисляя углы по мере продвижения.   -  person GeoMesaJim    schedule 31.05.2018
comment
Что касается вычисления углов в каждой точке, это может помочь . Вы не говорите, заботитесь ли вы о внутренних или внешних углах, поэтому я оставлю это вам, чтобы выяснить ...   -  person DavidW    schedule 06.06.2018
comment
Вопрос не непонятный. Однако он мог бы использовать некоторый контекст. Какова главная цель?   -  person N-ate    schedule 07.08.2018


Ответы (1)


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

  • Создайте многоугольники и используйте функцию union
  • Затем выполните итерацию по координатам и создайте подмассив для каждого «жесткого угла» (отрицательное скалярное произведение) и когда сумма углов достигнет 180 (не выбирайте последний угол, чтобы избежать нефункциональных проблем)
  • Затем я меняю базу на ортонормированную базу с помощью x(firstElemOfSubArray, lastElemOfSubArray), вычисляя матрицу изменения базы, а затем повторно вычисляю подмассив в новой системе координат.
  • Затем я создаю функцию, используя org.apache.commons.math3.analysis.interpolation.SplineInterpolator для интерполяции функции курса, а затем получаю производную и ищу экстремумы (не берите элементы со слишком низкой ординатой). С его абсиссом вы можете определить, какая точка является точкой перегиба
  • Таким образом, точка, которую вы ищете, - это первые элементы каждого подмассива и его точки перегиба (если они есть)
person Arnault Le Prévost-Corvellec    schedule 18.06.2018
comment
это целый проект, мне нужно закончить это, а затем подтолкнуть его куда-нибудь - person Arnault Le Prévost-Corvellec; 19.06.2018