如果让我们自己算,需要通过三角函数自己求。
好在,Three.js封装了自己的数学库,里面有相关的对象,叫Spherical
类。这是一个虚拟的球坐标类,我们可以定义一个点通过此类获取到当前的偏转弧度。
实例化此类需要三个值:radius
phi
theta
。
radius
代表当前点距离原点的距离。
phi
代表从Y轴正方向沿X轴的旋转角度。
theta
代表从Z轴正方向逆时针沿Y轴旋转的角度。
这三个值也是Spherical
类的属性,接下来我们尝试使用此类和一个顶点来获取到偏转的弧度。
已知一个点的坐标为 1,1,1 ,球它的偏转弧度,我们可以这样:
首先实例化一个类:
const spherical = new THREE.Spherical();
然后通过类的方法:setFromVector3
传入一个三维坐标对象,或者setFromCartesianCoords
依次传入xyz三轴的坐标:
spherical.setFromCartesianCoords(1, 1, 1);
然后依次打印它的三个属性
console.log(spherical.radius); //1.7320508075688772
console.log(spherical.phi/ Math.PI * 180); //54.73561031724534
console.log(spherical.theta/ Math.PI * 180); //45
说明此点,从y轴偏转了45度,然后从y轴正方向向下偏转了54度多,距离原点是1.73左右。