Code:public struct Vector { public Single X, Y, Z; public Vector(Single X, Single Y, Single Z) { this.X = X; this.Y = Y; this.Z = Z; } public Single Size() { return (Single)Math.Sqrt(X * X + Y * Y + Z * Z); } public Single Size2D() { return (Single)Math.Sqrt(X * X + Y * Y); } public Single DistanceTo(Vector B) { return (this - B).Size(); } public static Single Distance(Vector A, Vector B) { return (A - B).Size(); } public static Vector operator -(Vector A, Vector B) { return new Vector(A.X - B.X, A.Y - B.Y, A.Z - B.Z); } public static Vector operator +(Vector A, Vector B) { return new Vector(A.X + B.X, A.Y + B.Y, A.Z + B.Z); } public static Vector operator *(Vector A, Vector B) { return new Vector(A.X * B.X, A.Y * B.Y, A.Z * B.Z); } public static Vector operator /(Vector A, Vector B) { return new Vector(A.X / B.X, A.Y / B.Y, A.Z / B.Z); } public static Vector operator *(Vector A, Single B) { return new Vector(A.X * B, A.Y * B, A.Z * B); } public static Vector operator /(Vector A, Single B) { return new Vector(A.X / B, A.Y / B, A.Z / B); } public static Boolean operator ==(Vector A, Vector B) { return A.X == B.X && A.Y == B.Y && A.Z == B.Z; } public static Boolean operator !=(Vector A, Vector B) { return A.X != B.X || A.Y != B.Y || A.Z != B.Z; } public String ToString() { return String.Format("({0}, {1}, {2})", X, Y, Z); } }