/// <summary> /// copy constructor /// </summary> public qbool(qbool q) { this.x = q.x; this.y = q.y; this.z = q.z; this.w = q.w; }
/// <summary> /// Tries to convert the string representation of the quaternion into a quaternion representation (using a designated separator), returns false if string was invalid. /// </summary> public static bool TryParse(string s, string sep, out qbool result) { result = Zero; if (string.IsNullOrEmpty(s)) { return(false); } var kvp = s.Split(new[] { sep }, StringSplitOptions.None); if (kvp.Length != 4) { return(false); } bool x = false, y = false, z = false, w = false; var ok = ((bool.TryParse(kvp[0].Trim(), out x) && bool.TryParse(kvp[1].Trim(), out y)) && (bool.TryParse(kvp[2].Trim(), out z) && bool.TryParse(kvp[3].Trim(), out w))); result = ok ? new qbool(x, y, z, w) : Zero; return(ok); }
/// <summary> /// Returns a qbool from component-wise application of And (lhs && rhs). /// </summary> public static qbool And(bool lhs, qbool rhs) => new qbool(lhs && rhs.x, lhs && rhs.y, lhs && rhs.z, lhs && rhs.w);
/// <summary> /// Returns a bool4 from component-wise application of Equal (lhs == rhs). /// </summary> public static bool4 Equal(qbool lhs, qbool rhs) => qbool.Equal(lhs, rhs);
/// <summary> /// Returns a qbool from component-wise application of And (lhs && rhs). /// </summary> public static qbool And(qbool lhs, bool rhs) => new qbool(lhs.x && rhs, lhs.y && rhs, lhs.z && rhs, lhs.w && rhs);
/// <summary> /// Returns a qbool from component-wise application of Xor (lhs != rhs). /// </summary> public static qbool Xor(qbool lhs, bool rhs) => new qbool(lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs);
/// <summary> /// Returns a qbool from component-wise application of Xnor (lhs == rhs). /// </summary> public static qbool Xnor(bool lhs, qbool rhs) => new qbool(lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w);
/// <summary> /// Returns a bool4 from component-wise application of Not (!v). /// </summary> public static bool4 Not(qbool v) => qbool.Not(v);
/// <summary> /// Returns a qbool from component-wise application of Nor (!(lhs || rhs)). /// </summary> public static qbool Nor(bool lhs, qbool rhs) => new qbool(!(lhs || rhs.x), !(lhs || rhs.y), !(lhs || rhs.z), !(lhs || rhs.w));
/// <summary> /// Tries to convert the string representation of the quaternion into a quaternion representation (using ', ' as a separator), returns false if string was invalid. /// </summary> public static bool TryParse(string s, out qbool result) => TryParse(s, ", ", out result);
/// <summary> /// Returns a qbool from component-wise application of Or (lhs || rhs). /// </summary> public static qbool Or(qbool lhs, qbool rhs) => new qbool(lhs.x || rhs.x, lhs.y || rhs.y, lhs.z || rhs.z, lhs.w || rhs.w);
/// <summary> /// Returns a qbool from component-wise application of Nor (!(lhs || rhs)). /// </summary> public static qbool Nor(qbool lhs, qbool rhs) => qbool.Nor(lhs, rhs);
/// <summary> /// Returns true iff this equals rhs component-wise. /// </summary> public bool Equals(qbool rhs) => ((x.Equals(rhs.x) && y.Equals(rhs.y)) && (z.Equals(rhs.z) && w.Equals(rhs.w)));
/// <summary> /// Returns a qbool from component-wise application of Or (lhs || rhs). /// </summary> public static qbool Or(qbool lhs, qbool rhs) => qbool.Or(lhs, rhs);
/// <summary> /// Returns a qbool from component-wise application of Nand (!(lhs && rhs)). /// </summary> public static qbool Nand(qbool lhs, qbool rhs) => qbool.Nand(lhs, rhs);
/// <summary> /// Returns a qbool from component-wise application of And (lhs && rhs). /// </summary> public static qbool And(qbool lhs, qbool rhs) => qbool.And(lhs, rhs);
/// <summary> /// Returns a qbool from component-wise application of Nand (!(lhs && rhs)). /// </summary> public static qbool Nand(qbool lhs, bool rhs) => new qbool(!(lhs.x && rhs), !(lhs.y && rhs), !(lhs.z && rhs), !(lhs.w && rhs));
/// <summary> /// Returns a qbool from component-wise application of Or (lhs || rhs). /// </summary> public static qbool Or(bool lhs, qbool rhs) => new qbool(lhs || rhs.x, lhs || rhs.y, lhs || rhs.z, lhs || rhs.w);
/// <summary> /// Returns a qbool from component-wise application of Nand (!(lhs && rhs)). /// </summary> public static qbool Nand(bool lhs, qbool rhs) => new qbool(!(lhs && rhs.x), !(lhs && rhs.y), !(lhs && rhs.z), !(lhs && rhs.w));
/// <summary> /// Returns a bool4 from component-wise application of NotEqual (lhs != rhs). /// </summary> public static bool4 NotEqual(qbool lhs, qbool rhs) => qbool.NotEqual(lhs, rhs);
/// <summary> /// Returns a qbool from component-wise application of Or (lhs || rhs). /// </summary> public static qbool Or(qbool lhs, bool rhs) => new qbool(lhs.x || rhs, lhs.y || rhs, lhs.z || rhs, lhs.w || rhs);
/// <summary> /// Returns a bool4 from component-wise application of Equal (lhs == rhs). /// </summary> public static bool4 Equal(qbool lhs, bool rhs) => new bool4(lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs);
/// <summary> /// Returns a qbool from component-wise application of Nor (!(lhs || rhs)). /// </summary> public static qbool Nor(qbool lhs, bool rhs) => new qbool(!(lhs.x || rhs), !(lhs.y || rhs), !(lhs.z || rhs), !(lhs.w || rhs));
/// <summary> /// Returns a bool4 from component-wise application of NotEqual (lhs != rhs). /// </summary> public static bool4 NotEqual(qbool lhs, bool rhs) => new bool4(lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs);
/// <summary> /// Returns a qbool from component-wise application of Xor (lhs != rhs). /// </summary> public static qbool Xor(qbool lhs, qbool rhs) => new qbool(lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w);
/// <summary> /// Returns a bool4 from component-wise application of NotEqual (lhs != rhs). /// </summary> public static bool4 NotEqual(bool lhs, qbool rhs) => new bool4(lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w);
/// <summary> /// Returns a qbool from component-wise application of Xnor (lhs == rhs). /// </summary> public static qbool Xnor(qbool lhs, bool rhs) => new qbool(lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs);
/// <summary> /// Returns a bool4 from component-wise application of Not (!v). /// </summary> public static bool4 Not(qbool v) => new bool4(!v.x, !v.y, !v.z, !v.w);
/// <summary> /// Returns a qbool from component-wise application of And (lhs && rhs). /// </summary> public static qbool And(qbool lhs, qbool rhs) => new qbool(lhs.x && rhs.x, lhs.y && rhs.y, lhs.z && rhs.z, lhs.w && rhs.w);
/// <summary> /// Returns a hash code for this instance. /// </summary> public static int GetHashCode(qbool q) => q.GetHashCode();