gpt4 book ai didi

algorithm - 圆弧段中的点

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:07:30 26 4
gpt4 key购买 nike

我有一个圆,我想将其分成若干段,所有段均由 X 和 Y 坐标定义。如何测试点 (X, Y) 是否在特定段中?

最好有代码示例。

最佳答案

您不需要为此使用三角函数(一般来说,应尽可能避免使用三角函数……它会导致过多的精度、域和拐角问题)。

要确定点 P 是否相对于另一点 A 逆时针旋转(在由通过原点然后通过 A 的有向线的左侧定义的半平面中),您可以检查Ax*Py - Ay*Px 结果的符号。这通常称为“垂直点积”,与 3D 叉积的 Z 坐标相同。

如果有两个点 A 和 B(B 定义了 CCW 最大范围)定义了一个扇区,并且该扇区小于圆的一半,则 A 的 CCW 和 B 的 CW 的任何点都可以分类为在那个部门。

这样就只剩下一个大于圆圈一半的扇区了。显然,一组给定的点最多只能定义一个这样的扇区。您可以使用角二分法做一些聪明的事情,但最简单的方法可能是如果您不能将点分类为在任何其他扇区中,则将它们分类为在该扇区中。

哦,忘了提——确定点的顺序是为了将它们配对成扇区。不要违背我之前的建议,但这里最直接的事情就是按照它们的 atan2 对它们进行排序(不是 atan...永远不要使用 atan)。

关于algorithm - 圆弧段中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com