Plane.Libraries/Plane/MathUtils.cs

33 lines
1.0 KiB
C#
Raw Normal View History

2017-02-27 02:04:13 +08:00
using System;
namespace Plane
{
public static class MathUtils
{
public static void Constrain<T>(ref T value, T min, T max) where T : struct, IComparable<T>
{
if (min.CompareTo(max) > 0)
{
throw new ArgumentException($"Argument {nameof(max)} ({max}) must be greater than argument {nameof(min)} ({min}). ", nameof(max));
}
if (value.CompareTo(min) < 0)
{
value = min;
}
if (value.CompareTo(max) > 0)
{
value = max;
}
}
public static bool IsInRange<T>(this T value, T min, T max) where T : struct, IComparable<T>
{
if (min.CompareTo(max) > 0)
{
throw new ArgumentException($"Argument {nameof(max)} ({max}) must be greater than argument {nameof(min)} ({min}). ", nameof(max));
}
return value.CompareTo(min) >= 0 && value.CompareTo(max) <= 0;
}
}
}