33 lines
1.0 KiB
C#
33 lines
1.0 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|