From ede90adbdc8ae3ff682e2aab9331937d0e8cb4dd Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sun, 19 Oct 2025 00:14:39 +0300 Subject: [PATCH] feat: quaternion rotate method added --- Engine.Core/Primitives/Quaternion.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Engine.Core/Primitives/Quaternion.cs b/Engine.Core/Primitives/Quaternion.cs index bdf48cb..2f3c918 100644 --- a/Engine.Core/Primitives/Quaternion.cs +++ b/Engine.Core/Primitives/Quaternion.cs @@ -156,6 +156,15 @@ public readonly struct Quaternion(float x, float y, float z, float w) : IEquatab /// The normalized . public static Quaternion Normalize(Quaternion quaternion) => quaternion / Length(quaternion); + /// + /// Rotates a around a axis by the specified angle (in radians). + /// + /// The to rotate. + /// The to rotate around. + /// The angle to rotate by, in radians. + /// The rotated . + public static Quaternion Rotate(Quaternion vector, Vector3D axis, float angleInRadian) => vector * Quaternion.FromAxisAngle(axis, angleInRadian); + /// /// Inverts the direction of the . /// @@ -358,6 +367,9 @@ public static class QuaternionExtensions /// public static Quaternion Normalize(this Quaternion quaternion) => Quaternion.Normalize(quaternion); + /// + public static Quaternion Rotate(this Quaternion vector, Vector3D normal, float angleInRadian) => Quaternion.Rotate(vector, normal, angleInRadian); + /// public static Quaternion Invert(this Quaternion quaternion) => Quaternion.Invert(quaternion);