向量归一化就是将一个向量的长度变为1,同时保持它的方向不变。
想象一下:不管一支箭有多长,它指向的方向是一样的。归一化就是把所有的箭都调整成相同的长度(1),但仍然指向原来的方向。
假设有向量 \(\vec{v} = (x, y, z)\),归一化步骤:
1. 计算向量长度:\(|\vec{v}| = \sqrt{x^2 + y^2 + z^2}\)
2. 每个分量除以长度:\(\vec{u} = \frac{\vec{v}}{|\vec{v}|} = (\frac{x}{|\vec{v}|}, \frac{y}{|\vec{v}|}, \frac{z}{|\vec{v}|})\)
有一个向量 \(\vec{v} = (3, 4)\)
1. 计算长度:\(|\vec{v}| = \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5\)
2. 归一化:\(\vec{u} = (\frac{3}{5}, \frac{4}{5}) = (0.6, 0.8)\)
验证:\(|\vec{u}| = \sqrt{0.6^2 + 0.8^2} = \sqrt{0.36 + 0.64} = \sqrt{1} = 1\) ✓
想象你站在原点,用手指向某个方向:
控制角色移动方向,无论玩家按键力度如何
计算光照效果,确定表面法线方向
特征归一化,提高算法性能