OSDN Git Service

323
[psychlops/silverlight.git] / dev4 / psychlops / core / math / util.cs
index 338423a..20886e0 100644 (file)
@@ -5,20 +5,20 @@ namespace Psychlops
 \r
        public static class Math\r
        {\r
-               public static readonly double PI = 3.14159265, E = 2.718281828459045, LOG2E = 1.44269504088896340736;\r
+               public const double PI = 3.14159265, E = 2.718281828459045, LOG2E = 1.44269504088896340736;\r
                public static Random random_generator;\r
                static Math()\r
                {\r
                        random_generator = new Random();\r
                }\r
 \r
-               public static double max(double val1, double val2)\r
+               public static T max<T>(T val1, T val2) where T : IComparable\r
                {\r
-                       return val1 > val2 ? val1 : val2;\r
+                       return val1.CompareTo(val2) > 0 ? val1 : val2;\r
                }\r
-               public static double min(double val1, double val2)\r
+               public static T min<T>(T val1, T val2) where T : IComparable\r
                {\r
-                       return val1 < val2 ? val1 : val2;\r
+                       return val1.CompareTo(val2) < 0 ? val1 : val2;\r
                }\r
                public static void shuffle<X>(X[] array, int n)\r
                {\r
@@ -41,6 +41,14 @@ namespace Psychlops
                {\r
                        return System.Math.Abs(x);\r
                }\r
+               public static double floor(double x)\r
+               {\r
+                       return System.Math.Floor(x);\r
+               }\r
+               public static double ceil(double x)\r
+               {\r
+                       return System.Math.Ceiling(x);\r
+               }\r
                public static double sin(double x)\r
                {\r
                        return System.Math.Sin(x);\r
@@ -53,6 +61,26 @@ namespace Psychlops
                {\r
                        return System.Math.Tan(x);\r
                }\r
+               public static double asin(double x)\r
+               {\r
+                       return System.Math.Asin(x);\r
+               }\r
+               public static double acos(double x)\r
+               {\r
+                       return System.Math.Acos(x);\r
+               }\r
+               public static double atan(double x)\r
+               {\r
+                       return System.Math.Atan(x);\r
+               }\r
+               public static double atan(double y, double x)\r
+               {\r
+                       return System.Math.Atan2(y, x);\r
+               }\r
+               public static double atan2(double y, double x)\r
+               {\r
+                       return System.Math.Atan2(y, x);\r
+               }\r
                public static double sqrt(double x)\r
                {\r
                        return System.Math.Sqrt(x);\r
@@ -69,11 +97,10 @@ namespace Psychlops
                {\r
                        return log(val) * LOG2E;\r
                }\r
-               /*public static int round(double val)\r
+               public static double round(double val)\r
                {\r
-                       double integer_part, particle = modf(val, &integer_part);\r
-                       return ((particle < 0.5 | (particle == 0.5 && (int)integer_part % 2 == 0)) ? (int)integer_part : (int)integer_part + 1);\r
-               }*/\r
+                       return System.Math.Round(val);\r
+               }\r
 \r
                public static double radius(double x, double y)\r
                {\r