namespace Dali { namespace CSharp { using System; public class Position { public float[] v; /** * @brief default constructor * * @since 1.0.0 */ public Position() { v = new float[3]; } /** * @brief constructor * * @since 1.0.0 * @param [in] a The Position X. * @param [in] b The Position Y. * @param [in] c The Position Z. */ public Position(float a, float b, float c):this() { v[0] = a; v[1] = b; v[2] = c; } /** * @brief constructor * * @since 1.0.0 * @param [in] o The Vector Position X, Y, Z. */ public Position(Vector3 o) : this(o.x, o.y, o.z) { } ///< name "X", type float (Position X value) //@since 1.0.0 public float X { get { return v[0]; } set { v[0] = value; } } ///< name "Y", type float (Position Y value) //@since 1.0.0 public float Y { get { return v[1]; } set { v[1] = value; } } ///< name "Z", type float (Position Z value) //@since 1.0.0 public float Z { get { return v[2]; } set { v[2] = value; } } /** * @brief operator+ * * @since 1.0.0 * @param [in] l The Position to add. * @param [in] r The Position to add * @return A reference to this */ public static Position operator +(Position l, Position r) { return new Position(l.X + r.X, l.Y + r.Y, l.Z + r.Z); } /** * @brief operator- * * @since 1.0.0 * @param [in] l The Position to substract. * @param [in] r The Position to substract * @return A reference to this */ public static Position operator -(Position l, Position r) { return new Position(l.X - r.X, l.Y - r.Y, l.Z - r.Z); } /** * @brief operator* * * @since 1.0.0 * @param [in] a The Position to multiply. * @param [in] b The Position to multiply * @return A reference to this */ public static Position operator *(Position a, double b) { return new Position((float)(a.X * b), (float)(a.Y * b), (float)(a.Z * b)); } /** * @brief operator/ * * @since 1.0.0 * @param [in] a The Position to divide. * @param [in] b The Position to divide * @return float value of division operation */ public static float operator /(Position a, Position b) { return (float)System.Math.Sqrt((a.X / b.X) * (a.Y / b.Y) * (a.Z / b.Z)); } /** * @brief Equals * * @since 1.0.0 * @param [in] o The Position object to compare. * @return bool, whether object equal or not */ public override bool Equals(object obj) { Position r = obj as Position; if (r == null) { return false; } return this.X == r.X && this.Y == r.Y && this.Z == r.Z; } /** * @brief Clone * * @since 1.0.0 * @return Position object */ public Position Clone() { Position copy = new Position(X, Y, Z); return copy; } } } }