Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法将值分配给double_C++ - Fatal编程技术网

C++ 无法将值分配给double

C++ 无法将值分配给double,c++,C++,我正在做一个项目。这里使用的每个变量都存储为double。 问题是我有一个二维速度向量,它有两个坐标,我想计算向量和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.

我正在做一个项目。这里使用的每个变量都存储为double。 问题是我有一个二维速度向量,它有两个坐标,我想计算向量和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;
#定义PI 3.14159265358979323846
双θ1;
θ1=atan(v1y/v1x);
如果(v1x<0.0)
如果(v1y>0.0)
θ1=θ1+(π/2.0);
其他的
θ1=θ1-(π/2.0);
其他的
当我尝试使用Theta1时,它似乎没有被第一个if操作修改。我的意思是它从未添加(+/-)PI/2.0,但如果我只是尝试一下

cout << Theta + PI/2.0 << endl;

cout如果
v1x
大于或等于零,
Theta
将不会被修改,因为它随后进入外部
If
语句的
else
子句,该语句不包含任何代码

如果
v1x
为负值,那么除了编译器错误,
Theta
将改变。我建议:

std::cout << Theta1 << '\n';

std::cout如果
v1x
大于或等于零,
Theta
将不会被修改,因为它随后进入外部
If
语句的
else
子句,该语句不包含任何代码

如果
v1x
为负值,那么除了编译器错误,
Theta
将改变。我建议:

std::cout << Theta1 << '\n';

std::cout切线的周期是
π
,因此您的调整不正确,应该是
±π
。也就是说,当两个坐标都为负时,商和
atan
的结果将为正,即介于
0
π/2
之间的值。然后减去
π/2
,得到
-π/2
0
之间的负值,但几何上应该得到
-π/2
之间的负值


此外,您应该使用atan2,它可以提供正确的角度,而无需调整。

切线的周期是
π
,因此您的调整不正确,应该是
±π
。也就是说,当两个坐标都为负时,商和
atan
的结果将为正,即介于
0
π/2
之间的值。然后减去
π/2
,得到
-π/2
0
之间的负值,但几何上应该得到
-π/2
之间的负值


此外,您应该使用
atan2
,它可以在不进行调整的情况下为您提供正确的角度。

您最好使用
atan2
,这涉及到开箱即用的角度。上面提供了一些更多的信息。您可以粘贴用于测试的v1y和v1x吗?根据#define PI 3.14…当v1x==0时,您将遇到一些问题。我支持使用
atan2
而不是
atan
的建议。你最好使用
atan2
,它处理开箱即用的角度。上面提供了一些更多的信息。你能粘贴你用于测试的v1y和v1x吗?根据#define PI 3.14…当v1x==0时,你会遇到一些麻烦。我支持使用
atan2
而不是
atan
的建议。当向量的水平坐标大于0时,就不需要添加我想要添加的内容。@patryk,你没有领会我的意思。您声明该值不会更改。根据给出的信息(不包括
v1x
值),我给出了一个合理的原因。运行此代码时,
v1x
的值是多少?如果它是非负的,这个答案解释了原因。当v1x大于0时,我不需要改变θ,因为atan返回一个正确的值。然而,如果x坐标为负,那么基于y,我想确定θ是否在
+pi/2
+pi
之间,或者
-pi
-pi/2
之间。这是一组数据,应该使θ在135度左右
v1=-99x94θ1=46.484
@patryk,让我再问一下:当测试表明θ没有变化时,v1x的值是多少?这是至关重要的信息<代码>-99x94
因为v1的“值”在v1x的上下文中没有意义。好的,我发现了我的错误。在理解要点之前,你需要阅读几遍你的回复。非常感谢当
v1x
即向量的水平坐标大于0时,则无需添加我要添加的内容。@patryk,您没有领会我的意思。您声明该值不会更改。根据给出的信息(不包括
v1x
值),我给出了一个合理的原因。运行此代码时,
v1x
的值是多少?如果它是非负的,这个答案解释了原因。当v1x大于0时,我不需要改变θ,因为atan返回一个正确的值。然而,如果x坐标为负,那么基于y,我想确定θ是否在
+pi/2
+pi
之间,或者
-pi
-pi/2
之间。这是一组数据,应该使θ在135度左右
v1=-99x94θ1=46.484
@patryk,让我再问一下:当测试表明θ没有变化时,v1x的值是多少?这是至关重要的信息<代码>-99x94
因为v1的“值”在v1x的上下文中没有意义。好的,我发现了我的错误。在理解要点之前,你需要阅读几遍你的回复。非常感谢你