)Managed DirectX +C# 開發(入門篇)(二)

來源:互聯網
上載者:User
第二章 向量的運算(1) 1:向量相等幾何學上,有同樣方向和長度的兩個向量相等。數學上,我們說有同樣維數和分量的向量相等。例如:如果ux = vx, uy = vy, 且 uz = vz.那麼(ux, uy, uz) = (vx, vy, vz)。在代碼中我們能夠用“= =”判斷兩個向量相等。 2:向量模長向量的大小是有向線段的長度。知道向量的分量,利用下面的公式就能計算出向量的大小。‖u‖表示向量u的長度。例如:計算向量u = (1, 2, 3)和v = (1, 1)的大小。根據公式(1),我們得到:在DirectX中,向量的Length()方法可以得到向量模長,例如:Vector3 vec =new Vector3(1,2,3);MessageBox.Show("向量V(1,2,3)的模長為:/n"+vec.Length().ToString());執行結果:另外一個有用的方法是Vector.LengthSq(),求得的是向量模長的平方,在實際中,它的用途可能超過Length();如果在一個程式中前面需求模長,後面又要對模長平方運算,用此方法就省去了許多計算,我們知道,開平方運算對電腦來說是其實是個痛苦的事情; 3:向量單位化向量單位化就是讓向量的大小等於1,叫作單位向量。能利用向量大小以及各個分量把一個向量單位化:比如,對於向量u = (1, 2, 3) 和 v = (1, 1)。單位化方法如下首先,利用前面的求向量模長公式得到‖u‖=√14 和 ‖v‖=√2,因此:以下代碼是將向量單位化以後,看看向量的值及模長:Vector3 vec =new Vector3(1,2,3);                     vec.Normalize();                     string disString="向量V(1,2,3)單位化以後為:/n";                     disString+="V("+vec.X.ToString()+" ,"+vec.Y.ToString()+" ,"+vec.Z.ToString()+")/n";                     disString+="單位化以後的模長為:"+vec.Length().ToString();                     MessageBox.Show(disString,"向量的單位化");程式執行結果如下: 4:向量相加能夠通過分別把兩個向量的各個分量相加得到向量之和,注意在相加之前必須保證它們有相同的維數。下面圖中顯示的是向量相加幾何表示:以下代碼顯示兩個向量的相加,並把相加後的結果顯示出來:                     Vector3 vec1 =new Vector3(1,2,3);                     Vector3 vec2 =new Vector3(3,4,5);                     Vector3 vec3=Vector3.Add(vec1,vec2);                     string disString="V(1,2,3)+V(3,4,5):/n";       disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";       MessageBox.Show(disString,"向量的相加");執行結果如下: 5:向量相減和加法類似,通過分別把兩個向量的各個分量相減得到向量之差。圖中顯示的是幾何學上的向量相減。以下代碼顯示兩個向量的相減,並把相減後的結果顯示出來:private void VectorSubtract()              {                     Vector3 vec1 =new Vector3(1,2,3);                     Vector3 vec2 =new Vector3(3,4,5);                     Vector3 vec3=Vector3.Subtract(vec1,vec2);                     string disString="V(1,2,3)-V(3,4,5):/n";                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";                     MessageBox.Show(disString,"向量的相減");                           }執行結果如下: 6:向量的數乘用一個數與向量相乘,向量按比例變化。用負數去乘改變方向。以下代碼計算向量的數乘:private void VectorScale()              {                     Vector3 vec1 =new Vector3(1,2,3);                     Vector3 vec3=Vector3.Scale (vec1,10);                     string disString="V(1,2,3)乘以10:/n";                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";                     MessageBox.Show(disString,"向量的數乘");                    }執行結果是:轉自:dandancool http://blog.csdn.net/dandancool/archive/2007/06/26/1666603.aspx
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.