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

时间:2018-05-30 21:38:48

标签: java c# .net jts

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

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:1)

我做了一些研究并对JTS进行了一些测试,我找到的最好的方法是:

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