OpenGL——单位向量点乘和叉乘在几何的应用
一、单位向量点乘的几何应用
二、单位向量叉乘的几何应用
1. 计算平面法向量
若 u 和 v 为不共线的单位向量,则:n=u×v
- 性质:n 是垂直于 u 和 v 所在平面的单位法向量(前提是 u 和 v 正交)。
- 应用:计算平面方程、多边形法向量(如 3D 模型面的朝向)。
2. 求两向量张成的平行四边形面积
若 u 和 v 为单位向量,则:∣u×v∣=sinθ
- 应用:计算面积(如三角形面积为 21∣u×v∣),或判断向量间的正交程度(sinθ 越接近 1,越正交)。
3. 向量旋转
在三维空间中,利用叉乘和点乘可构造旋转矩阵(Rodrigues 旋转公式):vrot=vcosθ+(k×v)sinθ+k(k⋅v)(1−cosθ)
- 其中 k 为单位旋转轴,θ 为旋转角度。
- 应用:3D 图形中的旋转变换(如相机视角旋转)。
4. 判断向量相对方向(左手 / 右手定则)
叉乘结果 u×v 的方向遵循右手定则:
- 应用:确定坐标系方向、判断点在平面的哪一侧(如背面剔除算法)。
三、综合应用示例
1. 3D 渲染中的光照计算
- 漫反射光照:使用单位法向量 n 和单位光线方向 l 的点乘计算入射角(计算法向量与光照方向的夹角),确定像素亮度:光照强度=max(0,n⋅l)。
- 叉乘应用:由顶点坐标计算面的单位法向量,用于光照和阴影计算。
2. 计算机图形中的坐标系统
- 构造正交基:给定一个单位向量 u,通过叉乘找到与之垂直的另外两个单位向量,构成正交坐标系(如 OpenGL 中的模型矩阵)。
3. 机器人运动学
- 角速度计算:单位旋转轴 k 与线速度 v 的叉乘得到角速度:ω=k×v
四、单位向量运算的优势
- 简化计算:避免模长计算,直接聚焦于方向关系。
- 统一量纲:结果无量纲(如点乘结果直接是余弦值)。
- 几何直观:运算结果直接对应角度、面积等几何量。
五、注意事项
- 叉乘结果不一定是单位向量:仅当 u 和 v 正交时,∣u×v∣=1。若非正交,需归一化:n=∣u×v∣u×v
- 数值稳定性:在计算机实现中,浮点误差可能导致单位向量不精确,需定期归一化。
运算 | 几何意义 | 单位向量特性 | 典型应用 |
---|---|---|---|
点乘 | 度量向量方向相关性 | 结果为 \(\cos\theta\),范围 \([-1, 1]\) | 夹角计算、投影、光照模型 |
叉乘 | 生成垂直于两向量的新向量 | 模长为 \(\sin\theta\),方向由右手定则确定 | 法向量计算、面积计算、3D 旋转 |
总结
单位向量的点乘和叉乘是几何计算的基础工具,广泛用于计算角度、法向量、面积、旋转等问题,特别适合需要忽略模长影响、专注方向关系的场景(如 3D 图形、机器人学、物理学)。