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

來源:互聯網
上載者:User

第二章 向量的運算(2)

7:向量的最大與最小值最大值是從兩個向量X,Y,Z值中分別取出最大值組成一個新向量;最小值是從兩個向量X,Y,Z值中分別取出最小值組成一個新向量;看以下代碼:               private void VectorMax()              {                     Vector3 vec1 =new Vector3(6,2,3);                     Vector3 vec2= new Vector3(1,2,5);                     Vector3 vec3=Vector3.Maximize (vec1,vec2);                     string disString="V(6,2,3)與V(1,2,5)最大值:/n";                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";                     MessageBox.Show(disString,"向量最大值");                    }執行結果為: 8:求兩個向量間的一個插值向量設有兩個向量pLeft,pRight,得到的向量值計算公式為:pLeft + interpolater(pRight - pLeft).舉例代碼如下:private void VectorLerp()              {                     Vector3 vec1 =new Vector3(6,2,3);                     Vector3 vec2= new Vector3(1,2,5);                     Vector3 vec3=Vector3.Lerp(vec1,vec2,0.5f);                     string disString="V(6,2,3)與V(1,2,5)之間的一個插值向量:/n";                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";                     MessageBox.Show(disString,"插值向量");                 }執行結果:顯然 3.5=6+(1-6)*0.5;2=2+(2-2)*0.5;4=3+(5-3)*0.5; 9:點積數學上定義點積是兩個向量的乘積。按下面等式計算:  點積有一個重要的定理稱為餘弦定律;u ? v =|u||v|cosθ,表示兩個向量的點積是它們的模長和夾角的餘弦之積。因此,如果u 和v都是單位向量,那麼u ? v就是它們夾角的餘弦。一些點積有用的特性(1)u ? v = 0,那麼u⊥v。(2)u ? v > 0,那麼兩個向量的角度θ小於90度。(3)u ? v < 0,那麼兩個向量的角度θ大於90度。比如以下求兩個向量的點積樣本:private void VectorDot()         {              Vector3 vec1 =new Vector3(6,2,3);              Vector3 vec2= new Vector3(1,2,5);              float dotValue=Vector3.Dot(vec1,vec2);              string disString="V(6,2,3)與V(1,2,5)的點積:/n"+dotValue.ToString();              MessageBox.Show(disString,"向量點積");             }執行結果如下: 10:叉積通過把兩個向量u和v相乘的到另一的向量p.把u和v兩個向量通過十字相乘得到向量p,向量p垂直於u和v。也就是說向量p垂直於u並且垂直於v。計算公式是: 也就是,得到後來的向量X,Y,Z值分別是: 注意:向量p垂直於u 和v所決定的平面,至於方向因左右手座標系不同而不同;以下代碼為在XOY平面內兩個向量作叉積,最後返回的值垂直於XOY平面,也就是說平行於Z軸;     private void VectorCross()         {              Vector3 vec1 =new Vector3(6,4,0);              Vector3 vec2= new Vector3(-1,2,0);              Vector3 vec3=Vector3.Cross(vec1,vec2);              string disString="V(6,4,0)與V(-1,2,0)的叉積:/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/1666609.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.