计算直线与 x 轴之间角度的最快方法是什么?
我需要定义一个函数,它在 PI:2PI 区间内是单射的(我必须在最上面的点和下面的任何点之间形成角度)。
PointType * top = UPPERMOST_POINT;
PointType * targ = TARGET_POINT;
double targetVectorX = targ->x - top->x;
double targetVectorY = targ->y - top->y;
第一次尝试
//#1
double magnitudeTarVec = sqrt(targetVectorX*targetVectorX + targetVectorY*targetVectorY);
angle = tarX / magTar;
第二次尝试
//#2 slower
angle = atan2(targetVectorY, targetVectorX);
我不需要直接的角度(弧度或度数),任何值都可以,只要通过从 2 个点比较这些值,我就可以判断哪个角度更大。 (例如,示例一中的角度在 -1 和 1 之间(它是余弦参数))
最佳答案
像 atan2 一样检查 y 是否为零;那么商 x/y 就足够了。 (假设我理解正确)。
关于c++ - 用 x 轴计算角度的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868115/