diff --git a/engine/src/core/com/jme3/math/Vector3f.java b/engine/src/core/com/jme3/math/Vector3f.java index 28aa5d888..c3a22602b 100644 --- a/engine/src/core/com/jme3/math/Vector3f.java +++ b/engine/src/core/com/jme3/math/Vector3f.java @@ -383,12 +383,31 @@ public final class Vector3f implements Savable, Cloneable, java.io.Serializable return this; } + /** + * Projects this vector onto another vector + * + * @param other The vector to project this vector onto + * @return A new vector with the projection result + */ public Vector3f project(Vector3f other){ float n = this.dot(other); // A . B float d = other.lengthSquared(); // |B|^2 return new Vector3f(other).normalizeLocal().multLocal(n/d); } + /** + * Projects this vector onto another vector, stores the result in this + * vector + * + * @param other The vector to project this vector onto + * @return This Vector3f, set to the projection result + */ + public Vector3f projectLocal(Vector3f other){ + float n = this.dot(other); // A . B + float d = other.lengthSquared(); // |B|^2 + return set(other).normalizeLocal().multLocal(n/d); + } + /** * Returns true if this vector is a unit vector (length() ~= 1), * returns false otherwise.