/Main/src/DynamicDataDisplay/Common/Auxiliary/MathHelper.cs
C# | 91 lines | 68 code | 15 blank | 8 comment | 1 complexity | 0a9bfce019e6dc222f5ca8b79c1134c9 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
- using System;
- using System.Windows;
-
- namespace Microsoft.Research.DynamicDataDisplay
- {
- public static class MathHelper
- {
- public static long Clamp(long value, long min, long max)
- {
- return Math.Max(min, Math.Min(value, max));
- }
-
- public static double Clamp(double value, double min, double max)
- {
- return Math.Max(min, Math.Min(value, max));
- }
-
- /// <summary>Clamps specified value to [0,1]</summary>
- /// <param name="d">Value to clamp</param>
- /// <returns>Value in range [0,1]</returns>
- public static double Clamp(double value)
- {
- return Math.Max(0, Math.Min(value, 1));
- }
-
- public static int Clamp(int value, int min, int max)
- {
- return Math.Max(min, Math.Min(value, max));
- }
-
- public static Rect CreateRectByPoints(double xMin, double yMin, double xMax, double yMax)
- {
- return new Rect(new Point(xMin, yMin), new Point(xMax, yMax));
- }
-
- public static double Interpolate(double start, double end, double ratio)
- {
- return start * (1 - ratio) + end * ratio;
- }
-
- public static double RadiansToDegrees(this double radians)
- {
- return radians * 180 / Math.PI;
- }
-
- public static double DegreesToRadians(this double degrees)
- {
- return degrees / 180 * Math.PI;
- }
-
- /// <summary>
- /// Converts vector into angle.
- /// </summary>
- /// <param name="vector">The vector.</param>
- /// <returns>Angle in degrees.</returns>
- public static double ToAngle(this Vector vector)
- {
- return Math.Atan2(-vector.Y, vector.X).RadiansToDegrees();
- }
-
- public static Point ToPoint(this Vector v)
- {
- return new Point(v.X, v.Y);
- }
-
- public static bool IsNaN(this double d)
- {
- return Double.IsNaN(d);
- }
-
- public static bool IsNotNaN(this double d)
- {
- return !Double.IsNaN(d);
- }
-
- public static bool IsFinite(this double d)
- {
- return !Double.IsNaN(d) && !Double.IsInfinity(d);
- }
-
- public static bool IsInfinite(this double d)
- {
- return Double.IsInfinity(d);
- }
-
- public static bool AreClose(double d1, double d2, double diffRatio)
- {
- return Math.Abs(d1 / d2 - 1) < diffRatio;
- }
- }
- }