我有两个标准化向量: A)0,0,-1 B)0.559055,0.503937,0.653543如何计算从一个矢量旋转到另一个矢量所需的角度?
我想知道,它会采取什么样的旋转绕轴采取矢量为(0,0) ,-1到0.559055,0.503937,0.653543?
我该如何计算?类似的,旋转X轴40度和Y轴220(这只是一个例子,但我不知道该怎么做)。
我有两个标准化向量: A)0,0,-1 B)0.559055,0.503937,0.653543如何计算从一个矢量旋转到另一个矢量所需的角度?
我想知道,它会采取什么样的旋转绕轴采取矢量为(0,0) ,-1到0.559055,0.503937,0.653543?
我该如何计算?类似的,旋转X轴40度和Y轴220(这只是一个例子,但我不知道该怎么做)。
检查this了。 (谷歌是件好事)
这将计算两个向量之间的角度。 如果向量A是(AX,AY,AZ)和
矢量B是(BX,BY,BZ),然后
它们之间角度的cos为:
(ax*bx + ay*by + az*bz)
--------------------------------------------------------
sqrt(ax*ax + ay*ay + az*az) * sqrt(bx*bx + by*by + bz*bz)
为了计算角度投影到xy平面上的两个矢量之间,只需忽略z坐标。
角的余弦在x-y平面=
(ax*bx + ay*by)
--------------------------------------
sqrt(ax*ax + ay*ay) * sqrt(bx*bx + by*by
同样,计算在x-z平面的两个向量的投影之间的角度,忽略的y坐标。
这听起来像你想从笛卡尔坐标(X,Y,Z)到球面坐标(RHO,θ,PSI)转换。
因为它们都是单位向量,所以rho的半径将为1.这意味着您的大小也将为1,您可以跳过整个分母并仅使用点积。
在X/Y平面(绕Z轴)旋转将是你的第一个例子很困难的(0,0,-1),因为它在X或Y没有扩展名所以没有什么旋转。 (0,0,-1)与(1,0,0)或(0,1,0)成90度。如果取x轴成为2θ位置的0角,则通过在施加逆余弦计算披(旋转关闭X/Y平面的)(X,Y,Z)和( x,y,0),然后你可以跳过点积,并用atan2(y,x)得到theta(x/y旋转)。
当心gimbal lock这可能引起问题。
得到一个角度。我不知道这是什么意思?我想要在x,y旋转上的角度,它会使我从0,0,-1到0.559055,0.503937,0.653543。我从中获得了一个角度,我该怎么处理它? – 2013-04-06 21:30:07
这会计算角度,你用它来做什么取决于你...你计算的是什么?你想把这个角度分成两个部分吗? – 2013-04-06 21:35:35
这并不能告诉我如何从3D中获得0,0,-1到0.559055,0.503937,0.653543(3个角度)。它接近130度,但不是在X,Y和Z轴上旋转。 – 2013-04-06 21:35:52