algorithm - 从 x,y 坐标计算角度

标签 algorithm math collision-detection trigonometry

<分区>

Possible Duplicate:
Circle line collision detection

我正在尝试在有限线段和弧段之间进行碰撞测试。我有一个线段与线段的碰撞测试,所以我打算用线段来近似这些弧段并运行我现有的测试。

我定义弧段的数据是三个点。其中两个是圆周上的端点,第三个点是圆的圆心。

到目前为止,这是我得到的:

设 (a,b) 为圆心,'r' 为圆半径,(x1, y1), (x2, y2) 为位于圆上的圆弧段的端点圆的周长。

以下参数方程给出了弧的 x 和 y 位置。 't' 是参数变量。

x = a + r * 余弦(t) y = b + r * sin(t)

为了从圆弧创建线段,我想沿着圆弧走一些固定的“t”比率,沿途创建线段,直到我到达圆弧的末端。为此,我想我必须找到开始和结束角度。我将从起始角度开始走弧线,并在结束角度结束。因为我知道起点和终点,所以我想我可以使用这些方程来求解这些角度。以下是我的方程式:

t = arccos((x-a)/r)

t = acrcsin((y-b)/r)

我遇到的问题是这些函数 ( http://en.wikipedia.org/wiki/Inverse_trigonometric_function ) 返回的值的范围是有限的,所以很可能不会返回我正在寻找的角度,因为这些函数是多值的: arcsin(0) = 0,还有 arcsin(0) = π, arcsin(0) = 2π, 等等

如何获得我正在寻找的准确角度?或者,您能想出更好/不同的方法来实现我的目标吗?

最佳答案

看看 atan2 function ,它应该存在于您正在使用的任何编程语言或数学库中。它有两个参数,一个点的 x 坐标和 y 坐标(对您来说:(x-a)/r 和 (y-b)/r),并返回 -π 到 +π 范围内的角度。

关于algorithm - 从 x,y 坐标计算角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704987/

相关文章:

python - 递归算法中Python列表的可变性

algorithm - 循环的时间复杂度

algorithm - 如何优雅且命令式地生成字母表的第 n 个字符串?

c++ - 回文测试函数

java - 如何解释迭代最近点 (ICP) 算法的距离

python - 获取范围内至少出现 1 次 7 的数字数量

java - 找到具有不同整数的最长子数组

c++ - 如何进行正确的 2d 网格到圆碰撞检测

javascript - threejs 光线转换 - 相机和加载的对象模型之间的交集

java - 处理浮点精度问题(测试与SAT的碰撞)