【问题标题】:getting rotation angle from moving object's speed x,y?从移动物体的速度x,y获得旋转角度?
【发布时间】:2013-03-24 12:25:14
【问题描述】:

根据运动物体的速度或运动矢量方向确定运动物体旋转角度的公式是什么?

例如,如果一架飞机从位置 (x0, y0) = (0,0) 向位置 (x1,y1) = (200, 100) 移动,飞机将面向哪个角度?

【问题讨论】:

  • 看看this example。它基本上计算对象必须具有的方向才能遵循给定的路径。
  • 速度是速度增加或减少的速度,它并没有说明物体正在走的曲线。例如,飞机可以走直线,因此角度为 0,但飞机可以走较宽的曲线,使角度为 90...
  • 取决于“旋转角度”的含义。如果您指的是从 (0,0) 发出的光线沿 x 轴和从 (0,0) 发出并穿过 (200,100) 的光线所形成的角度,那么简单的三角函数可以告诉您。如果您的意思是别的意思,恐怕您需要先说出那是什么,然后才能回答您的问题。
  • 这将是 SAS - Side Angle Side trig
  • 感谢您的回复。大声笑我觉得我的数学真的很烂。我的意思是简单地从每秒移动 x:2 y:3 的对象获取角度(0-360 度)。我记得公式很简单,但不记得到底是什么。

标签: java flash math actionscript formula


【解决方案1】:

旋转角度显然是指方位角。函数Math.atan2(dy, dx) 是正确的方法。在您使用p1 = (x1, y1) = (200,100)p0 = (x0, y0) = (0,0) 的示例中,您需要Math.atan2(y1 - y0, x1 - x0)。这将以弧度返回角度。要转换为度数,请乘以 180 / Math.PI

【讨论】:

  • +1。假设您使用问题标签在 Flash 中工作,需要记住的一件事是 Math.atan2 返回一个相对于负 x 的角度,但 DisplayObject.rotation 是相对于负 y。
【解决方案2】:

要获得两点之间的角度,请将点插入以下代码:

var _radians:Number = Math.atan2(y2-y1, x2-x1);

“_radians”是以弧度为单位的角度。

要旋转一个DisplayObject,你可以在将角度转换为度数后使用它的旋转属性。

var _degrees:Number = _radians * ( 180 / Math.PI );
_displayObject.rotation = _degrees;

您可能需要在旋转中添加一个常量以与您的艺术保持一致。

【讨论】:

  • 是的,这正是我正在寻找的公式。感谢两位的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多