从众多解决方案中选择正确的解决方案
本文关键字:解决方案 选择 | 更新日期: 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度。