static void QuaternionMath() { //Collect user input, All units are arbitrary Console.Write("Enter a scalar value: "); float scalar = Convert.ToSingle(Console.ReadLine()); Console.WriteLine("Enter the first quaternion:"); Console.Write("Scalar component: "); float w = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-x component: "); float x = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-y component: "); float y = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-z component: "); float z = Convert.ToSingle(Console.ReadLine()); Quaternion first = new Quaternion(w, x, y, z); Console.WriteLine("Enter the second quaternion:"); Console.Write("Scalar component: "); w = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-x component: "); x = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-y component: "); y = Convert.ToSingle(Console.ReadLine()); Console.Write("Vector-z component: "); z = Convert.ToSingle(Console.ReadLine()); Quaternion second = new Quaternion(w, x, y, z); //Display output Console.WriteLine("Sum: " + (first + second)); Console.WriteLine("Difference: " + (first - second)); Console.WriteLine("Scalar multiplication: " + (scalar * first) + " and " + (scalar * second)); Console.WriteLine("Quaternion multipliation: " + (first * second)); Console.WriteLine("Magnitudes: " + first.GetMagnitude() + " and " + second.GetMagnitude()); Console.WriteLine("Conjugates: " + first.GetConjugate() + " and " + second.GetConjugate()); Console.WriteLine("Inverses: " + first.GetInverse() + " and " + second.GetInverse()); }