diff --git a/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs b/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs index 1824bd38d32558..2819d363252049 100644 --- a/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs +++ b/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs @@ -153,6 +153,7 @@ public partial struct Quaternion : System.IEquatable public float Z; public Quaternion(System.Numerics.Vector3 vectorPart, float scalarPart) { throw null; } public Quaternion(float x, float y, float z, float w) { throw null; } + public static System.Numerics.Quaternion Zero { get { throw null; } } public static System.Numerics.Quaternion Identity { get { throw null; } } public readonly bool IsIdentity { get { throw null; } } public static System.Numerics.Quaternion Add(System.Numerics.Quaternion value1, System.Numerics.Quaternion value2) { throw null; } diff --git a/src/libraries/System.Numerics.Vectors/tests/QuaternionTests.cs b/src/libraries/System.Numerics.Vectors/tests/QuaternionTests.cs index a7e27420c09fdc..d2fe660d2f58c7 100644 --- a/src/libraries/System.Numerics.Vectors/tests/QuaternionTests.cs +++ b/src/libraries/System.Numerics.Vectors/tests/QuaternionTests.cs @@ -878,6 +878,20 @@ public void QuaternionEqualsTest1() Assert.Equal(expected, actual); } + // A test for Zero + [Fact] + public void QuaternionZeroTest() + { + // A default value should be equal to a zero value. + Assert.Equal(default(Quaternion), Quaternion.Zero); + + // A newly constructed value should be equal to a zero value. + Assert.Equal(new Quaternion(), Quaternion.Zero); + + // A newly constructed value with (0, 0, 0, 0) should be equal to a zero value. + Assert.Equal(new Quaternion(0, 0, 0, 0), Quaternion.Zero); + } + // A test for Identity [Fact] public void QuaternionIdentityTest() diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs index ed863caca43be1..e040bbadc2e399 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs @@ -51,6 +51,13 @@ public Quaternion(Vector3 vectorPart, float scalarPart) W = scalarPart; } + /// Gets a quaternion that represents a zero. + /// A quaternion whose values are (0, 0, 0, 0). + public static Quaternion Zero + { + get => default; + } + /// Gets a quaternion that represents no rotation. /// A quaternion whose values are (0, 0, 0, 1). public static Quaternion Identity