| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- using System;
- namespace PF
- {
- public static class MathHelper
- {
- public const float E = 2.718282f;
- public const float Log10E = 0.4342945f;
- public const float Log2E = 1.442695f;
- public const float Pi = 3.141593f;
- public const float PiOver2 = 1.570796f;
- public const float PiOver4 = 0.7853982f;
- public const float TwoPi = 6.283185f;
- public const float Deg2Rad = 0.01745329f;
- public const float Rad2Deg = 57.29578f;
- public const float Epsilon = 1.401298E-45f;
- public const float Infinity = float.PositiveInfinity;
- public const float NegativeInfinity = float.NegativeInfinity;
- public static float Clamp(float value, float min, float max)
- {
- value = (double) value > (double) max? max : value;
- value = (double) value < (double) min? min : value;
- return value;
- }
- public static int Clamp(int value, int min, int max)
- {
- value = value > max? max : value;
- value = value < min? min : value;
- return value;
- }
- public static float Hermite(float value1, float tangent1, float value2, float tangent2, float amount)
- {
- float num1 = amount;
- float num2 = num1 * num1;
- float num3 = num1 * num2;
- float num4 = (float) (2.0 * (double) num3 - 3.0 * (double) num2 + 1.0);
- float num5 = (float) (-2.0 * (double) num3 + 3.0 * (double) num2);
- float num6 = num3 - 2f * num2 + num1;
- float num7 = num3 - num2;
- return (float) ((double) value1 * (double) num4 + (double) value2 * (double) num5 + (double) tangent1 * (double) num6 +
- (double) tangent2 * (double) num7);
- }
- public static float Lerp(float value1, float value2, float amount)
- {
- return value1 + (value2 - value1) * amount;
- }
- public static float Max(float a, float b)
- {
- if ((double) a > (double) b)
- return a;
- return b;
- }
- public static float Min(float a, float b)
- {
- if ((double) a < (double) b)
- return a;
- return b;
- }
- public static int Max(int a, int b)
- {
- if (a > b)
- return a;
- return b;
- }
- public static int Min(int a, int b)
- {
- if (a < b)
- return a;
- return b;
- }
- public static float SmoothStep(float value1, float value2, float amount)
- {
- float num = MathHelper.Clamp(amount, 0.0f, 1f);
- return MathHelper.Lerp(value1, value2, (float) ((double) num * (double) num * (3.0 - 2.0 * (double) num)));
- }
- public static float RadiansToDegrees(float radians)
- {
- return radians * 57.29578f;
- }
- public static float DegreesToRadians(float degrees)
- {
- return degrees * ((float) Math.PI / 180f);
- }
- public static float Sin(float f)
- {
- return (float) Math.Sin((double) f);
- }
- public static float Cos(float f)
- {
- return (float) Math.Cos((double) f);
- }
- public static float Tan(float f)
- {
- return (float) Math.Tan((double) f);
- }
- public static float ASin(float f)
- {
- return (float) Math.Asin((double) f);
- }
- public static float ACos(float f)
- {
- return (float) Math.Acos((double) f);
- }
- public static float ATan(float f)
- {
- return (float) Math.Atan((double) f);
- }
- public static float ATan2(float a, float b)
- {
- return (float) Math.Atan2((double) a, (double) b);
- }
- public static float Sqrt(float f)
- {
- return (float) Math.Sqrt((double) f);
- }
- public static float Abs(float f)
- {
- return Math.Abs(f);
- }
- public static int Abs(int value)
- {
- return Math.Abs(value);
- }
- public static float Pow(float fBase, float fExponent)
- {
- return (float) Math.Pow((double) fBase, (double) fExponent);
- }
- public static float Exp(float power)
- {
- return (float) Math.Exp((double) power);
- }
- public static float Log(float f)
- {
- return (float) Math.Log((double) f);
- }
- public static float Log10(float f)
- {
- return (float) Math.Log10((double) f);
- }
- public static float Ceil(float f)
- {
- return (float) Math.Ceiling((double) f);
- }
- public static float Floor(float f)
- {
- return (float) Math.Floor((double) f);
- }
- public static float Round(float f)
- {
- return (float) Math.Round((double) f);
- }
- public static int ICeil(float f)
- {
- return (int) Math.Ceiling((double) f);
- }
- public static int IFloor(float f)
- {
- return (int) Math.Floor((double) f);
- }
- public static int IRound(float f)
- {
- return (int) Math.Round((double) f);
- }
- public static bool IsPowerOfTwo(int value)
- {
- return (value & value - 1) == 0;
- }
- public static int NextPowerOfTwo(int v)
- {
- --v;
- v |= v >> 16;
- v |= v >> 8;
- v |= v >> 4;
- v |= v >> 2;
- v |= v >> 1;
- return v + 1;
- }
- }
- }
|