change Transform2D.TransformMatrix to a Matrix3x2
parent
1eee8bd923
commit
7f15e73de3
|
@ -1,3 +1,4 @@
|
|||
bin/
|
||||
obj/
|
||||
.vscode
|
||||
.vscode
|
||||
.vs
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace MoonTools.Core.Structs
|
|||
private float _rotation;
|
||||
private Vector2 _scale;
|
||||
|
||||
public Matrix4x4 TransformMatrix { get; private set; }
|
||||
public Matrix3x2 TransformMatrix { get; private set; }
|
||||
|
||||
public Position2D Position
|
||||
{
|
||||
|
@ -119,11 +119,11 @@ namespace MoonTools.Core.Structs
|
|||
return new Transform2D(Position + other.Position, Rotation + other.Rotation, Scale * other.Scale);
|
||||
}
|
||||
|
||||
private static Matrix4x4 CreateTransformMatrix(Position2D translation, float rotation, Vector2 scale)
|
||||
private static Matrix3x2 CreateTransformMatrix(Position2D translation, float rotation, Vector2 scale)
|
||||
{
|
||||
return Matrix4x4.CreateScale(scale.X, scale.Y, 1) *
|
||||
Matrix4x4.CreateRotationZ(rotation) *
|
||||
Matrix4x4.CreateTranslation(translation.X, translation.Y, 0);
|
||||
return Matrix3x2.CreateScale(scale.X, scale.Y) *
|
||||
Matrix3x2.CreateRotation(rotation) *
|
||||
Matrix3x2.CreateTranslation(translation.X, translation.Y);
|
||||
}
|
||||
|
||||
public override bool Equals(Object other)
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace Tests
|
|||
var transformA = new Transform2D(new Position2D(0, 1), 4f, new Vector2(2, 1));
|
||||
var transformB = new Transform2D(new Position2D(0, 1), 4f, new Vector2(2, 1));
|
||||
|
||||
transformA.Should().BeEquivalentTo(transformB);
|
||||
transformA.Equals(transformB).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -23,7 +23,7 @@ namespace Tests
|
|||
var transformA = new Transform2D(new Position2D(2, 3));
|
||||
var transformB = new Transform2D(new Position2D(5, 1));
|
||||
|
||||
transformA.Should().NotBeEquivalentTo(transformB);
|
||||
transformA.Equals(transformB).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -52,5 +52,17 @@ namespace Tests
|
|||
|
||||
transformA.Compose(transformB).Should().BeEquivalentTo(new Transform2D(new Position2D(19, 3), 3 * (float)System.Math.PI / 4, new Vector2(3, 2)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Transform()
|
||||
{
|
||||
var transformA = new Transform2D(Position2D.Zero, (float)System.Math.PI / 2, Vector2.One);
|
||||
var transformB = new Transform2D(new Vector2(0, 2), (float)System.Math.PI, Vector2.One);
|
||||
var transformC = new Transform2D(new Vector2(-2, 0), (float)System.Math.PI * 2, new Vector2(3, 1));
|
||||
|
||||
Vector2.Transform(new Vector2(-1, 0), transformA.TransformMatrix).Should().Be(new Vector2(0, -1));
|
||||
Vector2.Transform(new Vector2(-1, 0), transformB.TransformMatrix).Should().Be(new Vector2(1, 2));
|
||||
Vector2.Transform(new Vector2(-1, 0), transformC.TransformMatrix).Should().Be(new Vector2(-5, 0));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue