From 5826230e7aa9cd0b2714a0f0f0580f8e929ccd44 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 1 Feb 2024 12:56:42 +0300 Subject: [PATCH] docs(core): Math --- Engine.Core/Math.cs | 165 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 160 insertions(+), 5 deletions(-) diff --git a/Engine.Core/Math.cs b/Engine.Core/Math.cs index eda310b..5d203db 100644 --- a/Engine.Core/Math.cs +++ b/Engine.Core/Math.cs @@ -4,32 +4,187 @@ using System.Numerics; namespace Syntriax.Engine.Core; public static class Math -{ - public const float RadianToDegree = 180f / PI; - public const float DegreeToRadian = PI / 180f; - - public const float E = 2.718281828459045f; +{/// + /// The value of Pi (π), a mathematical constant approximately equal to 3.14159. + /// public const float PI = 3.1415926535897932f; + + /// + /// The value of Tau (τ), a mathematical constant equal to 2π, approximately equal to 6.28319. + /// public const float Tau = 2f * PI; + /// + /// The base of the natural logarithm, approximately equal to 2.71828. + /// + public const float E = 2.718281828459045f; + + /// + /// The conversion factor from radians to degrees. + /// + public const float RadianToDegree = 180f / PI; + + /// + /// The conversion factor from degrees to radians. + /// + public const float DegreeToRadian = PI / 180f; + + /// + /// Returns the absolute value of a number. + /// + /// The type of the number. + /// The number. + /// The absolute value of . public static T Abs(T x) where T : INumber => x > T.Zero ? x : -x; + + /// + /// Returns the arccosine of a number. + /// + /// The number. + /// The arccosine of . public static float Acos(float x) => MathF.Acos(x); + + /// + /// Returns the arcsine of a number. + /// + /// The number. + /// The arcsine of . public static float Asin(float x) => MathF.Asin(x); + + /// + /// Returns the angle whose tangent is the quotient of two specified numbers. + /// + /// The y-coordinate of a point. + /// The x-coordinate of a point. + /// The angle, measured in radians. public static float Atan2(float y, float x) => MathF.Atan2(y, x); + + /// + /// Returns the hyperbolic arctangent of a number. + /// + /// The number. + /// The hyperbolic arctangent of . public static float Atanh(float x) => MathF.Atanh(x); + + /// + /// Clamps a number between a minimum and maximum value. + /// + /// The type of the number. + /// The number to clamp. + /// The minimum value. + /// The maximum value. + /// The clamped value. public static T Clamp(this T x, T min, T max) where T : INumber => (x < min) ? min : (x > max) ? max : x; + + /// + /// Returns the smallest integral value that is greater than or equal to the specified number. + /// + /// The number. + /// The smallest integral value that is greater than or equal to . public static float Ceiling(float x) => MathF.Ceiling(x); + + /// + /// Returns a value with the magnitude of and the sign of . + /// + /// The magnitude value. + /// The sign value. + /// A value with the magnitude of and the sign of . public static float CopySign(float x, float y) => MathF.CopySign(x, y); + + /// + /// Returns the largest integral value that is less than or equal to the specified number. + /// + /// The number. + /// The largest integral value that is less than or equal to . public static float Floor(float x) => MathF.Floor(x); + + /// + /// Returns the remainder of the division of two specified numbers. + /// + /// The dividend. + /// The divisor. + /// The remainder of the division of by . public static float IEEERemainder(float x, float y) => MathF.IEEERemainder(x, y); + + /// + /// Returns the natural (base e) logarithm of a specified number. + /// + /// The number. + /// The base. + /// The natural logarithm of with base . public static float Log(float x, float y) => MathF.Log(x, y); + + /// + /// Returns the larger of two numbers. + /// + /// The type of the numbers. + /// The first number. + /// The second number. + /// The larger of and . public static T Max(T x, T y) where T : INumber => (x > y) ? x : y; + + /// + /// Returns the number whose absolute value is larger. + /// + /// The first number. + /// The second number. + /// The number whose absolute value is larger. public static float MaxMagnitude(float x, float y) => MathF.MaxMagnitude(x, y); + + /// + /// Returns the smaller of two numbers. + /// + /// The type of the numbers. + /// The first number. + /// The second number. + /// The smaller of and . public static T Min(T x, T y) where T : INumber => (x < y) ? x : y; + + /// + /// Returns the number whose absolute value is smaller. + /// + /// The first number. + /// The second number. + /// The number whose absolute value is smaller. public static float MinMagnitude(float x, float y) => MathF.MinMagnitude(x, y); + + /// + /// Returns a specified number raised to the specified power. + /// + /// The number to raise to a power. + /// The power to raise to. + /// The number raised to the power . public static float Pow(float x, float y) => MathF.Pow(x, y); + + /// + /// Rounds a number to a specified number of fractional digits. + /// + /// The number to round. + /// The number of fractional digits in the return value. + /// Specification for how to round if it is midway between two other numbers. + /// The number rounded to fractional digits. public static float Round(float x, int digits, MidpointRounding mode) => MathF.Round(x, digits, mode); + + /// + /// Returns the square of a number. + /// + /// The type of the number. + /// The number to square. + /// The square of . public static T Sqr(T x) where T : INumber => x * x; + + /// + /// Returns the square root of a specified number. + /// + /// The number. + /// The square root of . public static float Sqrt(float x) => MathF.Sqrt(x); + + /// + /// Calculates the integral part of a number. + /// + /// The number. + /// The integral part of . public static float Truncate(float x) => MathF.Truncate(x); + }