利用 Vector dot product 快速求得多條 Vector 的最終長度.

利用 Vector dot product 快速求得多條 Vector 的最終長度.

先從簡單的 Vector 增加說起. (網上找的圖)

由上圖可見 A+B+C+D 跑了很多路然後實際的移動只是粗黑箭咀的移離.
在公司的老外教導下才發現 Unity3D 中提供的 Vector3.Dot
在其中一邊的Vector是 Normalize (Length = 1f) 的時候, 其實可以用作觀察 vector length 的手段.

Vector3 vectors = A + B + C + D;
Vector3 perspective = vectors.normalized;
float vectorLength = Vector3.Dot(perspective, vectors);
Vector3 answer = perspective * vectorLength;

概念上是把 perspective 那一條 vector 當作是觀察的基準線 axis,
把 vectors 投射到該 axis 上,然後因為 1f 的特性所以另一條 vectors 的長度就會求出來.

也不清楚對不對~ 總之先記下日後再研究.

更新:

這種應用叫outer product,借matrix的運算(複雜化)來取得地形資訊的投影手段之一

Ref : https://www.mathsisfun.com/algebra/vectors-dot-product.html
Ref : https://betterexplained.com/articles/vector-calculus-understanding-the-dot-product/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料