<PackageReference Include="System.Numerics.Vectors" Version="4.6.0" />

System.Numerics.Quaternion

public struct Quaternion : IEquatable<Quaternion>
A structure encapsulating a four-dimensional vector (x,y,z,w), which is used to efficiently rotate an object about the (x,y,z) vector by the angle theta, where w = cos(theta/2).
namespace System.Numerics { public struct Quaternion : IEquatable<Quaternion> { public float X; public float Y; public float Z; public float W; public static Quaternion Identity { get; } public bool IsIdentity { get; } public Quaternion(float x, float y, float z, float w); public Quaternion(Vector3 vectorPart, float scalarPart); public float Length(); public float LengthSquared(); public static Quaternion Normalize(Quaternion value); public static Quaternion Conjugate(Quaternion value); public static Quaternion Inverse(Quaternion value); public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle); public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll); public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix); public static float Dot(Quaternion quaternion1, Quaternion quaternion2); public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount); public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount); public static Quaternion Concatenate(Quaternion value1, Quaternion value2); public static Quaternion Negate(Quaternion value); public static Quaternion Add(Quaternion value1, Quaternion value2); public static Quaternion Subtract(Quaternion value1, Quaternion value2); public static Quaternion Multiply(Quaternion value1, Quaternion value2); public static Quaternion Multiply(Quaternion value1, float value2); public static Quaternion Divide(Quaternion value1, Quaternion value2); public static Quaternion operator -(Quaternion value); public static Quaternion operator +(Quaternion value1, Quaternion value2); public static Quaternion operator -(Quaternion value1, Quaternion value2); public static Quaternion operator *(Quaternion value1, Quaternion value2); public static Quaternion operator *(Quaternion value1, float value2); public static Quaternion operator /(Quaternion value1, Quaternion value2); public static bool operator ==(Quaternion value1, Quaternion value2); public static bool operator !=(Quaternion value1, Quaternion value2); public bool Equals(Quaternion other); } }