three计算一个切线方向和它在 𝑥 x-平面上的法向量

1. 计算切线方向

const tangent = nextPoint.clone().sub(currentPoint).normalize();

解释:

  • nextPointcurrentPoint: 分别表示当前点和下一个点的 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):

    • 法线通过将切线的 xxzz 分量互换并改变符号构造。

    • 如果切线是 (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-平面上、与切线垂直的单位向量。

 

 

posted @ 2025-05-18 03:13  SimoonJia  阅读(69)  评论(0)    收藏  举报