日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

正文

游戲數(shù)學(xué)(38)

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


 

8.5.5  旋轉(zhuǎn)

圍繞任意一個軸進行旋轉(zhuǎn)的數(shù)學(xué)算法比前面介紹的要復(fù)雜得多。知道旋轉(zhuǎn)的具體工作原理并不重要,重要的是知道旋轉(zhuǎn)的結(jié)果。旋轉(zhuǎn)矩陣由一個軸u和一個標量值(θ)構(gòu)成,其中u被定義為一個歸一化向量,而θ用弧度作為單位描述了旋轉(zhuǎn)量。如果想要旋轉(zhuǎn)的模型是一個瓶塞,那么歸一化向量u可以用一個穿過瓶塞的針表示。角度(θ)代表針的旋轉(zhuǎn)量,針的旋轉(zhuǎn)會帶動瓶塞的旋轉(zhuǎn)。

public void SetRotate(Vector axis, double angle)

{

double angleSin = Math.Sin(angle);

double angleCos = Math.Cos(angle);

double a = 1.0 - angleCos;

double ax = a * axis.X;

double ay = a * axis.Y;

double az = a * axis.Z;

_m11 = ax * axis.X + angleCos;

_m12 = ax * axis.Y + axis.Z * angleSin;

_m13 = ax * axis.Z - axis.Y * angleSin;

_m21 = ay * axis.X - axis.Z * angleSin;

_m22 = ay * axis.Y + angleCos;

_m23 = ay * axis.Z + axis.X * angleSin;

_m31 = az * axis.X + axis.Y * angleSin;

_m32 = az * axis.Y - axis.X * angleSin;

_m33 = az * axis.Z + angleCos;

}

如果在一幀中多次使用正弦和余弦函數(shù),開銷是很大的,因此,代碼中將它們的使用降到了最低。軸向量應(yīng)該被歸一化,但是SetRotate中沒有對此進行檢查。


上一章目錄下一章

Copyright ? 讀書網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號