在三维空间threejs中寻找从原点到向量的旋转角度



我在三维空间中有一个向量。

有没有任何方法可以得到从原点到每个轴上这个向量的旋转角度。

也就是说,如果矢量在x=6,y=-10,z=20 上

从原点x=0,y=0,z=0在轴x上,y和z在向量的角度上。

试着从现在的某个时候开始用threejs来解决这个问题。非常感谢任何帮助

两个向量的角度可以用以下公式找到:v1•v2 = |v1||v2| cos(angle)要找到角度,需要acos,即2个向量的点积。

根据文档,在ThreeJS中,您可以找到这样的点产品:dotproductV1V2 = V1.dot(V2)

然后用acos的结果求出角度:Math.acos(dotproductV1V2)

编辑:

获取矢量各分量角度的示例:

var V1x = new THREE.Vector3(1, 0, 0)
var V1y = new THREE.Vector3(0, 1, 0)
var V1z = new THREE.Vector3(0, 0, 1)
var V2 = new THREE.Vector3(6, -10, 20)
var V2xz = new THREE.Vector3(V2.x, 0, V2.z)
var V2xy = new THREE.Vector3(V2.x, V2.y, 0)
//angle in radian between origin X axis and X axis of V2
var angle_V1V2x = Math.acos(V1x.dot(V2xz.normalize()))
//angle in radian between origin Y axis and Y axis of V2
var angle_V1V2y = Math.acos(V1y.dot(V2xy.normalize()))
//angle in radian between origin Z axis and Z axis of V2
var angle_V1V2z = Math.acos(V1z.dot(V2xz.normalize()))

最新更新