8.2.5 法向量
法向量是長度為1的向量,也稱為單位向量。單位向量是在不考慮大小時表示方向的絕佳方式。歸一化(normalize)操作保持向量的方向不變,但是使其大小變?yōu)?。如果把一個單位向量與一個標(biāo)量相乘,得到的向量的長度會與標(biāo)量值相同。如果向量的長度未知,而想使其長度為6,就可以歸一化該向量,然后乘以6。
public Vector Normalize(Vector v)
{
double r = v.Length();
if (r != 0.0) // guard against divide by zero
{
return new Vector(v.X / r, v.Y / r, v.Z / r); // normalize and return
}
else
{
return new Vector(0, 0, 0);
}
}
從技術(shù)上來說,這段代碼并不正確,這是因?yàn)?向量是無法歸一化的,而這段代碼在歸一化0向量時沒有采取任何操作。通過計(jì)算向量的長度,然后把每個元素除以該長度,可以歸一化向量。歸一化向量的效果如圖8-10所示。