mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-15 15:09:29 +00:00
Replace Matrix2 with Matrix3x2 (#870)
* Replace `Matrix2` with `Matrix3x2` * Update benchmarks * Add XML documentation for `Matrix3x2`
This commit is contained in:
committed by
GitHub
parent
d008b1bd41
commit
49038f5d42
@@ -0,0 +1,20 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace MonoGame.Extended.Tests;
|
||||
|
||||
public sealed class Matrix3x2Tests
|
||||
{
|
||||
[Fact]
|
||||
public void ConstructorTest()
|
||||
{
|
||||
Vector2 x = new Vector2(1, 2);
|
||||
Vector2 y = new Vector2(3, 4);
|
||||
Vector2 z = new Vector2(5, 6);
|
||||
|
||||
var matrix = new Matrix3x2(x.X, x.Y, y.X, y.Y, z.X, z.Y);
|
||||
|
||||
Assert.Equal(x, matrix.X);
|
||||
Assert.Equal(y, matrix.Y);
|
||||
Assert.Equal(z, matrix.Z);
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
//namespace MonoGame.Extended.Tests.Primitives
|
||||
//{
|
||||
//
|
||||
//
|
||||
// public class BoundingRectangleTests
|
||||
// {
|
||||
// public IEnumerable<TestCaseData> ConstructorTestCases
|
||||
@@ -88,11 +88,11 @@
|
||||
// get
|
||||
// {
|
||||
// yield return
|
||||
// new TestCaseData(new BoundingRectangle(), Matrix2.Identity, new BoundingRectangle()).SetName(
|
||||
// new TestCaseData(new BoundingRectangle(), Matrix3x2.Identity, new BoundingRectangle()).SetName(
|
||||
// "The bounding rectangle created from the empty bounding rectangle transformed by the identity matrix is the empty bounding rectangle.")
|
||||
// ;
|
||||
// yield return
|
||||
// new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(20, 20)), Matrix2.CreateScale(2), new BoundingRectangle(new Point2(0, 0), new Size2(40, 40))).SetName(
|
||||
// new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(20, 20)), Matrix3x2.CreateScale(2), new BoundingRectangle(new Point2(0, 0), new Size2(40, 40))).SetName(
|
||||
// "The bounding rectangle created from a non-empty bounding rectangle transformed by a non-identity matrix is the expected bounding rectangle.")
|
||||
// ;
|
||||
// }
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
// [Fact]
|
||||
// [TestCaseSource(nameof(CreateFromTransformedTestCases))]
|
||||
// public void CreateFromTransformed(BoundingRectangle boundingRectangle, Matrix2 transformMatrix,
|
||||
// public void CreateFromTransformed(BoundingRectangle boundingRectangle, Matrix3x2 transformMatrix,
|
||||
// BoundingRectangle expectedBoundingRectangle)
|
||||
// {
|
||||
// var actualBoundingRectangle = BoundingRectangle.Transform(boundingRectangle, ref transformMatrix);
|
||||
|
||||
@@ -10,11 +10,11 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Initializes_oriented_rectangle()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix2(5, 6, 7, 8, 9, 10));
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix3x2(5, 6, 7, 8, 9, 10));
|
||||
|
||||
Assert.Equal(new Point2(1, 2), rectangle.Center);
|
||||
Assert.Equal(new Vector2(3, 4), rectangle.Radii);
|
||||
Assert.Equal(new Matrix2(5, 6, 7, 8, 9, 10), rectangle.Orientation);
|
||||
Assert.Equal(new Matrix3x2(5, 6, 7, 8, 9, 10), rectangle.Orientation);
|
||||
CollectionAssert.Equal(
|
||||
new List<Vector2>
|
||||
{
|
||||
@@ -31,14 +31,14 @@ public class OrientedRectangleTests
|
||||
new object[]
|
||||
{
|
||||
"empty compared with empty is true",
|
||||
new OrientedRectangle(Point2.Zero, Size2.Empty, Matrix2.Identity),
|
||||
new OrientedRectangle(Point2.Zero, Size2.Empty, Matrix2.Identity)
|
||||
new OrientedRectangle(Point2.Zero, Size2.Empty, Matrix3x2.Identity),
|
||||
new OrientedRectangle(Point2.Zero, Size2.Empty, Matrix3x2.Identity)
|
||||
},
|
||||
new object[]
|
||||
{
|
||||
"initialized compared with initialized true",
|
||||
new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix2(5, 6, 7, 8, 9, 10)),
|
||||
new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix2(5, 6, 7, 8, 9, 10))
|
||||
new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix3x2(5, 6, 7, 8, 9, 10)),
|
||||
new OrientedRectangle(new Point2(1, 2), new Size2(3, 4), new Matrix3x2(5, 6, 7, 8, 9, 10))
|
||||
}
|
||||
};
|
||||
|
||||
@@ -57,8 +57,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Center_point_is_not_translated()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(), Matrix2.Identity);
|
||||
var transform = Matrix2.Identity;
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(), Matrix3x2.Identity);
|
||||
var transform = Matrix3x2.Identity;
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -68,8 +68,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Center_point_is_translated()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(0, 0), new Size2(), new Matrix2());
|
||||
var transform = Matrix2.CreateTranslation(1, 2);
|
||||
var rectangle = new OrientedRectangle(new Point2(0, 0), new Size2(), new Matrix3x2());
|
||||
var transform = Matrix3x2.CreateTranslation(1, 2);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -79,8 +79,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Radii_is_not_changed_by_identity_transform()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(10, 20), new Matrix2());
|
||||
var transform = Matrix2.Identity;
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(10, 20), new Matrix3x2());
|
||||
var transform = Matrix3x2.Identity;
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -90,8 +90,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Radii_is_not_changed_by_translation()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(10, 20), new Matrix2());
|
||||
var transform = Matrix2.CreateTranslation(1, 2);
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(10, 20), new Matrix3x2());
|
||||
var transform = Matrix3x2.CreateTranslation(1, 2);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -101,22 +101,22 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Orientation_is_rotated_45_degrees_left()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(), Matrix2.Identity);
|
||||
var transform = Matrix2.CreateRotationZ(MathHelper.PiOver4);
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(), Matrix3x2.Identity);
|
||||
var transform = Matrix3x2.CreateRotationZ(MathHelper.PiOver4);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
Assert.Equal(new Point2(), result.Center);
|
||||
Assert.Equal(new Vector2(), result.Radii);
|
||||
Assert.Equal(Matrix2.CreateRotationZ(MathHelper.PiOver4), result.Orientation);
|
||||
Assert.Equal(Matrix3x2.CreateRotationZ(MathHelper.PiOver4), result.Orientation);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Orientation_is_rotated_to_45_degrees_from_180()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(), Matrix2.CreateRotationZ(MathHelper.Pi));
|
||||
var transform = Matrix2.CreateRotationZ(-3 * MathHelper.PiOver4);
|
||||
var expectedOrientation = Matrix2.CreateRotationZ(MathHelper.PiOver4);
|
||||
var rectangle = new OrientedRectangle(new Point2(), new Size2(), Matrix3x2.CreateRotationZ(MathHelper.Pi));
|
||||
var transform = Matrix3x2.CreateRotationZ(-3 * MathHelper.PiOver4);
|
||||
var expectedOrientation = Matrix3x2.CreateRotationZ(MathHelper.PiOver4);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -133,8 +133,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Points_are_same_as_center()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(), Matrix2.Identity);
|
||||
var transform = Matrix2.Identity;
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(), Matrix3x2.Identity);
|
||||
var transform = Matrix3x2.Identity;
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -152,8 +152,8 @@ public class OrientedRectangleTests
|
||||
[Fact]
|
||||
public void Points_are_translated()
|
||||
{
|
||||
var rectangle = new OrientedRectangle(new Point2(0, 0), new Size2(2, 4), Matrix2.Identity);
|
||||
var transform = Matrix2.CreateTranslation(10, 20);
|
||||
var rectangle = new OrientedRectangle(new Point2(0, 0), new Size2(2, 4), Matrix3x2.Identity);
|
||||
var transform = Matrix3x2.CreateTranslation(10, 20);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -207,11 +207,11 @@ public class OrientedRectangleTests
|
||||
* :
|
||||
* :
|
||||
*/
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(2, 4), Matrix2.Identity);
|
||||
var rectangle = new OrientedRectangle(new Point2(1, 2), new Size2(2, 4), Matrix3x2.Identity);
|
||||
var transform =
|
||||
Matrix2.CreateRotationZ(MathHelper.PiOver2)
|
||||
Matrix3x2.CreateRotationZ(MathHelper.PiOver2)
|
||||
*
|
||||
Matrix2.CreateTranslation(10, 20);
|
||||
Matrix3x2.CreateTranslation(10, 20);
|
||||
|
||||
var result = OrientedRectangle.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -219,7 +219,7 @@ public class OrientedRectangleTests
|
||||
Assert.Equal(21, result.Center.Y, 6);
|
||||
Assert.Equal(2, result.Radii.X, 6);
|
||||
Assert.Equal(4, result.Radii.Y, 6);
|
||||
Assert.Equal(Matrix2.CreateRotationZ(MathHelper.PiOver2), result.Orientation);
|
||||
Assert.Equal(Matrix3x2.CreateRotationZ(MathHelper.PiOver2), result.Orientation);
|
||||
CollectionAssert.Equal(
|
||||
new List<Vector2>
|
||||
{
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace MonoGame.Extended.Tests.Primitives
|
||||
public void Center_point_is_not_translated()
|
||||
{
|
||||
var rectangle = new RectangleF(new Point2(0, 0), new Size2(20, 30));
|
||||
var transform = Matrix2.Identity;
|
||||
var transform = Matrix3x2.Identity;
|
||||
|
||||
var result = RectangleF.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace MonoGame.Extended.Tests.Primitives
|
||||
public void Center_point_is_translated()
|
||||
{
|
||||
var rectangleF = new RectangleF(new Point2(0, 0), new Size2(20, 30));
|
||||
var transform = Matrix2.CreateTranslation(1, 2);
|
||||
var transform = Matrix3x2.CreateTranslation(1, 2);
|
||||
|
||||
var result = RectangleF.Transform(rectangleF, ref transform);
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace MonoGame.Extended.Tests.Primitives
|
||||
public void Size_is_not_changed_by_identity_transform()
|
||||
{
|
||||
var rectangle = new RectangleF(new Point2(0, 0), new Size2(20, 30));
|
||||
var transform = Matrix2.Identity;
|
||||
var transform = Matrix3x2.Identity;
|
||||
|
||||
var result = RectangleF.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace MonoGame.Extended.Tests.Primitives
|
||||
public void Size_is_not_changed_by_translation()
|
||||
{
|
||||
var rectangle = new RectangleF(new Point2(0, 0), new Size2(20, 30));
|
||||
var transform = Matrix2.CreateTranslation(1, 2);
|
||||
var transform = Matrix3x2.CreateTranslation(1, 2);
|
||||
|
||||
var result = RectangleF.Transform(rectangle, ref transform);
|
||||
|
||||
@@ -119,9 +119,9 @@ namespace MonoGame.Extended.Tests.Primitives
|
||||
*/
|
||||
var rectangle = new RectangleF(new Point2(0, 0), new Size2(2, 4));
|
||||
var transform =
|
||||
Matrix2.CreateRotationZ(MathHelper.PiOver2)
|
||||
Matrix3x2.CreateRotationZ(MathHelper.PiOver2)
|
||||
*
|
||||
Matrix2.CreateTranslation(10, 20);
|
||||
Matrix3x2.CreateTranslation(10, 20);
|
||||
|
||||
var result = RectangleF.Transform(rectangle, ref transform);
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ public class ShapeTests
|
||||
* :
|
||||
* :
|
||||
*/
|
||||
IShapeF rectangle = new OrientedRectangle(Point2.Zero, new Size2(1, 1), Matrix2.Identity);
|
||||
IShapeF rectangle = new OrientedRectangle(Point2.Zero, new Size2(1, 1), Matrix3x2.Identity);
|
||||
var circle = new CircleF(Point2.Zero, 1);
|
||||
|
||||
Assert.True(rectangle.Intersects(circle));
|
||||
@@ -117,7 +117,7 @@ public class ShapeTests
|
||||
* :
|
||||
* :
|
||||
*/
|
||||
IShapeF rectangle = new OrientedRectangle(Point2.Zero, new Size2(1, 1), Matrix2.Identity);
|
||||
IShapeF rectangle = new OrientedRectangle(Point2.Zero, new Size2(1, 1), Matrix3x2.Identity);
|
||||
var circle = new CircleF(new Point2(-2, 1), .99f);
|
||||
|
||||
Assert.False(rectangle.Intersects(circle));
|
||||
@@ -135,7 +135,7 @@ public class ShapeTests
|
||||
* * *
|
||||
* :* *
|
||||
*/
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 1), new Size2(1.42f, 1.42f), Matrix2.CreateRotationZ(-MathHelper.PiOver4));
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 1), new Size2(1.42f, 1.42f), Matrix3x2.CreateRotationZ(-MathHelper.PiOver4));
|
||||
var circle = new CircleF(new Point2(1, -1), 1.4f);
|
||||
|
||||
Assert.False(rectangle.Intersects(circle));
|
||||
@@ -153,7 +153,7 @@ public class ShapeTests
|
||||
* :**
|
||||
* :
|
||||
*/
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 0), new Size2(1, 1), Matrix2.Identity);
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 0), new Size2(1, 1), Matrix3x2.Identity);
|
||||
var rect = new RectangleF(new Point2(0.001f, 0), new Size2(2, 2));
|
||||
|
||||
Assert.False(rectangle.Intersects(rect));
|
||||
@@ -171,7 +171,7 @@ public class ShapeTests
|
||||
* :**
|
||||
* :
|
||||
*/
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 0), new Size2(1, 1), Matrix2.Identity);
|
||||
IShapeF rectangle = new OrientedRectangle(new Point2(-1, 0), new Size2(1, 1), Matrix3x2.Identity);
|
||||
var rect = new RectangleF(new Point2(0, 0), new Size2(2, 2));
|
||||
|
||||
Assert.True(rectangle.Intersects(rect));
|
||||
|
||||
Reference in New Issue
Block a user