< Summary

Information
Class: FixedMathSharp.FixedQuaternionExtensions
Assembly: FixedMathSharp
File(s): /home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Numerics/Extensions/FixedQuaternion.Extensions.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 52
Line coverage: 100%
Branch coverage
57%
Covered branches: 8
Total branches: 14
Branch coverage: 57.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ToAngularVelocity(...)100%11100%
FuzzyEqualAbsolute(...)50%66100%
FuzzyEqual(...)62.5%88100%

File(s)

/home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Numerics/Extensions/FixedQuaternion.Extensions.cs

#LineLine coverage
 1using System.Runtime.CompilerServices;
 2
 3namespace FixedMathSharp
 4{
 5    public static partial class FixedQuaternionExtensions
 6    {
 7        /// <inheritdoc cref="FixedQuaternion.ToAngularVelocity" />
 8        public static Vector3d ToAngularVelocity(
 9            this FixedQuaternion currentRotation,
 10            FixedQuaternion previousRotation,
 11            Fixed64 deltaTime)
 112        {
 113            return FixedQuaternion.ToAngularVelocity(currentRotation, previousRotation, deltaTime);
 114        }
 15
 16        #region Equality
 17
 18        /// <summary>
 19        /// Compares two quaternions for approximate equality, allowing a fixed absolute difference between components.
 20        /// </summary>
 21        /// <param name="q1">The current quaternion.</param>
 22        /// <param name="q2">The quaternion to compare against.</param>
 23        /// <param name="allowedDifference">The allowed absolute difference between each component.</param>
 24        /// <returns>True if the components are within the allowed difference, false otherwise.</returns>
 25        [MethodImpl(MethodImplOptions.AggressiveInlining)]
 26        public static bool FuzzyEqualAbsolute(this FixedQuaternion q1, FixedQuaternion q2, Fixed64 allowedDifference)
 227        {
 228            return (q1.x - q2.x).Abs() <= allowedDifference &&
 229                   (q1.y - q2.y).Abs() <= allowedDifference &&
 230                   (q1.z - q2.z).Abs() <= allowedDifference &&
 231                   (q1.w - q2.w).Abs() <= allowedDifference;
 232        }
 33
 34        /// <summary>
 35        /// Compares two quaternions for approximate equality, allowing a fractional percentage (defaults to ~1%) differ
 36        /// </summary>
 37        /// <param name="q1">The current quaternion.</param>
 38        /// <param name="q2">The quaternion to compare against.</param>
 39        /// <param name="percentage">The allowed fractional difference (percentage) for each component.</param>
 40        /// <returns>True if the components are within the allowed percentage difference, false otherwise.</returns>
 41        public static bool FuzzyEqual(this FixedQuaternion q1, FixedQuaternion q2, Fixed64? percentage = null)
 3142        {
 3143            Fixed64 p = percentage ?? Fixed64.Epsilon;
 3144            return q1.x.FuzzyComponentEqual(q2.x, p) &&
 3145                   q1.y.FuzzyComponentEqual(q2.y, p) &&
 3146                   q1.z.FuzzyComponentEqual(q2.z, p) &&
 3147                   q1.w.FuzzyComponentEqual(q2.w, p);
 3148        }
 49
 50        #endregion
 51    }
 52}