mirror of
https://github.com/Ryujinx/Opentk.git
synced 2024-12-24 01:45:37 +00:00
Implemented Quaternion scaling by scalars. Fixes issue [#1131]: "[Math] add Quaternion scaling (easy)".
This commit is contained in:
parent
dc42ad19f1
commit
fb95f10458
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue