public bool TryParse(GameCache cache, List <string> args, out IBlamType result, out string error) { result = null; if (args.Count != 4) { error = $"{args.Count} arguments supplied; should be 4"; return(false); } else if (!float.TryParse(args[0], out float i)) { error = $"Unable to parse \"{args[0]}\" (i) as `float`."; return(false); } else if (!float.TryParse(args[1], out float j)) { error = $"Unable to parse \"{args[1]}\" (j) as `float`."; return(false); } else if (!float.TryParse(args[2], out float k)) { error = $"Unable to parse \"{args[2]}\" (k) as `float`."; return(false); } else if (!float.TryParse(args[3], out float w)) { error = $"Unable to parse \"{args[3]}\" (w) as `float`."; return(false); } else { result = new RealQuaternion(i, j, k, w); error = null; return(true); } }
private static void SerializeRealQuaternion(IDataBlock block, RealQuaternion quat) { block.Writer.Write(quat.I); block.Writer.Write(quat.J); block.Writer.Write(quat.K); block.Writer.Write(quat.W); }
public static float Distance(RealQuaternion lhs, RealQuaternion rhs) => (float)Math.Sqrt(DistanceSquared(lhs, rhs));
public static float DistanceSquared(RealQuaternion lhs, RealQuaternion rhs) => (lhs - rhs).LengthSquared;
public static float Dot(RealQuaternion lhs, RealQuaternion rhs) => (lhs.I * rhs.I) + (lhs.J * rhs.J) + (lhs.K * rhs.K) + (lhs.W * rhs.W);
public bool Equals(RealQuaternion other) => (I == other.I) && (J == other.J) && (K == other.K) && (W == other.W);
public RealVector3d(RealQuaternion vector) : this(vector.I, vector.J, vector.K) { }