从众多解决方案中选择正确的解决方案

本文关键字:解决方案 选择 | 更新日期: 2023-09-27 18:05:54

我得到了代表车辆在南北和东西方向上的速度的两个矢量的大小。北方是积极的,南方是消极的,东方是积极的,西方是消极的。显然它们是互相垂直的。我可以用勾股定理计算这两个向量相加的大小,但是当涉及到角度时,有一个问题。我用Math.asin,但是对于给定的正弦函数有两个解。两个角,比如45和135有相同的正弦值。既然我从一开始就知道车辆是朝东北还是东南方向行驶,我怎么能指出我想要的解决方案?

从众多解决方案中选择正确的解决方案

您可能希望使用Math.Atan2(y, x)而不是arcsin来获取方向。Atan2回报:

  • arctan(y/x) if x!= 0 and y != 0 (always in (-pi, pi])
  • pi if y=0 and x <0
  • 0如果y=0且x>= 0
  • 当x=0且y> 0时pi/2
  • -pi/2 if x=0 and y <0

(边界条件在MSDN文档中定义)

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