先從簡單的 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/