兩向量的夾角角度

「真不該把數學還給老師的!」
這句話自大學以來已經悔恨不知多少次了…
雖然是高中生的一個簡單的題目,終究還是還給老師,還是筆記下來比較實在XDD

原理:

  • 向量內積 (dot product)
    A dot B = |A| |B| cos(θ)

過程:


結論:

  • θ = Acos( (A dot B) / (|A| |B|) )


範例:

 // C# with XNA
 Vector3 A = new Vector3(1, 2, 3);
 Vector3 B = new Vector3(4, 5, 6);
 float A_dot_B = Vector3.Dot(A, B);
 float ALen_mul_BLen = A.Length() * B.Length();

 // 基本上A & B皆不應該為零,就略過檢查分母為零的狀況
 double theta = Math.Acos(A_dot_B / ALen_mul_BLen);

 // 這裡計算出來的theta是弧度(單位為π),可依照需求轉成度數
 // double degree = theta * 180 / 3.14;
 double degree = MathHelper.ToDegrees((float)theta);

範例2:

 // C# with XNA,將向量化的動作提前,結果是一樣的…吧~
 Vector3 A = new Vector3(1, 2, 3);
 Vector3 B = new Vector3(4, 5, 6);
 A.Normalize();
 B.Normalize();
 
double theta = Math.Acos(Vector3.Dot(A, B));

獻給已經將數學還給老師的同志們XDD

–End

3則迴響

  1. 這就跟整理舊書的時候 看到讓人懷念數學課本(誤… 隨手一翻再隨手一丟意思一樣嗎…XD

  2. 引用通告: Dot Product – NaCl's Blog

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.