Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 public static float Distance(RealQuaternion lhs, RealQuaternion rhs) =>
 (float)Math.Sqrt(DistanceSquared(lhs, rhs));
Beispiel #4
0
 public static float DistanceSquared(RealQuaternion lhs, RealQuaternion rhs) =>
 (lhs - rhs).LengthSquared;
Beispiel #5
0
 public static float Dot(RealQuaternion lhs, RealQuaternion rhs) =>
 (lhs.I * rhs.I) +
 (lhs.J * rhs.J) +
 (lhs.K * rhs.K) +
 (lhs.W * rhs.W);
Beispiel #6
0
 public bool Equals(RealQuaternion other) =>
 (I == other.I) &&
 (J == other.J) &&
 (K == other.K) &&
 (W == other.W);
Beispiel #7
0
 public RealVector3d(RealQuaternion vector) : this(vector.I, vector.J, vector.K)
 {
 }