c++ - 计算二维 vector 的偏航

标签 c++ math vector

我有两个 3D 点(但是 z 坐标始终为零)并且想要计算从这些点创建的方向 vector 的偏航。 我已经找到了 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 为零的情况。 我的问题是我并不完全了解底层数学,所以我在调整代码时遇到了麻烦。

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

感谢您的帮助和问候, 脚本

最佳答案

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

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

double yaw = atan2(dy, dx);

这个版本的代码应该能满足您的需求。

如果您想要以度为单位的值,则可以乘以 180/PI

关于c++ - 计算二维 vector 的偏航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517663/

相关文章:

c++ - 在 C++ 中读取 SQL 表

c++ - 代码块错误突出显示

c - 斐波那契数列代码

R:你如何在代数上撤消加权平均值?

c++ - 使用 std::sort 对包含两个数据成员的对象 vector 进行排序

c++ - vector<T>::clear 可以抛出吗?

c++ - 错误 : no member named 'rank_' in 'EndIndex'

c++ - 有没有办法在C++中通过名称动态调用函数

c++ - 如何索引二十面体的面?

c++ - matrix.size() 和 matrix[0].size() 有什么区别?