/* * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace ElmSharp { /// /// The Point3D is a struct that defines a 3D point. /// /// preview public struct Point3D : IEquatable { /// /// The X-coordinate of a 3D point. /// /// preview public int X; /// /// The Y-coordinate of a 3D point. /// /// preview public int Y; /// /// The Z-coordinate of a 3D point. /// /// preview public int Z; /// /// A human-readable representation of . /// /// The string is formatted as "{{X={0} Y={1} Z={2}}}". /// preview public override string ToString() { return string.Format("{{X={0} Y={1} Z={2}}}", X, Y, Z); } /// /// preview public override int GetHashCode() { unchecked { int hashCode = X.GetHashCode(); hashCode = (hashCode * 397) ^ Y.GetHashCode(); hashCode = (hashCode * 397) ^ Z.GetHashCode(); return hashCode; } } /// /// Indicates whether this instance and a specified object are equal. /// /// The object to compare with the current instance. /// /// true if the object and this instance are of the same type and represent the same value, /// otherwise false. /// /// preview public override bool Equals(object obj) { if (!(obj is Point3D)) return false; return Equals((Point3D)obj); } /// /// Indicates whether this instance and a object are equal. /// /// The to compare with the current instance. /// /// true if the object and this instance are of the same type and represent the same value. /// otherwise, false. /// /// preview public bool Equals(Point3D other) { return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z); } /// /// Whether both s are equal. /// /// A on the left hand side. /// A on the right hand side. /// True if both s have equal values. /// preview public static bool operator ==(Point3D p1, Point3D p2) { return p1.Equals(p2); } /// /// Whether both s are not equal. /// /// A on the left hand side. /// A on the right hand side. /// True if both s do not have equal values. /// preview public static bool operator !=(Point3D p1, Point3D p2) { return !p1.Equals(p2); } } }