c++ - 找到两点之间角度的+/-符号的公式?

标签 c++ trigonometry

我一直在尝试寻找一个公式来确定汽车在给定两组坐标的情况下是左转还是右转。 x1,y1 在 t 秒,x2,y2 在 t+1 秒。到目前为止,我一直在使用这个:

double direction = atan2(y2 - y1, x2 - x1)

然后,我检查方向是正向还是负向,以确定汽车是向左转还是向右转。这行得通,但我根本不需要知道方向的。我只需要标志。另外,我想避免使用可能很昂贵的 atan2。我可以使用另一个公式吗?谢谢!


编辑1:

我有速度。两点之间的时间始终相差一秒,因此可以根据需要进行计算。


编辑2: 这就是我所说的转向的意思:我正在处理来自并非 100% 真实的交通模拟数据。通常,我有汽车的航向(以度为单位)。然而,当汽车改变车道时,航向不准确(似乎是沿对角线行驶)。所以,在这种情况下,我已经确定汽车正在改变车道。我需要将汽车的航向倾斜 20 度左右。我只需要弄清楚改变航向的方向,这就是为什么我需要弄清楚汽车在变道时“转弯”的方向。

最佳答案

atan2为正当且仅当 y 分量为正。

关于c++ - 找到两点之间角度的+/-符号的公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502033/

相关文章:

c++ - 如何让一个整数对数组按两个整数排序,同时仍然在 C 中关联它们?

c++ - 将 char* 复制到指定位置的 std::string 不分配新对象

c++ - Windows/MSVC 上的段错误等效吗?

ios - 计算与地板的角度

javascript - 如何以指定 Angular 将点平移到指定距离?

python - 在 Numpy 中从一个音高到另一个音高的正弦波滑音

c++ - 如何在 C++ 中有意保留和收获悬空指针

c++ - malloc() 和 realloc() 有什么区别?

旋转绘制的点以相对于另一组点重新投影

algorithm - 用区间确定sin波范围[a, b]的高效算法