|
|
|
@ -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. |
|
|
|
|