Vector3 projectOnVector(Vector3 v) { final denominator = v.length2; if (denominator == 0) return setValues(0, 0, 0); final scalar = v.dot(this) / denominator; return setFrom(v).scale(scalar); }