using System;
namespace Microsoft
{
///
/// Math类扩展
/// Copyright (c) JajaSoft
///
public static class MathEx
{
#region 字段
///
/// E
///
public const float E = 2.718282f;
///
/// Log10E
///
public const float Log10E = 0.4342945f;
///
/// Log2E
///
public const float Log2E = 1.442695f;
///
/// Pi
///
public const float Pi = 3.141593f;
///
/// Pi/2
///
public const float PiOver2 = 1.570796f;
///
/// Pi/4
///
public const float PiOver4 = 0.7853982f;
///
/// Pi*2
///
public const float TwoPi = 6.283185f;
///
/// Double类型的 180d / Math.PI
///
public const double Double180OverPi = 180d / Math.PI;
///
/// Double类型的 Math.PI / 180d
///
public const double DoublePiOver180 = Math.PI / 180d;
///
/// Single类型的 180d / Math.PI
///
public const float Single180OverPi = (float)Double180OverPi;
///
/// Single类型的 Math.PI / 180d
///
public const float SinglePiOver180 = (float)DoublePiOver180;
#endregion
#region 方法
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Byte Clamp(Byte value, Byte min, Byte max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Decimal Clamp(Decimal value, Decimal min, Decimal max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Double Clamp(Double value, Double min, Double max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Int16 Clamp(Int16 value, Int16 min, Int16 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Int32 Clamp(Int32 value, Int32 min, Int32 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Int64 Clamp(Int64 value, Int64 min, Int64 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static SByte Clamp(SByte value, SByte min, SByte max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static Single Clamp(Single value, Single min, Single max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static UInt16 Clamp(UInt16 value, UInt16 min, UInt16 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static UInt32 Clamp(UInt32 value, UInt32 min, UInt32 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 返回指定范围内的限定值
///
/// 值
/// 最小值
/// 最大值
/// 限定值
public static UInt64 Clamp(UInt64 value, UInt64 min, UInt64 max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
///
/// 弧度转换为角度
///
/// 弧度
/// 角度
public static Double ToDegrees(Double radians)
{
return (radians * Double180OverPi);
}
///
/// 弧度转换为角度
///
/// 弧度
/// 角度
public static Single ToDegrees(Single radians)
{
return (radians * Single180OverPi);
}
///
/// 角度转换为弧度
///
/// 角度
/// 弧度
public static Double ToRadians(Double degrees)
{
return (degrees * DoublePiOver180);
}
///
/// 角度转换为弧度
///
/// 角度
/// 弧度
public static Single ToRadians(Single degrees)
{
return (degrees * SinglePiOver180);
}
#endregion
}
}