从asin解决方案中选择正确的方法

时间:2011-08-15 22:38:18

标签: c# sin angle

我得到了2个向量的大小,代表了车辆在南北和东西方向的速度。北方被认为是正南方负,东方正和西方负。显然它们彼此垂直。我可以使用毕达哥拉斯定理来计算两个向量的加法幅度,但是当涉及角度时就存在问题。我使用Math.asin但是给定正弦有两种解决方案。例如45和135的两个角具有相同的正弦。我怎么能指出asin方法我想从哪个解决方案,因为我从一开始就知道车辆是朝东北还是东南?

1 个答案:

答案 0 :(得分:1)

您可能希望使用Math.Atan2(y, x)而不是反正弦来获取方向以获得方向。 Atan2返回:

  • arctan(y / x)如果x!= 0且y!= 0(总是在(-pi,pi)中)
  • pi,如果y = 0且x <0。 0
  • 0如果y = 0且x> = 0
  • pi / 2如果x = 0且y> 0
  • -pi / 2如果x = 0且y <0。 0

(边界条件在MSDN documentation中定义)

例如,如果x = -1且y = 1,则Atan(-1,1)将为3pi / 4(135度)而不是45度。