计算2D矢量的偏航

时间:2012-11-22 17:35:57

标签: c++ math vector

我有两个3D点(但z坐标始终为零)并且想要计算从这些点创建的方向向量的偏航。 我已找到this帖子,并根据它尝试了以下代码:

double p1_x, p1_y, p2_x, p2_y;
//initialize vars...

double dx = p2_x - p1_x;
double dy = p2_y - p1_y;

double yaw = atan(dx/-dy);

但是,如果我测试这种方法,我似乎会得到奇怪的结果。此外,这种方法似乎并不考虑dy为零的情况。 我的问题是我不完全了解基础数学,所以我无法适应代码。

我的问题是:这种方法如何适应以恢复适当的偏航?为什么它不能在一般的状态下工作?

感谢您的帮助&问候, SCR

1 个答案:

答案 0 :(得分:8)

通常,人们会使用atan2(记录为herehere

double dx = p2_x - p1_x;
double dy = p2_y - p1_y;

double yaw = atan2(dy, dx);

此版本的代码应该可以为您提供所需的内容。

如果你想要一个以度为单位的值,你可以乘以180 / PI