Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于给定点,确定其是否位于圆弧段上_C#_.net_Geometry - Fatal编程技术网

C# 对于给定点,确定其是否位于圆弧段上

C# 对于给定点,确定其是否位于圆弧段上,c#,.net,geometry,C#,.net,Geometry,找了好几次都没找到,希望有人能帮我 我有一个弧段,由起点、终点和中心定义 我有一个点,p,我想知道它是否位于弧段上 我已经看到了一些解决方案,用于确定它是否在圆弧饼图中,但不在线段本身上 public static bool PointIsOnArcSegment(PointF p, PointF startPoint, PointF endPoint, PointF center) { ??? } 提前谢谢 编辑:扫描角度也是已知的。顺时针或逆时针不应将圆弧表示为三个点,而应将其表示为

找了好几次都没找到,希望有人能帮我

我有一个弧段,由起点、终点和中心定义

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

我已经看到了一些解决方案,用于确定它是否在圆弧饼图中,但不在线段本身上

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


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

不应将圆弧表示为三个点,而应将其表示为一个点,即圆心、起始角(如30度)、结束角(如45度)和半径


然后,要测试一个点是否在圆弧上,您只需计算出点与圆心的距离和角度,并使用阈值将其与半径和起点/终点角度进行比较。

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

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

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


额外提示:若要确定角度,请使用atan2函数,该函数可在整圈中工作。

如果您正在查找公式,则这听起来更像是一个数学问题,而不是编程问题。这就是为什么我在本文中也标记了几何体。虽然我可以在C中使用的方法/库/等也同样有用。你的评论没有什么帮助。请注意,一旦你有了公式,你可能会想使用公差,因为精确的值不能用浮点数表示。我的意思是,这可能是一个错误的问题-数学论坛可能会更好。但如果你能确定它是否在饼图范围内,那么我想你可以检查到从中心到起点或终点到中心的距离是否相同,以确定它是否在弧上。看到了吗?这更有帮助。