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

Duc*_*een 29 .net c# java jts

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

在此输入图像描述

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

在此输入图像描述

Arn*_*lec 1

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

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