OSDN Git Service

refactored. CompareTo
[tdcgexplorer/tso2mqo.git] / General.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 \r
5 namespace Tso2MqoGui\r
6 {\r
7     public partial struct Point2 : IComparable<Point2>\r
8     {\r
9         public float x, y;\r
10 \r
11         public Point2(float x, float y)\r
12         {\r
13             this.x  = x;\r
14             this.y  = y;\r
15         }\r
16 \r
17         public float    X   { get { return x; } set { x= value; } }\r
18         public float    Y   { get { return y; } set { y= value; } }\r
19 \r
20         public override string ToString()\r
21         {\r
22             return X+","+Y;\r
23         }\r
24 \r
25         public static Point2    Parse(string[] t, int  begin)\r
26         {\r
27             return new Point2(\r
28                 float.Parse(t[begin+0]),\r
29                 float.Parse(t[begin+1]));\r
30         }\r
31 \r
32         public int CompareTo(Point2 obj)\r
33         {\r
34             int cmp;\r
35             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
36             cmp = y.CompareTo(obj.y);\r
37             return cmp;\r
38         }\r
39     }\r
40 \r
41     public partial struct Point3 : IComparable<Point3>\r
42     {\r
43         public float x, y, z;\r
44 \r
45         public Point3(float x, float y, float z)\r
46         {\r
47             this.x  = x;\r
48             this.y  = y;\r
49             this.z  = z;\r
50         }\r
51 \r
52         public float    X   { get { return x; } set { x= value; } }\r
53         public float    Y   { get { return y; } set { y= value; } }\r
54         public float    Z   { get { return z; } set { z= value; } }\r
55 \r
56         public static Point3 operator+(Point3 a, Point3 b)\r
57         {\r
58             return new Point3(a.x+b.x, a.y+b.y, a.z+b.z);\r
59         }\r
60 \r
61         public static Point3 operator-(Point3 a, Point3 b)\r
62         {\r
63             return new Point3(a.x-b.x, a.y-b.y, a.z-b.z);\r
64         }\r
65 \r
66         public override string ToString()\r
67         {\r
68             return X+","+Y+","+Z;\r
69         }\r
70 \r
71         public static Point3    Cross(Point3 p, Point3 q)\r
72         {\r
73             return new Point3(\r
74                 p.y*q.z - p.z*q.y,\r
75                 p.z*q.x - p.x*q.z,\r
76                 p.x*q.y - p.y*q.x);\r
77         }\r
78 \r
79         public static Point3    Normalize(Point3 p)\r
80         {\r
81             float   d   = p.x*p.x + p.y*p.y + p.z*p.z;\r
82 \r
83             if(d < 0.00001f)\r
84                 return p;\r
85 \r
86             d           = (float)(1 / (Math.Sqrt(d)));\r
87             return new Point3(p.x*d, p.y*d, p.z*d);\r
88         }\r
89 \r
90         public static Point3    Parse(string[] t, int  begin)\r
91         {\r
92             return new Point3(\r
93                 float.Parse(t[begin+0]),\r
94                 float.Parse(t[begin+1]),\r
95                 float.Parse(t[begin+2]));\r
96         }\r
97 \r
98         public int CompareTo(Point3 obj)\r
99         {\r
100             int cmp;\r
101             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
102             cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
103             cmp = z.CompareTo(obj.z);\r
104             return cmp;\r
105         }\r
106     }\r
107 \r
108     public partial struct Point4 : IComparable<Point4>\r
109     {\r
110         public float x, y, z, w;\r
111 \r
112         public Point4(float x, float y, float z, float w)\r
113         {\r
114             this.x  = x;\r
115             this.y  = y;\r
116             this.z  = z;\r
117             this.w  = w;\r
118         }\r
119 \r
120         public float    X   { get { return x; } set { x= value; } }\r
121         public float    Y   { get { return y; } set { y= value; } }\r
122         public float    Z   { get { return z; } set { z= value; } }\r
123         public float    W   { get { return w; } set { w= value; } }\r
124 \r
125         public override string ToString()\r
126         {\r
127             return X+","+Y+","+Z+","+W;\r
128         }\r
129 \r
130         public int CompareTo(Point4 obj)\r
131         {\r
132             int cmp;\r
133             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
134             cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
135             cmp = z.CompareTo(obj.z); if (cmp != 0) return cmp;\r
136             cmp = w.CompareTo(obj.w);\r
137             return cmp;\r
138         }\r
139     }\r
140 \r
141     public partial struct Color3\r
142     {\r
143         public float    r, g, b;\r
144         \r
145         public Color3(float r, float g, float b)\r
146         {\r
147             this.r  = r;\r
148             this.g  = g;\r
149             this.b  = b;\r
150         }\r
151 \r
152         public float    R   { get { return r; } set { r= value; } }\r
153         public float    G   { get { return g; } set { g= value; } }\r
154         public float    B   { get { return b; } set { b= value; } }\r
155 \r
156         public override string ToString()\r
157         {\r
158             return R+","+G+","+B;\r
159         }\r
160 \r
161         public static Color3    Parse(string[] t, int  begin)\r
162         {\r
163             return new Color3(\r
164                 float.Parse(t[begin+0]),\r
165                 float.Parse(t[begin+1]),\r
166                 float.Parse(t[begin+2]));\r
167         }\r
168     }\r
169 }\r