threejs向量夹角和夹角方向

计算向量的夹角

计算向量的夹角:

v1 = new THREE.Vector3(5,0,0);
v2 = new THREE.Vector3(5,5,0);
v1.angleTo(v2);  //0.7853981633974484
v2.angleTo(v1);  //0.7853981633974484

可见,向量的夹角是没有方向的。但是有时候,又需要计算夹角的方向,可以使用下面的方法。

计算向量夹角的方向

从那个向量转向那个向量首先要确定是用左手坐标系还是右手坐标系

要确定角度的方向,就用叉乘

用opengl作为例子,opengl是右手坐标系,z轴朝向屏幕外。比如有向量v1,和v2。

确定角度的方向用叉乘

v1×v2 得到的向量朝向屏幕外的话,说明就是角度就是逆时针方向,否则为顺时针方向。左手坐标系则相反。

相关讨论参考【请教如何求两个向量的夹角,需要带方向的】,线性代数参考【向量的内积】,在threejs中,Vector3类已经定义了叉乘方法:

let v1 = new THREE.Vector3(3,4,0);
let v2 = new THREE.Vector3(7,11,0);
v1.cross(v2);
if(v1.z>0){
  //角度是逆时针方向的
}else{
 //角度是顺时针方向的
}

猜你喜欢

转载自blog.csdn.net/ruangong1203/article/details/60477017