Fix Forward and Backward in Matrix and Matrix3x3

#3078
This commit is contained in:
Wojtek Figat
2024-11-26 14:54:11 +01:00
parent d4b663cd1a
commit 07aafea5af
4 changed files with 51 additions and 55 deletions

View File

@@ -215,23 +215,9 @@ namespace FlaxEngine
}
/// <summary>
/// Gets or sets the forward <see cref="Float3" /> of the matrix; that is -M31, -M32, and -M33.
/// Gets or sets the forward <see cref="Float3" /> of the matrix; that is M31, M32, and M33.
/// </summary>
public Float3 Forward
{
get => new Float3(-M31, -M32, -M33);
set
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
}
/// <summary>
/// Gets or sets the backward <see cref="Float3" /> of the matrix; that is M31, M32, and M33.
/// </summary>
public Float3 Backward
{
get => new Float3(M31, M32, M33);
set
@@ -242,6 +228,20 @@ namespace FlaxEngine
}
}
/// <summary>
/// Gets or sets the backward <see cref="Float3" /> of the matrix; that is -M31, -M32, and -M33.
/// </summary>
public Float3 Backward
{
get => new Float3(-M31, -M32, -M33);
set
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
}
/// <summary>
/// Initializes a new instance of the <see cref="Matrix" /> struct.
/// </summary>

View File

@@ -210,31 +210,31 @@ public:
// Gets the forward Float3 of the matrix; that is -M31, -M32, and -M33.
Float3 GetForward() const
{
return -Float3(M31, M32, M33);
return Float3(M31, M32, M33);
}
// Sets the forward Float3 of the matrix; that is -M31, -M32, and -M33.
void SetForward(const Float3& value)
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
// Gets the backward Float3 of the matrix; that is M31, M32, and M33.
Float3 GetBackward() const
{
return Float3(M31, M32, M33);
}
// Sets the backward Float3 of the matrix; that is M31, M32, and M33.
void SetBackward(const Float3& value)
{
M31 = value.X;
M32 = value.Y;
M33 = value.Z;
}
// Gets the backward Float3 of the matrix; that is -M31, -M32, and -M33.
Float3 GetBackward() const
{
return Float3(-M31, -M32, -M33);
}
// Sets the backward Float3 of the matrix; that is -M31, -M32, and -M33.
void SetBackward(const Float3& value)
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
// Gets the first row in the matrix; that is M11, M12, M13, and M14.
Float4 GetRow1() const
{

View File

@@ -303,9 +303,6 @@ namespace FlaxEngine
/// <summary>
/// Gets a value indicating whether this instance is an identity Matrix3x3.
/// </summary>
/// <value>
/// <c>true</c> if this instance is an identity Matrix3x3; otherwise, <c>false</c>.
/// </value>
public bool IsIdentity => Equals(Identity);
/// <summary>
@@ -566,19 +563,19 @@ namespace FlaxEngine
/// </remarks>
public bool DecomposeUniformScale(out float scale, out Quaternion rotation)
{
//Scaling is the length of the rows. ( just take one row since this is a uniform matrix)
// Scaling is the length of the rows. ( just take one row since this is a uniform matrix)
scale = (float)Math.Sqrt((M11 * M11) + (M12 * M12) + (M13 * M13));
var invScale = 1f / scale;
//If any of the scaling factors are zero, then the rotation matrix can not exist.
// If any of the scaling factors are zero, then the rotation matrix can not exist
if (Math.Abs(scale) < Mathf.Epsilon)
{
rotation = Quaternion.Identity;
return false;
}
//The rotation is the left over matrix after dividing out the scaling.
Matrix3x3 rotationmatrix = new Matrix3x3
// The rotation is the leftover matrix after dividing out the scaling
var rotationMatrix = new Matrix3x3
{
M11 = M11 * invScale,
M12 = M12 * invScale,
@@ -590,8 +587,7 @@ namespace FlaxEngine
M32 = M32 * invScale,
M33 = M33 * invScale
};
Quaternion.RotationMatrix(ref rotationmatrix, out rotation);
Quaternion.RotationMatrix(ref rotationMatrix, out rotation);
return true;
}

View File

@@ -175,34 +175,34 @@ public:
M13 = -value.Z;
}
// Gets the forward Float3 of the matrix; that is -M31, -M32, and -M33.
// Gets the forward Float3 of the matrix; that is M31, M32, and M33.
Float3 GetForward() const
{
return -Float3(M31, M32, M33);
}
// Sets the forward Float3 of the matrix; that is -M31, -M32, and -M33.
// Sets the forward Float3 of the matrix; that is M31, M32, and M33.
void SetForward(const Float3& value)
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
// Gets the backward Float3 of the matrix; that is M31, M32, and M33.
Float3 GetBackward() const
{
return Float3(M31, M32, M33);
}
// Sets the backward Float3 of the matrix; that is M31, M32, and M33.
void SetBackward(const Float3& value)
{
M31 = value.X;
M32 = value.Y;
M33 = value.Z;
}
// Gets the backward Float3 of the matrix; that is -M31, -M32, and -M33.
Float3 GetBackward() const
{
return Float3(-M31, -M32, -M33);
}
// Sets the backward Float3 of the matrix; that is -M31, -M32, and -M33.
void SetBackward(const Float3& value)
{
M31 = -value.X;
M32 = -value.Y;
M33 = -value.Z;
}
// Gets the first row in the matrix; that is M11, M12 and M13.
Float3 GetRow1() const
{