如何计算x-y平面上两个3d向量之间的角度

时间:2019-06-24 13:33:50

标签: vector

Vector1(-0.241844763,-0.664463024,0.707106781) vector2(0.5,0.5,0.707106781)

我可以看到CAD系统报告X-Y平面为155度。 如何通过编程进行计算?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用y与x的比值的反正切值来获得描述每个矢量旋转的角度(假设您希望在Oxy平面上绘制一个角度)。 然后,您可以将一个向量的角度减去另一个向量的角度:

atan2(vector1.y, vector1.x)-atan2(vector2.y, vector2.x)

其中atan2通常定义为

atan2(y, x) {
    if(x==0) {
        if(y<0) {
            return PI/2;
        } else {
            return -PI/2;
    } else {
        angle=atan(y/x);
        if(x<0 && y>=0) {
            angle+=PI
        } else if(x<0 && y<0) {
            angle-=PI
        }
        return angle;
    }
}

返回-PI和PI之间的角度;因此它覆盖了整个圆圈,而不是一半。