/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
+
result.M11 = xScale;
result.M22 = yScale;
result.M33 = zScale;
+ result.M44 = 1;
+
return result;
}
/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale, Vector3 centerPoint)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
float tx = centerPoint.X * (1 - xScale);
float ty = centerPoint.Y * (1 - yScale);
result.M11 = xScale;
result.M22 = yScale;
result.M33 = zScale;
+ result.M44 = 1;
+
result.M41 = tx;
result.M42 = ty;
result.M43 = tz;
+
return result;
}
/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(Vector3 scales)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
+
result.M11 = scales.X;
result.M22 = scales.Y;
result.M33 = scales.Z;
+ result.M44 = 1;
+
return result;
}
/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(Vector3 scales, Vector3 centerPoint)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
- float tx = centerPoint.X * (1 - scales.X);
- float ty = centerPoint.Y * (1 - scales.Y);
- float tz = centerPoint.Z * (1 - scales.Z);
+ Vector3 t = centerPoint * (Vector3.One - scales);
result.M11 = scales.X;
result.M22 = scales.Y;
result.M33 = scales.Z;
- result.M41 = tx;
- result.M42 = ty;
- result.M43 = tz;
+ result.M44 = 1;
+
+ result.M41 = t.X;
+ result.M42 = t.Y;
+ result.M43 = t.Z;
+
return result;
}
/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(float scale)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
result.M11 = scale;
result.M22 = scale;
result.M33 = scale;
+ result.M44 = 1;
return result;
}
/// <returns>The scaling matrix.</returns>
public static Matrix4x4 CreateScale(float scale, Vector3 centerPoint)
{
- Matrix4x4 result = Identity;
+ Matrix4x4 result = default;
- float tx = centerPoint.X * (1 - scale);
- float ty = centerPoint.Y * (1 - scale);
- float tz = centerPoint.Z * (1 - scale);
+ Vector3 t = centerPoint * (Vector3.One - new Vector3(scale));
result.M11 = scale;
result.M22 = scale;
result.M33 = scale;
+ result.M44 = 1;
- result.M41 = tx;
- result.M42 = ty;
- result.M43 = tz;
+ result.M41 = t.X;
+ result.M42 = t.Y;
+ result.M43 = t.Z;
return result;
}