diff --git a/src/ImageSharp/Processing/AffineTransformBuilder.cs b/src/ImageSharp/Processing/AffineTransformBuilder.cs
index 29c37d7bf..ef0b24f81 100644
--- a/src/ImageSharp/Processing/AffineTransformBuilder.cs
+++ b/src/ImageSharp/Processing/AffineTransformBuilder.cs
@@ -35,7 +35,16 @@ namespace SixLabors.ImageSharp.Processing
=> this.Prepend(size => TransformUtils.CreateRotationMatrixRadians(radians, size));
///
- /// Prepends a centered rotation matrix using the given rotation in radians.
+ /// Prepends a rotation matrix using the given rotation in degrees at the given origin.
+ ///
+ /// The amount of rotation, in degrees.
+ /// The rotation origin point.
+ /// The .
+ public AffineTransformBuilder PrependRotationDegrees(float degrees, Vector2 origin)
+ => this.PrependRotationRadians(GeometryUtilities.DegreeToRadian(degrees), origin);
+
+ ///
+ /// Prepends a rotation matrix using the given rotation in radians at the given origin.
///
/// The amount of rotation, in radians.
/// The rotation origin point.
@@ -62,7 +71,16 @@ namespace SixLabors.ImageSharp.Processing
=> this.Append(size => TransformUtils.CreateRotationMatrixRadians(radians, size));
///
- /// Appends a centered rotation matrix using the given rotation in radians.
+ /// Appends a rotation matrix using the given rotation in degrees at the given origin.
+ ///
+ /// The amount of rotation, in degrees.
+ /// The rotation origin point.
+ /// The .
+ public AffineTransformBuilder AppendRotationDegrees(float degrees, Vector2 origin)
+ => this.AppendRotationRadians(GeometryUtilities.DegreeToRadian(degrees), origin);
+
+ ///
+ /// Appends a rotation matrix using the given rotation in radians at the given origin.
///
/// The amount of rotation, in radians.
/// The rotation origin point.
diff --git a/src/ImageSharp/Processing/ProjectiveTransformBuilder.cs b/src/ImageSharp/Processing/ProjectiveTransformBuilder.cs
index a905467bb..5a19b890d 100644
--- a/src/ImageSharp/Processing/ProjectiveTransformBuilder.cs
+++ b/src/ImageSharp/Processing/ProjectiveTransformBuilder.cs
@@ -53,13 +53,22 @@ namespace SixLabors.ImageSharp.Processing
=> this.Prepend(size => new Matrix4x4(TransformUtils.CreateRotationMatrixRadians(radians, size)));
///
- /// Appends a centered rotation matrix using the given rotation in radians.
+ /// Prepends a centered rotation matrix using the given rotation in degrees at the given origin.
+ ///
+ /// The amount of rotation, in radians.
+ /// The rotation origin point.
+ /// The .
+ internal ProjectiveTransformBuilder PrependRotationDegrees(float degrees, Vector2 origin)
+ => this.PrependRotationRadians(GeometryUtilities.DegreeToRadian(degrees), origin);
+
+ ///
+ /// Prepends a centered rotation matrix using the given rotation in radians at the given origin.
///
/// The amount of rotation, in radians.
- /// The rotation center.
+ /// The rotation origin point.
/// The .
- internal ProjectiveTransformBuilder PrependRotationRadians(float radians, Vector2 centerPoint)
- => this.PrependMatrix(Matrix4x4.CreateRotationZ(radians, new Vector3(centerPoint, 0)));
+ internal ProjectiveTransformBuilder PrependRotationRadians(float radians, Vector2 origin)
+ => this.PrependMatrix(Matrix4x4.CreateRotationZ(radians, new Vector3(origin, 0)));
///
/// Appends a centered rotation matrix using the given rotation in degrees.
@@ -78,13 +87,22 @@ namespace SixLabors.ImageSharp.Processing
=> this.Append(size => new Matrix4x4(TransformUtils.CreateRotationMatrixRadians(radians, size)));
///
- /// Appends a centered rotation matrix using the given rotation in radians.
+ /// Appends a centered rotation matrix using the given rotation in degrees at the given origin.
+ ///
+ /// The amount of rotation, in radians.
+ /// The rotation origin point.
+ /// The .
+ internal ProjectiveTransformBuilder AppendRotationDegrees(float degrees, Vector2 origin)
+ => this.AppendRotationRadians(GeometryUtilities.DegreeToRadian(degrees), origin);
+
+ ///
+ /// Appends a centered rotation matrix using the given rotation in radians at the given origin.
///
/// The amount of rotation, in radians.
- /// The rotation center.
+ /// The rotation origin point.
/// The .
- internal ProjectiveTransformBuilder AppendRotationRadians(float radians, Vector2 centerPoint)
- => this.AppendMatrix(Matrix4x4.CreateRotationZ(radians, new Vector3(centerPoint, 0)));
+ internal ProjectiveTransformBuilder AppendRotationRadians(float radians, Vector2 origin)
+ => this.AppendMatrix(Matrix4x4.CreateRotationZ(radians, new Vector3(origin, 0)));
///
/// Prepends a scale matrix from the given uniform scale.
diff --git a/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformBuilderTests.cs b/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformBuilderTests.cs
index bdc66641a..14b867264 100644
--- a/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformBuilderTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Transforms/AffineTransformBuilderTests.cs
@@ -15,8 +15,11 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
protected override void AppendRotationRadians(AffineTransformBuilder builder, float radians) => builder.AppendRotationRadians(radians);
- protected override void AppendRotationRadians(AffineTransformBuilder builder, float radians, Vector2 center) =>
- builder.AppendRotationRadians(radians, center);
+ protected override void AppendRotationRadians(AffineTransformBuilder builder, float radians, Vector2 origin) => builder.AppendRotationRadians(radians, origin);
+
+ protected override void AppendRotationDegrees(AffineTransformBuilder builder, float degrees) => builder.AppendRotationDegrees(degrees);
+
+ protected override void AppendRotationDegrees(AffineTransformBuilder builder, float degrees, Vector2 origin) => builder.AppendRotationDegrees(degrees, origin);
protected override void PrependTranslation(AffineTransformBuilder builder, PointF translate) => builder.PrependTranslation(translate);
diff --git a/tests/ImageSharp.Tests/Processing/Transforms/ProjectiveTransformBuilderTests.cs b/tests/ImageSharp.Tests/Processing/Transforms/ProjectiveTransformBuilderTests.cs
index 287d7be49..9f58826cd 100644
--- a/tests/ImageSharp.Tests/Processing/Transforms/ProjectiveTransformBuilderTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Transforms/ProjectiveTransformBuilderTests.cs
@@ -17,8 +17,11 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
protected override void AppendRotationRadians(ProjectiveTransformBuilder builder, float radians) => builder.AppendRotationRadians(radians);
- protected override void AppendRotationRadians(ProjectiveTransformBuilder builder, float radians, Vector2 center) =>
- builder.AppendRotationRadians(radians, center);
+ protected override void AppendRotationRadians(ProjectiveTransformBuilder builder, float radians, Vector2 origin) => builder.AppendRotationRadians(radians, origin);
+
+ protected override void AppendRotationDegrees(ProjectiveTransformBuilder builder, float degrees) => builder.AppendRotationDegrees(degrees);
+
+ protected override void AppendRotationDegrees(ProjectiveTransformBuilder builder, float degrees, Vector2 origin) => builder.AppendRotationDegrees(degrees, origin);
protected override void PrependTranslation(ProjectiveTransformBuilder builder, PointF translate) => builder.PrependTranslation(translate);
diff --git a/tests/ImageSharp.Tests/Processing/Transforms/TransformBuilderTestBase.cs b/tests/ImageSharp.Tests/Processing/Transforms/TransformBuilderTestBase.cs
index 720c87ced..43ad756e0 100644
--- a/tests/ImageSharp.Tests/Processing/Transforms/TransformBuilderTestBase.cs
+++ b/tests/ImageSharp.Tests/Processing/Transforms/TransformBuilderTestBase.cs
@@ -186,7 +186,7 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
protected abstract void AppendRotationRadians(TBuilder builder, float radians);
- protected abstract void AppendRotationRadians(TBuilder builder, float radians, Vector2 center);
+ protected abstract void AppendRotationRadians(TBuilder builder, float radians, Vector2 origin);
protected abstract void PrependTranslation(TBuilder builder, PointF translate);
@@ -196,11 +196,9 @@ namespace SixLabors.ImageSharp.Tests.Processing.Transforms
protected abstract void PrependRotationRadians(TBuilder builder, float radians, Vector2 origin);
- protected virtual void AppendRotationDegrees(TBuilder builder, float degrees) =>
- this.AppendRotationRadians(builder, GeometryUtilities.DegreeToRadian(degrees));
+ protected abstract void AppendRotationDegrees(TBuilder builder, float degrees);
- protected virtual void AppendRotationDegrees(TBuilder builder, float degrees, Vector2 center) =>
- this.AppendRotationRadians(builder, GeometryUtilities.DegreeToRadian(degrees), center);
+ protected abstract void AppendRotationDegrees(TBuilder builder, float degrees, Vector2 origin);
protected abstract Vector2 Execute(TBuilder builder, Rectangle rectangle, Vector2 sourcePoint);
}