对于给定点,确定它是否在弧段上

时间:2018-01-17 20:44:57

标签: c# .net geometry

看了几次这个并且无法找到它,所以希望有人可以帮助我。

我有一个弧段,由startPoint,endPoint和center定义。

我有一个观点,p,我想知道它是否位于弧段上。

我已经看到了一些解决方案,如果它在弧形饼中,但不在片段本身上。

public static bool PointIsOnArcSegment(PointF p, PointF startPoint, PointF endPoint, PointF center)
{
   ???
}

提前致谢。

编辑:扫描角度也是已知的。 (顺时针或逆时针)

2 个答案:

答案 0 :(得分:0)

不是将弧线表示为三个点,而应将其表示为单个点(中心),起始角度(例如30度),结束角度(例如45度)和半径。

然后,为了测试一个点是否在你的圆弧上你可以找出你的点与中心的距离和角度,并将其与半径和起点/终点角度(使用阈值)进行比较。

答案 1 :(得分:0)

将点转换为圆心周围的极坐标。

首先通过比较半径来检查测试点是否在整个圆上。很可能你需要一个相等的公差(半径的绝对差值给你点到圆的距离)。

如果第一次测试通过,请检查角度。这里的讨论有点复杂,因为你需要确定哪个角度间隔定义了你的弧,并处理“相位包裹”,即2π弧度的周期。

额外提示:要确定角度,请使用atan2功能,该功能可以完整转动。