Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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++ 这个代码是如何工作的?俯仰和偏航_C++_Trigonometry_Pitch_Triangle - Fatal编程技术网

C++ 这个代码是如何工作的?俯仰和偏航

C++ 这个代码是如何工作的?俯仰和偏航,c++,trigonometry,pitch,triangle,C++,Trigonometry,Pitch,Triangle,我最近正在研究如何为游戏创建简单的机器人,有两种方法可以做到这一点:1是使用atan2和sin计算俯仰和偏航 但还有另一种方法,人们是如何计算的,我的问题是它是如何工作的? 代码: 我想象人们是如何做到这一点的 如果有人知道这段代码是怎么回事,你能解释一下它是如何计算有效值的吗。例如,它不能计算第三象限和第二象限的角度,那么它对其他象限的角度又是如何工作的呢?为什么他们要用对边而不是斜边来计算三角形的邻接?我不会问这个代码是否是一个单独的案例,但我已经在很多案例中看到了它 代码似乎确实错了。

我最近正在研究如何为游戏创建简单的机器人,有两种方法可以做到这一点:1是使用atan2和sin计算俯仰和偏航

但还有另一种方法,人们是如何计算的,我的问题是它是如何工作的?

代码:

我想象人们是如何做到这一点的

如果有人知道这段代码是怎么回事,你能解释一下它是如何计算有效值的吗。例如,它不能计算第三象限和第二象限的角度,那么它对其他象限的角度又是如何工作的呢?为什么他们要用对边而不是斜边来计算三角形的邻接?我不会问这个代码是否是一个单独的案例,但我已经在很多案例中看到了它


代码似乎确实错了。俯仰时应使用
atan
,偏航时应使用
atan2

double hyp = sqrt(delta[x] * delta[x] + delta[y] * delta[y]);
angles[0] = atan(delta[z] / hyp) * 180 / pi; // Pitch
angles[1] = atan2(delta[y] / delta[x]) * 180 / pi;  // Yaw
if(angles[1] < 0.0)
    angles[1] += 180;
double hyp=sqrt(δ[x]*δ[x]+δ[y]*δ[y]);
角度[0]=atan(δ[z]/hyp)*180/pi;//抛
角度[1]=atan2(δ[y]/δ[x])*180/pi;//偏航
如果(角度[1]<0.0)
角度[1]+=180;

数学的确是错的。我用谷歌搜索了你发布的代码:似乎是一些黑客社区,他们不擅长数学,但擅长复制粘贴错误的代码:
干得好,用勺子喂这些不注意高中数学课的新手。
我看不懂笔迹。我设法解释了“atan²”,但什么是“aɔim”?使用atan2。始终使用atan2。您想使用atan还是asin?停下来,再想想。唯一需要的反向三角函数是atan2,没有例外。
double hyp = sqrt(delta[x] * delta[x] + delta[y] * delta[y]);
angles[0] = atan(delta[z] / hyp) * 180 / pi; // Pitch
angles[1] = atan2(delta[y] / delta[x]) * 180 / pi;  // Yaw
if(angles[1] < 0.0)
    angles[1] += 180;