C 计算两个3D向量之间的角度(0至360)



假设我有2个3D矢量

Vec3 v1, v2;
v1.x = 203;
v1.y = 355;
v1.z = 922;
v2.x = 6;
v2.y = 13;
v2.z = 198;

我将如何计算v1&amp之间的角度。v2?IE。最终答案将在0内到360

我尝试了

Vec3 angle = v1 - v2;

还有其他一些事情,但我似乎无法使它正常工作。

您需要为此使用点产品,一旦有了可以遵循标准方法。示例:

#include <cmath>
float dot(Vec3 a, Vec3 b)  //calculates dot product of a and b
{
    return a.x * b.x + a.y * b.y + a.z * b.z;
}
float mag(Vec3 a)  //calculates magnitude of a
{
    return std::sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
}
int main()
{
    Vec3 v1, v2;
    v1.x = 203;
    v1.y = 355;
    v1.z = 922;
    v2.x = 6;
    v2.y = 13;
    v2.z = 198;
    float angle = std::acos(dot(v1,v2)/(mag(v1)*mag(v2)));
}

最新更新