如何使用JTS或NTS查找曲线角点?

2022-09-01 13:28:40

我有一条曲线(比如说JTS边缘):

enter image description here

如何使用 JTS (Java)NTS (C#) 查找超过给定角度的所有曲线方向变化点:

enter image description here


答案 1

我做了一些研究,并在JTS上做了一些测试,我发现的最好的方法是:

  • 创建多边形并使用函数union
  • 然后迭代坐标,并在每个“硬角”(负标量积)上创建一个子数组,当角度之和达到180时(不要采用最后一个角度以避免非函数问题)
  • 然后,我通过计算基数变化矩阵将基数更改为正交基数,然后在新的坐标系中重新计算子数组x(firstElemOfSubArray, lastElemOfSubArray)
  • 然后,我创建一个函数来插值课程的函数,然后我得到导数并搜索极值(不要采用具有太低纵坐标的元素)。通过其absysse,您可以找到哪个点是拐点org.apache.commons.math3.analysis.interpolation.SplineInterpolator
  • 因此,您搜索的点是每个子数组的第一个元素,以及它的拐点(如果有的话)

答案 2

推荐