【发布时间】:2013-07-10 15:15:20
【问题描述】:
我在 JavaScript 中遇到了这个问题,但这个问题也适用于许多其他语言/环境。
我想让一个对象向另一个对象的位置旋转,我使用:
atan2(obj1.dy, obj1.dx) - obj2.getRotation()
检查第二个对象是否应该在给定时间顺时针或逆时针旋转。
在我使用的 JS/HTML5/Canvas 编程环境 KineticJS 中,角度以弧度为单位指定,从 0 到 2 pi 从正 Y 轴开始顺时针方向。这种行为也出现在许多其他编程环境中。
但是,当使用 Math.atan2(y,x) 函数计算从第二个对象的移动角度时,角度指定为从 -pi 到 pi,从正 X 轴开始, 逆时针方向。
澄清一下:
问题:
如何根据 atan2() 函数的结果计算以正常弧度表示的角度?
【问题讨论】:
-
"在 Javascript/HTML5/Canvas(以及许多其他编程环境)中,角度以 0 到 2 pi 的弧度指定,从正 Y 轴开始,顺时针方向." 您确定这是语言指定的约定,而不是您自己的代码库指定的约定吗?上次我使用画布时,我假设弧度从正 X 轴开始并逆时针移动,一切都按我预期的方式工作。
-
凯文,你可能是对的。事实上,我正在将 KineticJS 用于我当前的应用程序,它的行为方式与我所说的一样。我不确定如何在原始画布上下文中指定此约定。感谢您指出这一点,我会编辑它。