Stride

OPEN / CLOSE
  • Features
  • Blog
  • Documentation
  • Community
(icon) Download

  • Discord
  • Facebook
  • Twitter
  • YouTube

LANGUAGE

OPEN / CLOSE
  • English
  • 日本語
    Show / Hide Table of Contents

    MathUtil Class

    Namespace: Stride.Core.Mathematics
    Assembly: Stride.Core.Mathematics.dll

    Common utility methods for math operations.

    System.Object → MathUtil
    Derived from MathUtil:

    public static class MathUtil
    Name Description
    Fields
    Pi

    A value specifying the approximation of π which is 180 degrees.

    PiOverFour

    A value specifying the approximation of π/4 which is 45 degrees.

    PiOverTwo

    A value specifying the approximation of π/2 which is 90 degrees.

    TwoPi

    A value specifying the approximation of 2π which is 360 degrees.

    ZeroTolerance

    The value for which all absolute numbers smaller than are considered equal to zero.

    ZeroToleranceDouble

    The value for which all absolute numbers smaller than are considered equal to zero.

    Methods
    AlignDown(Int32, Int32)

    Alignes value down to match desire alignment.

    AlignUp(Int32, Int32)

    Alignes value up to match desire alignment.

    Array<T>(T, Int32)

    Creates a one-dimensional array of the specified T and length filled with the specified value.

    Clamp(Double, Double, Double)

    Clamps the specified value.

    Clamp(Int32, Int32, Int32)

    Clamps the specified value.

    Clamp(Single, Single, Single)

    Clamps the specified value.

    DegreesToRadians(Single)

    Converts degrees to radians.

    DegreesToRevolutions(Single)

    Converts degrees to revolutions.

    GradiansToDegrees(Single)

    Converts gradians to degrees.

    GradiansToRadians(Single)

    Converts gradians to radians.

    GradiansToRevolutions(Single)

    Converts gradians to revolutions.

    InverseLerp(Double, Double, Double)

    Inverse-interpolates a value linearly.

    InverseLerp(Single, Single, Single)

    Inverse-interpolates a value linearly.

    IsAligned(Int32, Int32)

    Determines whether the specified value is aligned.

    IsInRange(Int32, Int32, Int32)

    Determines whether the value is inside the given range (inclusively).

    IsInRange(Single, Single, Single)

    Determines whether the value is inside the given range (inclusively).

    IsOne(Single)

    Determines whether the specified value is close to one (1.0f).

    IsPow2(Int32)

    Determines whether the specified x is pow2.

    IsZero(Double)

    Determines whether the specified value is close to zero (0.0f).

    IsZero(Single)

    Determines whether the specified value is close to zero (0.0f).

    Lerp(Byte, Byte, Single)

    Interpolates between two values using a linear function by a given amount.

    Lerp(Double, Double, Double)

    Interpolates between two values using a linear function by a given amount.

    Lerp(Single, Single, Single)

    Interpolates between two values using a linear function by a given amount.

    LinearToSRgb(Single)

    Converts a float value from linear to sRGB.

    Log2(Int32)

    Calculate the logarithm 2 of an integer.

    Log2(Single)

    Calculate the logarithm 2 of a floating point.

    Mod(Single, Single)

    Computes standard mathematical modulo (as opposed to remainder).

    NearEqual(Single, Single)

    Checks if a and b are almost equals, taking into account the magnitude of floating point numbers (unlike WithinEpsilon(Single, Single, Single) method). See Remarks. See remarks.

    NextPowerOfTwo(Int32)

    Get the next power of two of an integer.

    NextPowerOfTwo(Single)

    Get the next power of two for a size.

    PreviousPowerOfTwo(Int32)

    Get the previous power of two of the provided integer.

    PreviousPowerOfTwo(Single)

    Get the previous power of two of the provided float.

    RadiansToDegrees(Single)

    Converts radians to degrees.

    RadiansToGradians(Single)

    Converts radians to gradians.

    RadiansToRevolutions(Single)

    Converts radians to revolutions.

    RevolutionsToDegrees(Single)

    Converts revolutions to degrees.

    RevolutionsToGradians(Single)

    Converts revolutions to gradians.

    RevolutionsToRadians(Single)

    Converts revolutions to radians.

    SmootherStep(Single)

    Performs a smooth(er) interpolation between 0 and 1 with 1st and 2nd order derivatives of zero at endpoints.

    SmoothStep(Single)

    Performs smooth (cubic Hermite) interpolation between 0 and 1.

    Snap(Vector2, Single)

    Snaps all vector components to the nearest interval.

    Snap(Vector3, Single)

    Snaps all vector components to the nearest interval.

    Snap(Vector4, Single)

    Snaps all vector components to the nearest interval.

    Snap(Double, Double)

    Snaps a value to the nearest interval.

    Snap(Single, Single)

    Snaps a value to the nearest interval.

    SRgbToLinear(Single)

    Converts a float value from sRGB to linear.

    WithinEpsilon(Single, Single, Single)

    Checks if a - b are almost equals within a float epsilon.

    | Improve this Doc View Source

    Fields


    Pi

    A value specifying the approximation of π which is 180 degrees.

    public const float Pi = 3.14159274F
    Field Value
    Type Description
    System.Single

    PiOverFour

    A value specifying the approximation of π/4 which is 45 degrees.

    public const float PiOverFour = 0.7853982F
    Field Value
    Type Description
    System.Single

    PiOverTwo

    A value specifying the approximation of π/2 which is 90 degrees.

    public const float PiOverTwo = 1.57079637F
    Field Value
    Type Description
    System.Single

    TwoPi

    A value specifying the approximation of 2π which is 360 degrees.

    public const float TwoPi = 6.28318548F
    Field Value
    Type Description
    System.Single

    ZeroTolerance

    The value for which all absolute numbers smaller than are considered equal to zero.

    public const float ZeroTolerance = 1E-06F
    Field Value
    Type Description
    System.Single

    ZeroToleranceDouble

    The value for which all absolute numbers smaller than are considered equal to zero.

    public const double ZeroToleranceDouble = 3.9525251667299724E-323
    Field Value
    Type Description
    System.Double
    | Improve this Doc View Source

    Methods


    AlignDown(Int32, Int32)

    Alignes value down to match desire alignment.

    public static int AlignDown(int value, int alignment)
    Parameters
    Type Name Description
    System.Int32 value

    The value.

    System.Int32 alignment

    The alignment.

    Returns
    Type Description
    System.Int32

    Aligned value (multiple of alignment).


    AlignUp(Int32, Int32)

    Alignes value up to match desire alignment.

    public static int AlignUp(int value, int alignment)
    Parameters
    Type Name Description
    System.Int32 value

    The value.

    System.Int32 alignment

    The alignment.

    Returns
    Type Description
    System.Int32

    Aligned value (multiple of alignment).


    Array<T>(T, Int32)

    Creates a one-dimensional array of the specified T and length filled with the specified value.

    public static T[] Array<T>(T value, int length)
    Parameters
    Type Name Description
    T value

    The value to fill the array with.

    System.Int32 length

    The size of the array to create.

    Returns
    Type Description
    T[]

    A new one-dimensional array of the specified type with the specified length and filled with the specified value.

    Type Parameters
    Name Description
    T

    The Type of the array to create.


    Clamp(Double, Double, Double)

    Clamps the specified value.

    public static double Clamp(double value, double min, double max)
    Parameters
    Type Name Description
    System.Double value

    The value.

    System.Double min

    The min.

    System.Double max

    The max.

    Returns
    Type Description
    System.Double

    The result of clamping a value between min and max


    Clamp(Int32, Int32, Int32)

    Clamps the specified value.

    public static int Clamp(int value, int min, int max)
    Parameters
    Type Name Description
    System.Int32 value

    The value.

    System.Int32 min

    The min.

    System.Int32 max

    The max.

    Returns
    Type Description
    System.Int32

    The result of clamping a value between min and max


    Clamp(Single, Single, Single)

    Clamps the specified value.

    public static float Clamp(float value, float min, float max)
    Parameters
    Type Name Description
    System.Single value

    The value.

    System.Single min

    The min.

    System.Single max

    The max.

    Returns
    Type Description
    System.Single

    The result of clamping a value between min and max


    DegreesToRadians(Single)

    Converts degrees to radians.

    public static float DegreesToRadians(float degree)
    Parameters
    Type Name Description
    System.Single degree

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    DegreesToRevolutions(Single)

    Converts degrees to revolutions.

    public static float DegreesToRevolutions(float degree)
    Parameters
    Type Name Description
    System.Single degree

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    GradiansToDegrees(Single)

    Converts gradians to degrees.

    public static float GradiansToDegrees(float gradian)
    Parameters
    Type Name Description
    System.Single gradian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    GradiansToRadians(Single)

    Converts gradians to radians.

    public static float GradiansToRadians(float gradian)
    Parameters
    Type Name Description
    System.Single gradian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    GradiansToRevolutions(Single)

    Converts gradians to revolutions.

    public static float GradiansToRevolutions(float gradian)
    Parameters
    Type Name Description
    System.Single gradian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    InverseLerp(Double, Double, Double)

    Inverse-interpolates a value linearly.

    public static double InverseLerp(double min, double max, double value)
    Parameters
    Type Name Description
    System.Double min

    Minimum value that takes place in inverse-interpolation.

    System.Double max

    Maximum value that takes place in inverse-interpolation.

    System.Double value

    Value to get inverse interpolation.

    Returns
    Type Description
    System.Double

    Returns an inverse-linearly interpolated coeficient.


    InverseLerp(Single, Single, Single)

    Inverse-interpolates a value linearly.

    public static float InverseLerp(float min, float max, float value)
    Parameters
    Type Name Description
    System.Single min

    Minimum value that takes place in inverse-interpolation.

    System.Single max

    Maximum value that takes place in inverse-interpolation.

    System.Single value

    Value to get inverse interpolation.

    Returns
    Type Description
    System.Single

    Returns an inverse-linearly interpolated coeficient.


    IsAligned(Int32, Int32)

    Determines whether the specified value is aligned.

    public static bool IsAligned(int value, int alignment)
    Parameters
    Type Name Description
    System.Int32 value

    The value.

    System.Int32 alignment

    The alignment.

    Returns
    Type Description
    System.Boolean

    true if the specified value is aligned; otherwise, false.


    IsInRange(Int32, Int32, Int32)

    Determines whether the value is inside the given range (inclusively).

    public static bool IsInRange(int value, int min, int max)
    Parameters
    Type Name Description
    System.Int32 value

    The value.

    System.Int32 min

    The minimum value of the range.

    System.Int32 max

    The maximum value of the range.

    Returns
    Type Description
    System.Boolean

    true if value is inside the specified range; otherwise, false.


    IsInRange(Single, Single, Single)

    Determines whether the value is inside the given range (inclusively).

    public static bool IsInRange(float value, float min, float max)
    Parameters
    Type Name Description
    System.Single value

    The value.

    System.Single min

    The minimum value of the range.

    System.Single max

    The maximum value of the range.

    Returns
    Type Description
    System.Boolean

    true if value is inside the specified range; otherwise, false.


    IsOne(Single)

    Determines whether the specified value is close to one (1.0f).

    public static bool IsOne(float a)
    Parameters
    Type Name Description
    System.Single a

    The floating value.

    Returns
    Type Description
    System.Boolean

    true if the specified value is close to one (1.0f); otherwise, false.


    IsPow2(Int32)

    Determines whether the specified x is pow2.

    public static bool IsPow2(int x)
    Parameters
    Type Name Description
    System.Int32 x

    The x.

    Returns
    Type Description
    System.Boolean

    true if the specified x is pow2; otherwise, false.


    IsZero(Double)

    Determines whether the specified value is close to zero (0.0f).

    public static bool IsZero(double a)
    Parameters
    Type Name Description
    System.Double a

    The floating value.

    Returns
    Type Description
    System.Boolean

    true if the specified value is close to zero (0.0f); otherwise, false.


    IsZero(Single)

    Determines whether the specified value is close to zero (0.0f).

    public static bool IsZero(float a)
    Parameters
    Type Name Description
    System.Single a

    The floating value.

    Returns
    Type Description
    System.Boolean

    true if the specified value is close to zero (0.0f); otherwise, false.


    Lerp(Byte, Byte, Single)

    Interpolates between two values using a linear function by a given amount.

    public static byte Lerp(byte from, byte to, float amount)
    Parameters
    Type Name Description
    System.Byte from

    Value to interpolate from.

    System.Byte to

    Value to interpolate to.

    System.Single amount

    Interpolation amount.

    Returns
    Type Description
    System.Byte

    The result of linear interpolation of values based on the amount.

    Remarks

    See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/


    Lerp(Double, Double, Double)

    Interpolates between two values using a linear function by a given amount.

    public static double Lerp(double from, double to, double amount)
    Parameters
    Type Name Description
    System.Double from

    Value to interpolate from.

    System.Double to

    Value to interpolate to.

    System.Double amount

    Interpolation amount.

    Returns
    Type Description
    System.Double

    The result of linear interpolation of values based on the amount.

    Remarks

    See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/


    Lerp(Single, Single, Single)

    Interpolates between two values using a linear function by a given amount.

    public static float Lerp(float from, float to, float amount)
    Parameters
    Type Name Description
    System.Single from

    Value to interpolate from.

    System.Single to

    Value to interpolate to.

    System.Single amount

    Interpolation amount.

    Returns
    Type Description
    System.Single

    The result of linear interpolation of values based on the amount.

    Remarks

    See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/


    LinearToSRgb(Single)

    Converts a float value from linear to sRGB.

    public static float LinearToSRgb(float linearValue)
    Parameters
    Type Name Description
    System.Single linearValue

    The linear value.

    Returns
    Type Description
    System.Single

    The encoded sRGB value.


    Log2(Int32)

    Calculate the logarithm 2 of an integer.

    public static int Log2(int i)
    Parameters
    Type Name Description
    System.Int32 i

    The input integer

    Returns
    Type Description
    System.Int32 the log2(i) rounded to lower integer

    Log2(Single)

    Calculate the logarithm 2 of a floating point.

    public static float Log2(float x)
    Parameters
    Type Name Description
    System.Single x

    The input float

    Returns
    Type Description
    System.Single Log2(x)

    Mod(Single, Single)

    Computes standard mathematical modulo (as opposed to remainder).

    public static float Mod(float value, float divisor)
    Parameters
    Type Name Description
    System.Single value

    The value.

    System.Single divisor

    The divisor.

    Returns
    Type Description
    System.Single

    A value between 0 and divisor. The result will have the same sign as divisor.


    NearEqual(Single, Single)

    Checks if a and b are almost equals, taking into account the magnitude of floating point numbers (unlike WithinEpsilon(Single, Single, Single) method). See Remarks. See remarks.

    public static bool NearEqual(float a, float b)
    Parameters
    Type Name Description
    System.Single a

    The left value to compare.

    System.Single b

    The right value to compare.

    Returns
    Type Description
    System.Boolean

    true if a almost equal to b, false otherwise

    Remarks

    The code is using the technique described by Bruce Dawson in Comparing Floating point numbers 2012 edition.


    NextPowerOfTwo(Int32)

    Get the next power of two of an integer.

    public static int NextPowerOfTwo(int x)
    Parameters
    Type Name Description
    System.Int32 x

    The size.

    Returns
    Type Description
    System.Int32

    System.Int32.

    Remarks

    https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2


    NextPowerOfTwo(Single)

    Get the next power of two for a size.

    public static float NextPowerOfTwo(float size)
    Parameters
    Type Name Description
    System.Single size

    The size.

    Returns
    Type Description
    System.Single

    System.Int32.


    PreviousPowerOfTwo(Int32)

    Get the previous power of two of the provided integer.

    public static int PreviousPowerOfTwo(int size)
    Parameters
    Type Name Description
    System.Int32 size

    The value

    Returns
    Type Description
    System.Int32

    PreviousPowerOfTwo(Single)

    Get the previous power of two of the provided float.

    public static float PreviousPowerOfTwo(float size)
    Parameters
    Type Name Description
    System.Single size

    The value

    Returns
    Type Description
    System.Single

    RadiansToDegrees(Single)

    Converts radians to degrees.

    public static float RadiansToDegrees(float radian)
    Parameters
    Type Name Description
    System.Single radian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    RadiansToGradians(Single)

    Converts radians to gradians.

    public static float RadiansToGradians(float radian)
    Parameters
    Type Name Description
    System.Single radian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    RadiansToRevolutions(Single)

    Converts radians to revolutions.

    public static float RadiansToRevolutions(float radian)
    Parameters
    Type Name Description
    System.Single radian

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    RevolutionsToDegrees(Single)

    Converts revolutions to degrees.

    public static float RevolutionsToDegrees(float revolution)
    Parameters
    Type Name Description
    System.Single revolution

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    RevolutionsToGradians(Single)

    Converts revolutions to gradians.

    public static float RevolutionsToGradians(float revolution)
    Parameters
    Type Name Description
    System.Single revolution

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    RevolutionsToRadians(Single)

    Converts revolutions to radians.

    public static float RevolutionsToRadians(float revolution)
    Parameters
    Type Name Description
    System.Single revolution

    The value to convert.

    Returns
    Type Description
    System.Single

    The converted value.


    SmootherStep(Single)

    Performs a smooth(er) interpolation between 0 and 1 with 1st and 2nd order derivatives of zero at endpoints.

    public static float SmootherStep(float amount)
    Parameters
    Type Name Description
    System.Single amount

    Value between 0 and 1 indicating interpolation amount.

    Returns
    Type Description
    System.Single
    Remarks

    See https://en.wikipedia.org/wiki/Smoothstep


    SmoothStep(Single)

    Performs smooth (cubic Hermite) interpolation between 0 and 1.

    public static float SmoothStep(float amount)
    Parameters
    Type Name Description
    System.Single amount

    Value between 0 and 1 indicating interpolation amount.

    Returns
    Type Description
    System.Single
    Remarks

    See https://en.wikipedia.org/wiki/Smoothstep


    Snap(Vector2, Single)

    Snaps all vector components to the nearest interval.

    public static Vector2 Snap(Vector2 value, float gap)
    Parameters
    Type Name Description
    Vector2 value

    The vector to snap.

    System.Single gap

    The interval gap.

    Returns
    Type Description
    Vector2

    A vector which components are snapped to the nearest interval.


    Snap(Vector3, Single)

    Snaps all vector components to the nearest interval.

    public static Vector3 Snap(Vector3 value, float gap)
    Parameters
    Type Name Description
    Vector3 value

    The vector to snap.

    System.Single gap

    The interval gap.

    Returns
    Type Description
    Vector3

    A vector which components are snapped to the nearest interval.


    Snap(Vector4, Single)

    Snaps all vector components to the nearest interval.

    public static Vector4 Snap(Vector4 value, float gap)
    Parameters
    Type Name Description
    Vector4 value

    The vector to snap.

    System.Single gap

    The interval gap.

    Returns
    Type Description
    Vector4

    A vector which components are snapped to the nearest interval.


    Snap(Double, Double)

    Snaps a value to the nearest interval.

    public static double Snap(double value, double gap)
    Parameters
    Type Name Description
    System.Double value

    The value to snap.

    System.Double gap

    The interval gap.

    Returns
    Type Description
    System.Double

    The nearest interval to the provided value.


    Snap(Single, Single)

    Snaps a value to the nearest interval.

    public static float Snap(float value, float gap)
    Parameters
    Type Name Description
    System.Single value

    The value to snap.

    System.Single gap

    The interval gap.

    Returns
    Type Description
    System.Single

    The nearest interval to the provided value.


    SRgbToLinear(Single)

    Converts a float value from sRGB to linear.

    public static float SRgbToLinear(float sRgbValue)
    Parameters
    Type Name Description
    System.Single sRgbValue

    The sRGB value.

    Returns
    Type Description
    System.Single

    A linear value.


    WithinEpsilon(Single, Single, Single)

    Checks if a - b are almost equals within a float epsilon.

    public static bool WithinEpsilon(float a, float b, float epsilon)
    Parameters
    Type Name Description
    System.Single a

    The left value to compare.

    System.Single b

    The right value to compare.

    System.Single epsilon

    Epsilon value

    Returns
    Type Description
    System.Boolean

    true if a almost equal to b within a float epsilon, false otherwise


    • Improve this Doc
    • View Source
    In This Article

    Back to top

    Copyright © 2019-2021 .NET Foundation and Contributors
    Supported by the .NET Foundation