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 } }