OSDN Git Service

refactored
[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\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 \r
33     public partial struct Point3\r
34     {\r
35         public float x, y, z;\r
36 \r
37         public Point3(float x, float y, float z)\r
38         {\r
39             this.x  = x;\r
40             this.y  = y;\r
41             this.z  = z;\r
42         }\r
43 \r
44         public float    X   { get { return x; } set { x= value; } }\r
45         public float    Y   { get { return y; } set { y= value; } }\r
46         public float    Z   { get { return z; } set { z= value; } }\r
47 \r
48         public static Point3 operator+(Point3 a, Point3 b)\r
49         {\r
50             return new Point3(a.x+b.x, a.y+b.y, a.z+b.z);\r
51         }\r
52 \r
53         public static Point3 operator-(Point3 a, Point3 b)\r
54         {\r
55             return new Point3(a.x-b.x, a.y-b.y, a.z-b.z);\r
56         }\r
57 \r
58         public override string ToString()\r
59         {\r
60             return X+","+Y+","+Z;\r
61         }\r
62 \r
63         public static Point3    Cross(Point3 p, Point3 q)\r
64         {\r
65             return new Point3(\r
66                 p.y*q.z - p.z*q.y,\r
67                 p.z*q.x - p.x*q.z,\r
68                 p.x*q.y - p.y*q.x);\r
69         }\r
70 \r
71         public static Point3    Normalize(Point3 p)\r
72         {\r
73             float   d   = p.x*p.x + p.y*p.y + p.z*p.z;\r
74 \r
75             if(d < 0.00001f)\r
76                 return p;\r
77 \r
78             d           = (float)(1 / (Math.Sqrt(d)));\r
79             return new Point3(p.x*d, p.y*d, p.z*d);\r
80         }\r
81 \r
82         public static Point3    Parse(string[] t, int  begin)\r
83         {\r
84             return new Point3(\r
85                 float.Parse(t[begin+0]),\r
86                 float.Parse(t[begin+1]),\r
87                 float.Parse(t[begin+2]));\r
88         }\r
89     }\r
90 \r
91     public partial struct Point4\r
92     {\r
93         public float x, y, z, w;\r
94 \r
95         public Point4(float x, float y, float z, float w)\r
96         {\r
97             this.x  = x;\r
98             this.y  = y;\r
99             this.z  = z;\r
100             this.w  = w;\r
101         }\r
102 \r
103         public float    X   { get { return x; } set { x= value; } }\r
104         public float    Y   { get { return y; } set { y= value; } }\r
105         public float    Z   { get { return z; } set { z= value; } }\r
106         public float    W   { get { return w; } set { w= value; } }\r
107 \r
108         public override string ToString()\r
109         {\r
110             return X+","+Y+","+Z+","+W;\r
111         }\r
112     }\r
113 \r
114     public partial struct Color3\r
115     {\r
116         public float    r, g, b;\r
117         \r
118         public Color3(float r, float g, float b)\r
119         {\r
120             this.r  = r;\r
121             this.g  = g;\r
122             this.b  = b;\r
123         }\r
124 \r
125         public float    R   { get { return r; } set { r= value; } }\r
126         public float    G   { get { return g; } set { g= value; } }\r
127         public float    B   { get { return b; } set { b= value; } }\r
128 \r
129         public override string ToString()\r
130         {\r
131             return R+","+G+","+B;\r
132         }\r
133 \r
134         public static Color3    Parse(string[] t, int  begin)\r
135         {\r
136             return new Color3(\r
137                 float.Parse(t[begin+0]),\r
138                 float.Parse(t[begin+1]),\r
139                 float.Parse(t[begin+2]));\r
140         }\r
141     }\r
142 }\r