/// <summary> /// Returns the dot product of this vector and the given vector. /// </summary> /// <param name="v2">Second vector to get dot product from.</param> /// <returns>The dot product of this vector and the given vector.</returns> public float DotProduct(Vector v2) { return (_x * v2._x) + (_y * v2._y) + (_z * v2._z); }
/// <summary> /// Returns the projection of this vector onto a given vector. /// </summary> /// <param name="v2">Second vector to project onto.</param> /// <returns>Projection of this vector to the given vector.</returns> public Vector Project(Vector v2) { float dp = DotProduct(v2); return new Vector((dp / ((v2._x * v2._x) + (v2._y * v2._y) + (v2._z * v2._z))) * v2._x, (dp / ((v2._x * v2._x) + (v2._y * v2._y) + (v2._z * v2._z))) * v2._y, (dp / ((v2._x * v2._x) + (v2._y * v2._y) + (v2._z * v2._z))) * v2._z); }
/// <summary> /// Returns the cross product of this vector and the given vector. /// </summary> /// <param name="v2">Second vector to get cross product from.</param> /// <returns>The cross product of this vector and the given vector.</returns> public Vector CrossProduct(Vector v2) { return new Vector((_y * v2._z) - (_z * v2._y), (_z * v2._x) - (_x * v2._z), (_x * v2._y) - (_y * v2._x)); }