以弧度计算一个点围绕另一个点的旋转

时间:2011-01-13 19:13:30

标签: c# xna game-engine xna-4.0

我一直试图解决这个问题一周,并得到一个解决方案。我所拥有的是2d空间中的2个点,我需要解决的是一个旋转的是另一个。幸运的是,附图将有所帮助,我需要能够计算的是b周围的旋转值。

alt text

我发现很多东西都指向找点产品等,但我仍然在寻找那个黄金解决方案:o(

谢谢!

3 个答案:

答案 0 :(得分:5)

Vector2 difference = pointB - pointA;

double rotationInRadians = Math.Atan2(difference.Y, difference.X);

请参阅http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx以供参考。

答案 1 :(得分:0)

猜测:

  • 1。)找到A,B行的斜率m。
  • 2。)将斜率转换为角度theta = arctan(m)
  • 3.。)将角度投影到以A点为中心的笛卡尔坐标系中的象限,以获得归一化角度

答案 2 :(得分:0)

我假设正东(沿着X轴,向右)是零弧度,+ x指向右边,+ y指向下。

B相对于A的方位是

angle = Arctan2 [(A_y - B_y)/(B_x - A_x)]

使用正确的函数计算正确的象限(可能是Math.Atan2