three计算一个切线方向和它在 𝑥 x-平面上的法向量
1. 计算切线方向
const tangent = nextPoint.clone().sub(currentPoint).normalize();
解释:
-
nextPoint和currentPoint: 分别表示当前点和下一个点的THREE.Vector3对象。 -
sub: 计算两个点的向量差(nextPoint - currentPoint),即从currentPoint指向nextPoint的向量。这是路径上的切线向量。 -
normalize: 将切线向量标准化为单位向量,确保它的长度为 1。
结果:
tangent是一个单位向量,表示路径上某段的方向。
2. 计算法线方向
const normal = new THREE.Vector3(-tangent.z, 0, tangent.x).normalize();
解释:
-
法线的定义:
-
法线是与切线垂直的向量。在这里,我们只考虑 xx-平面(xzxz-平面)上的法线。
-
忽略了 yy 分量,因此法线的 yy 分量设为 0(仅考虑水平面上的分量)。
-
-
new THREE.Vector3(-tangent.z, 0, tangent.x):-
法线通过将切线的 xx 和 zz 分量互换并改变符号构造。
-
如果切线是 (tx,ty,tz)(t_x, t_y, t_z),则法线的计算公式为:
法线=(−tz,0,tx)\text{法线} = (-t_z, 0, t_x) -
这个操作相当于逆时针旋转切线 90∘90^\circ(只在 xzxz-平面上)。
-
-
normalize:-
将法线向量标准化为单位向量。
-
结果:
normal是一个在 xzxz-平面上、与切线垂直的单位向量。

浙公网安备 33010602011771号