1

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

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 为零的情况。我的问题是我并不完全了解底层数学,所以我很难适应代码。

我的问题是:如何调整这种方法以返回适当的偏航?为什么它不能在 ints 当前状态下工作?

谢谢你的帮助和问候,scr

4

1 回答 1

8

通常,人们会使用atan2(记录在这里这里

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

double yaw = atan2(dy, dx);

这个版本的代码应该会给你你正在寻找的东西。

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

于 2012-11-22T17:43:28.443 回答