diff --git a/src/ImageSharp/Common/Helpers/ImageMaths.cs b/src/ImageSharp/Common/Helpers/ImageMaths.cs
index 3cfea581d..6583fb724 100644
--- a/src/ImageSharp/Common/Helpers/ImageMaths.cs
+++ b/src/ImageSharp/Common/Helpers/ImageMaths.cs
@@ -100,25 +100,6 @@ namespace ImageSharp
return 0F;
}
- ///
- /// Gets the result of a sine cardinal function for the given value.
- ///
- /// The value to calculate the result for.
- ///
- /// The .
- ///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static float SinC(float x)
- {
- if (MathF.Abs(x) > Constants.Epsilon)
- {
- x *= MathF.PI;
- return Clean(MathF.Sin(x) / x);
- }
-
- return 1.0f;
- }
-
///
/// Returns the given degrees converted to radians.
///
@@ -286,23 +267,5 @@ namespace ImageSharp
return GetBoundingRectangle(topLeft, bottomRight);
}
-
- ///
- /// Ensures that any passed double is correctly rounded to zero
- ///
- /// The value to clean.
- ///
- /// The
- /// .
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static float Clean(float x)
- {
- if (MathF.Abs(x) < Constants.Epsilon)
- {
- return 0F;
- }
-
- return x;
- }
}
-}
+}
\ No newline at end of file
diff --git a/src/ImageSharp/Common/Helpers/MathF.cs b/src/ImageSharp/Common/Helpers/MathF.cs
index 2ee700789..1877fe8af 100644
--- a/src/ImageSharp/Common/Helpers/MathF.cs
+++ b/src/ImageSharp/Common/Helpers/MathF.cs
@@ -126,6 +126,26 @@ namespace ImageSharp
return (float)Math.Sin(f);
}
+ ///
+ /// Returns the result of a normalized sine cardinal function for the given value.
+ /// SinC(x) = sin(pi*x)/(pi*x).
+ ///
+ /// A single-precision floating-point number to calculate the result for.
+ ///
+ /// The sine cardinal of .
+ ///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static float SinC(float f)
+ {
+ if (Abs(f) > Constants.Epsilon)
+ {
+ f *= PI;
+ return Clean(Sin(f) / f);
+ }
+
+ return 1F;
+ }
+
/// Returns the square root of a specified number.
/// The number whose square root is to be found.
///
@@ -140,5 +160,23 @@ namespace ImageSharp
{
return (float)Math.Sqrt(f);
}
+
+ ///
+ /// Ensures that any passed float is correctly rounded to zero
+ ///
+ /// The value to clean.
+ ///
+ /// The
+ /// .
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static float Clean(float x)
+ {
+ if (Abs(x) < Constants.Epsilon)
+ {
+ return 0F;
+ }
+
+ return x;
+ }
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/ImageSharp.csproj b/src/ImageSharp/ImageSharp.csproj
index bda5f7c39..64183d05c 100644
--- a/src/ImageSharp/ImageSharp.csproj
+++ b/src/ImageSharp/ImageSharp.csproj
@@ -41,6 +41,7 @@
+
..\..\ImageSharp.ruleset
diff --git a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos2Resampler.cs b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos2Resampler.cs
index 05d6c630f..a46f38df4 100644
--- a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos2Resampler.cs
+++ b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos2Resampler.cs
@@ -25,7 +25,7 @@ namespace ImageSharp.Processing
if (x < 2F)
{
- return ImageMaths.SinC(x) * ImageMaths.SinC(x / 2F);
+ return MathF.SinC(x) * MathF.SinC(x / 2F);
}
return 0F;
diff --git a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos3Resampler.cs b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos3Resampler.cs
index 094e5bd67..3ad01b2b7 100644
--- a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos3Resampler.cs
+++ b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos3Resampler.cs
@@ -25,7 +25,7 @@ namespace ImageSharp.Processing
if (x < 3F)
{
- return ImageMaths.SinC(x) * ImageMaths.SinC(x / 3F);
+ return MathF.SinC(x) * MathF.SinC(x / 3F);
}
return 0F;
diff --git a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos5Resampler.cs b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos5Resampler.cs
index 9022aaaaf..9bb8bdd16 100644
--- a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos5Resampler.cs
+++ b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos5Resampler.cs
@@ -25,7 +25,7 @@ namespace ImageSharp.Processing
if (x < 5F)
{
- return ImageMaths.SinC(x) * ImageMaths.SinC(x / 5F);
+ return MathF.SinC(x) * MathF.SinC(x / 5F);
}
return 0F;
diff --git a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos8Resampler.cs b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos8Resampler.cs
index 4769d3847..af8c2c111 100644
--- a/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos8Resampler.cs
+++ b/src/ImageSharp/Processing/Transforms/Resamplers/Lanczos8Resampler.cs
@@ -25,7 +25,7 @@ namespace ImageSharp.Processing
if (x < 8F)
{
- return ImageMaths.SinC(x) * ImageMaths.SinC(x / 8F);
+ return MathF.SinC(x) * MathF.SinC(x / 8F);
}
return 0F;
diff --git a/src/ImageSharp/Processing/Transforms/Resamplers/WelchResampler.cs b/src/ImageSharp/Processing/Transforms/Resamplers/WelchResampler.cs
index 6fafd8ebb..33a2cc825 100644
--- a/src/ImageSharp/Processing/Transforms/Resamplers/WelchResampler.cs
+++ b/src/ImageSharp/Processing/Transforms/Resamplers/WelchResampler.cs
@@ -24,7 +24,7 @@ namespace ImageSharp.Processing
if (x < 3F)
{
- return ImageMaths.SinC(x) * (1F - (x * x / 9.0F));
+ return MathF.SinC(x) * (1F - (x * x / 9F));
}
return 0F;