我正在做一个项目。此处使用的每个变量都存储为双精度。问题是我有一个带有两个坐标的二维速度矢量,我想计算矢量和 OX 轴之间的角度,所以我使用Theta1 = atan(v1y / v1x);
. 不过,通过这种方法,我只能得到 -PI/2 之间的角度;PI/2,所以为了扩大我添加的范围
#define PI 3.14159265358979323846
double Theta1;
Theta1 = atan(v1y / v1x);
if (v1x < 0.0)
if (v1y > 0.0)
Theta1 = Theta1 + (PI/2.0);
else
Theta1 = Theta1 - (PI/2.0);
else;
当我尝试使用 Theta1 时,它似乎没有被第一个 if 操作修改。我的意思是它从不添加 (+/-)PI/2.0,但如果我只是尝试
cout << Theta + PI/2.0 << endl;
它打印修改后的 Theta1。我究竟做错了什么?似乎要么存在一些陷阱,要么我只是看不到一些简单的东西。