正文

游戲數(shù)學(12)

精通C#游戲編程 作者:(英)斯庫勒


 

8.2.5  法向量

法向量是長度為1的向量,也稱為單位向量。單位向量是在不考慮大小時表示方向的絕佳方式。歸一化(normalize)操作保持向量的方向不變,但是使其大小變?yōu)?。如果把一個單位向量與一個標量相乘,得到的向量的長度會與標量值相同。如果向量的長度未知,而想使其長度為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);

}

}

從技術上來說,這段代碼并不正確,這是因為0向量是無法歸一化的,而這段代碼在歸一化0向量時沒有采取任何操作。通過計算向量的長度,然后把每個元素除以該長度,可以歸一化向量。歸一化向量的效果如圖8-10所示。


上一章目錄下一章

Copyright ? 讀書網 hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號