利用 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 的長度就會求出來.

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

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

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*