【问题标题】:How to find curve corner points using JTS or NTS?如何使用 JTS 或 NTS 找到曲线角点?
【发布时间】:2018-11-09 20:11:38
【问题描述】:

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

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

【问题讨论】:

  • 作为一些指向正确方向的指针......对于每个多边形,您可以获取外环,然后开始迭代计算角度。
  • 计算每个点的角度this 可能会有所帮助。你没有说你是否关心内部角度和外部角度,所以我会让你弄清楚......
  • 这个问题并不清楚。不过,它可以使用一些上下文。总体目标是什么?

标签: java c# .net jts


【解决方案1】:

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

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

【讨论】:

  • 这是一个完整的项目,我需要完成这个然后把它推到某个地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
相关资源
最近更新 更多