From 2535a1d6ec53c86b8c34cb5ef5327fc56fd0f8c1 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Tue, 8 Apr 2025 23:15:19 +0300 Subject: [PATCH] refactor: TransformFoo like extension methods renamed to Transform --- .../Abstract/TransformExtensions.cs | 9 ------- Engine.Core/Primitives/Circle.cs | 9 +++---- Engine.Core/Primitives/Shape2D.cs | 24 +++++++++---------- Engine.Core/Primitives/Vector2D.cs | 18 ++++++++++++++ 4 files changed, 35 insertions(+), 25 deletions(-) delete mode 100644 Engine.Core/Extensions/Abstract/TransformExtensions.cs diff --git a/Engine.Core/Extensions/Abstract/TransformExtensions.cs b/Engine.Core/Extensions/Abstract/TransformExtensions.cs deleted file mode 100644 index af477e1..0000000 --- a/Engine.Core/Extensions/Abstract/TransformExtensions.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Syntriax.Engine.Core.Abstract; - -public static class TransformExtensions -{ - public static Vector2D TransformVector2D(this ITransform2D transform, Vector2D vector) - => vector.Scale(transform.Scale) - .Rotate(transform.Rotation * Math.DegreeToRadian) - .Add(transform.Position); -} diff --git a/Engine.Core/Primitives/Circle.cs b/Engine.Core/Primitives/Circle.cs index ae99589..7925c85 100644 --- a/Engine.Core/Primitives/Circle.cs +++ b/Engine.Core/Primitives/Circle.cs @@ -1,4 +1,5 @@ using System.Diagnostics; + using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; @@ -66,8 +67,8 @@ public readonly struct Circle(Vector2D center, float radius) /// /// Transforms the by the specified . /// - public static Circle TransformCircle(ITransform2D transform, Circle circle) - => new(transform.TransformVector2D(circle.Center), circle.Radius * (transform.Scale.Magnitude / Vector2D.One.Magnitude)); + public static Circle Transform(ITransform2D transform, Circle circle) + => new(transform.Transform(circle.Center), circle.Radius * (transform.Scale.Magnitude / Vector2D.One.Magnitude)); /// /// Checks if two s are approximately equal. @@ -97,8 +98,8 @@ public static class CircleExtensions /// public static Projection1D ToProjection(this Circle circle, Vector2D projectionVector) => Circle.Project(circle, projectionVector); - /// - public static Circle TransformCircle(this ITransform2D transform, Circle circle) => Circle.TransformCircle(transform, circle); + /// + public static Circle Transform(this ITransform2D transform, Circle circle) => Circle.Transform(transform, circle); /// public static bool ApproximatelyEquals(this Circle left, Circle right, float epsilon = float.Epsilon) => Circle.ApproximatelyEquals(left, right, epsilon); diff --git a/Engine.Core/Primitives/Shape2D.cs b/Engine.Core/Primitives/Shape2D.cs index 4a0e011..9ab193c 100644 --- a/Engine.Core/Primitives/Shape2D.cs +++ b/Engine.Core/Primitives/Shape2D.cs @@ -192,13 +192,13 @@ public readonly struct Shape2D(List vertices) : IEnumerable /// The to transform. /// The to apply. /// The transformed . - public static Shape2D TransformShape(Shape2D shape, ITransform2D transform) + public static Shape2D Transform(Shape2D shape, ITransform2D transform) { List vertices = new(shape.Vertices.Count); int count = shape.Vertices.Count; for (int i = 0; i < count; i++) - vertices.Add(transform.TransformVector2D(shape[i])); + vertices.Add(transform.Transform(shape[i])); return new Shape2D(vertices); } @@ -209,13 +209,13 @@ public readonly struct Shape2D(List vertices) : IEnumerable /// The to transform. /// The to apply. /// The transformed . - public static void TransformShape(Shape2D from, ITransform2D transform, ref Shape2D to) + public static void Transform(Shape2D from, ITransform2D transform, ref Shape2D to) { to._verticesList.Clear(); int count = from._verticesList.Count; for (int i = 0; i < count; i++) - to._verticesList.Add(transform.TransformVector2D(from[i])); + to._verticesList.Add(transform.Transform(from[i])); } /// @@ -273,17 +273,17 @@ public static class Shape2DExtensions /// public static Projection1D ToProjection(this Shape2D shape, Vector2D projectionVector) => Shape2D.Project(shape, projectionVector); - /// - public static Shape2D TransformShape(this ITransform2D transform, Shape2D shape) => Shape2D.TransformShape(shape, transform); + /// + public static Shape2D Transform(this ITransform2D transform, Shape2D shape) => Shape2D.Transform(shape, transform); - /// - public static void TransformShape(this ITransform2D transform, Shape2D from, ref Shape2D to) => Shape2D.TransformShape(from, transform, ref to); + /// + public static void Transform(this ITransform2D transform, Shape2D from, ref Shape2D to) => Shape2D.Transform(from, transform, ref to); - /// - public static Shape2D Transform(this Shape2D shape, ITransform2D transform) => Shape2D.TransformShape(shape, transform); + /// + public static Shape2D Transform(this Shape2D shape, ITransform2D transform) => Shape2D.Transform(shape, transform); - /// - public static void Transform(this Shape2D from, ITransform2D transform, ref Shape2D to) => Shape2D.TransformShape(from, transform, ref to); + /// + public static void Transform(this Shape2D from, ITransform2D transform, ref Shape2D to) => Shape2D.Transform(from, transform, ref to); /// public static bool ApproximatelyEquals(this Shape2D left, Shape2D right, float epsilon = float.Epsilon) => Shape2D.ApproximatelyEquals(left, right, epsilon); diff --git a/Engine.Core/Primitives/Vector2D.cs b/Engine.Core/Primitives/Vector2D.cs index e005e24..3f84163 100644 --- a/Engine.Core/Primitives/Vector2D.cs +++ b/Engine.Core/Primitives/Vector2D.cs @@ -1,4 +1,5 @@ using System; +using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; @@ -278,6 +279,17 @@ public readonly struct Vector2D(float x, float y) return 0; } + /// + /// Transforms the using the specified . + /// + /// The to transform. + /// The to apply. + /// The transformed . + public static Vector2D Transform(Vector2D vector, ITransform2D transform) + => vector.Scale(transform.Scale) + .Rotate(transform.Rotation * Math.DegreeToRadian) + .Add(transform.Position); + /// /// Checks if two s are approximately equal within a specified epsilon range. /// @@ -379,6 +391,12 @@ public static class Vector2DExtensions /// public static float Dot(this Vector2D left, Vector2D right) => Vector2D.Dot(left, right); + /// + public static Vector2D Transform(this Vector2D vector, ITransform2D transform) => Vector2D.Transform(vector, transform); + + /// + public static Vector2D Transform(this ITransform2D transform, Vector2D vector) => Vector2D.Transform(vector, transform); + /// public static bool ApproximatelyEquals(this Vector2D left, Vector2D right, float epsilon = float.Epsilon) => Vector2D.ApproximatelyEquals(left, right, epsilon); }