向量模块需要实现的功能
- 基础运算:加减、数乘、点积、叉积、长度、归一化
- 几何计算:距离、投影、反射、插值(线性插值lerp、球面插值slerp)
- 坐标转换 Vec3->Vec4
- 向量加减
应用场景:
- 平移
- 相对位置计算,两点相减,得到两点方向向量
- 定位:局部坐标+世界坐标,实现位置计算
- 数乘
应用场景:
- 缩放
- 位移:将方向向量乘以定长得到固定长度的位移向量
- 法线缩放:非均匀缩放厚,法线向量需要数乘逆矩阵的转置,保证光照计算正确
- 点积
应用场景:
- 角度测量:通过点积计算两个向量夹角
- 可见性判断:相机视线向量和物体法线的点积,判断物体表面是否朝向相机(背面剔除)
- 投影计算:将向量投影到某一轴或平面上(如3D点投影到2D视图)
- 光照强度:光源方向和法线的点积,计算漫反射光照强度(影响模型的明暗显示)
- 叉积 应用场景:
- 法向量计算:三角形两个边向量的叉积,得到三角形的法向量(用于光照、拾取检测)
- 旋转方向判断:两个向量的叉积方向,判断旋转是顺时针还是逆时针
- 坐标系构建:通过叉积生成正交的三轴向量,构建局部坐标系
- 长度
应用场景:
- 距离:两点之间的长度
- 精度校验:判断向量长度是否接近0,判断两点是否重合
- 尺寸标注:提取向量长度作为尺寸标注数据
- 归一化
应用场景:
- 方向向量统一:将任意方向向量归一化,得到单位方向向量(如相机的观察方向、光源的照射方向)。
- 射线拾取:鼠标点击屏幕生成的射线。其方向向量归一化,确保射线检测的精度。
- 点积、叉积的正确计算