1

一周以来,我一直在努力解决这个问题,并且必须找到解决方案。我所拥有的是 2d 空间中的 2 个点,我需要解决的是一个点围绕另一个点的旋转。幸运的是,附图会有所帮助,我需要能够计算的是 b 围绕 a 的旋转值。

替代文字

我发现了很多指向找到点积等的东西,但我仍在寻找那个黄金解决方案:o(

谢谢!

4

3 回答 3

5
Vector2 difference = pointB - pointA;

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

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

于 2011-01-13T19:22:46.843 回答
0

一个猜想:

  • 1.) 求直线 A、B 的斜率 m。
  • 2.) 将斜率转换为角度 theta = arctan(m)
  • 3.) 将角度投影到以点 A 为中心的笛卡尔坐标系中的象限,以获得归一化角度
于 2011-01-13T19:18:55.347 回答
0

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

B 相对于 A 的方位角是

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

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

于 2011-01-13T19:21:16.603 回答