该方法用于获取BoundingSphere表面某一点的法向量。
getNormalFromSurfacePoint(point, optionalTarget)
point
:Vector3
类型,表示表面上的某一点。optionalTarget
:Vector3
类型,表示可选的输出目标向量,以避免在创建新对象时分配内存。该方法返回一个Vector3
类型,表示该点的法向量。
const sphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), 1);
const surfacePoint = new THREE.Vector3(1, 0, 0);
const normal = sphere.getNormalFromSurfacePoint(surfacePoint);
console.log(normal);
// 输出为:THREE.Vector3(-1, 0, 0)
在上面的示例中,我们创建了一个半径为1的BoundingSphere,并在其表面上选取了一个坐标为(1, 0, 0)的点作为需要求法向量的点。调用getNormalFromSurfacePoint
方法后,得到的结果为THREE.Vector3(-1, 0, 0),即该点处的法向量为沿着x轴反方向的一个向量。
该方法的实现是基于以下公式:
normal = point - center
normal.normalize()
其中,point
表示表面上的某一点,center
表示BoundingSphere的圆心。将point
减去center
得到一个从BoundingSphere圆心指向该点的向量,该向量即为该点处的法向量,最后需要调用normalize
方法将该向量归一化。