29

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

在此处输入图像描述

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

在此处输入图像描述

4

1 回答 1

1

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

  • 创建多边形并使用函数union
  • 然后遍历坐标,并在每个“硬角”(负标量积)和角度总和达到 180 时创建一个子数组(不要取最后一个角度以避免非功能问题)
  • 然后我通过计算基数变化矩阵将基数更改为正交基数,x(firstElemOfSubArray, lastElemOfSubArray)然后在新坐标系中重新计算子数组
  • 然后我创建一个函数,org.apache.commons.math3.analysis.interpolation.SplineInterpolator用于对课程的函数进行插值,然后我得到导数并搜索极值(不要取纵坐标太低的元素)。通过它的absysse,您可以找到哪个点是拐点
  • 所以你搜索的点是每个子数组的第一个元素,以及它的拐点(如果有的话)
于 2018-06-18T23:29:36.917 回答