Implemented Quaternion scaling by scalars. Fixes issue [#1131]: "[Math] add Quaternion scaling (easy)".

This commit is contained in:
the_fiddler 2009-09-05 16:17:47 +00:00
parent dc42ad19f1
commit fb95f10458
2 changed files with 88 additions and 0 deletions

View file

@ -316,6 +316,28 @@ namespace OpenTK
left.W * right.W - Vector3.Dot(left.Xyz, right.Xyz)); left.W * right.W - Vector3.Dot(left.Xyz, right.Xyz));
} }
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <param name="result">A new instance containing the result of the calculation.</param>
public static void Multiply(ref Quaternion quaternion, ref float scale, out Quaternion result)
{
result = new Quaternion(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaternion Multiply(Quaternion quaternion, float scale)
{
return new Quaternion(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
#endregion #endregion
#region Conjugate #region Conjugate
@ -540,6 +562,28 @@ namespace OpenTK
return left; return left;
} }
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaternion operator *(Quaternion quaternion, float scale)
{
return new Quaternion(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaternion operator *(float scale, Quaternion quaternion)
{
return new Quaternion(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary> /// <summary>
/// Compares two instances for equality. /// Compares two instances for equality.
/// </summary> /// </summary>

View file

@ -316,6 +316,28 @@ namespace OpenTK
left.W * right.W - Vector3d.Dot(left.Xyz, right.Xyz)); left.W * right.W - Vector3d.Dot(left.Xyz, right.Xyz));
} }
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <param name="result">A new instance containing the result of the calculation.</param>
public static void Multiply(ref Quaterniond quaternion, ref double scale, out Quaterniond result)
{
result = new Quaterniond(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaterniond Multiply(Quaterniond quaternion, double scale)
{
return new Quaterniond(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
#endregion #endregion
#region Conjugate #region Conjugate
@ -540,6 +562,28 @@ namespace OpenTK
return left; return left;
} }
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaterniond operator *(Quaterniond quaternion, double scale)
{
return new Quaterniond(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary>
/// Multiplies an instance by a scalar.
/// </summary>
/// <param name="quaternion">The instance.</param>
/// <param name="scale">The scalar.</param>
/// <returns>A new instance containing the result of the calculation.</returns>
public static Quaterniond operator *(double scale, Quaterniond quaternion)
{
return new Quaterniond(quaternion.X * scale, quaternion.Y * scale, quaternion.Z * scale, quaternion.W * scale);
}
/// <summary> /// <summary>
/// Compares two instances for equality. /// Compares two instances for equality.
/// </summary> /// </summary>