2 using System.Collections.Generic;
\r
7 public partial struct Point2 : IComparable<Point2>
\r
11 public Point2(float x, float y)
\r
17 public float X { get { return x; } set { x= value; } }
\r
18 public float Y { get { return y; } set { y= value; } }
\r
20 public override string ToString()
\r
25 public static Point2 Parse(string[] t, int begin)
\r
28 float.Parse(t[begin+0]),
\r
29 float.Parse(t[begin+1]));
\r
32 public int CompareTo(Point2 obj)
\r
35 cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;
\r
36 cmp = y.CompareTo(obj.y);
\r
41 public partial struct Point3 : IComparable<Point3>
\r
43 public float x, y, z;
\r
45 public Point3(float x, float y, float z)
\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
56 public static Point3 operator+(Point3 a, Point3 b)
\r
58 return new Point3(a.x+b.x, a.y+b.y, a.z+b.z);
\r
61 public static Point3 operator-(Point3 a, Point3 b)
\r
63 return new Point3(a.x-b.x, a.y-b.y, a.z-b.z);
\r
66 public override string ToString()
\r
68 return X+","+Y+","+Z;
\r
71 public static Point3 Cross(Point3 p, Point3 q)
\r
79 public static Point3 Normalize(Point3 p)
\r
81 float d = p.x*p.x + p.y*p.y + p.z*p.z;
\r
86 d = (float)(1 / (Math.Sqrt(d)));
\r
87 return new Point3(p.x*d, p.y*d, p.z*d);
\r
90 public static Point3 Parse(string[] t, int begin)
\r
93 float.Parse(t[begin+0]),
\r
94 float.Parse(t[begin+1]),
\r
95 float.Parse(t[begin+2]));
\r
98 public int CompareTo(Point3 obj)
\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
108 public partial struct Point4 : IComparable<Point4>
\r
110 public float x, y, z, w;
\r
112 public Point4(float x, float y, float z, float w)
\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
125 public override string ToString()
\r
127 return X+","+Y+","+Z+","+W;
\r
130 public int CompareTo(Point4 obj)
\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
141 public partial struct Color3
\r
143 public float r, g, b;
\r
145 public Color3(float r, float g, float b)
\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
156 public override string ToString()
\r
158 return R+","+G+","+B;
\r
161 public static Color3 Parse(string[] t, int begin)
\r
164 float.Parse(t[begin+0]),
\r
165 float.Parse(t[begin+1]),
\r
166 float.Parse(t[begin+2]));
\r