Class M
Provides standard mathematical functions and helpers for different types.
Inheritance
Inherited Members
Namespace: Fusee.Math.Core
Assembly: Fusee.Math.Core.dll
Syntax
public static class M
Fields
E
Defines the value of E as a System.Single.
Declaration
public const float E = 2.71828175F
Field Value
| Type | Description |
|---|---|
| System.Single |
EpsilonDouble
Defines the value which represents the machine epsilon for System.Double in C#.
Declaration
public const double EpsilonDouble = 1.11022302462516E-16
Field Value
| Type | Description |
|---|---|
| System.Double |
EpsilonFloat
Defines the value which represents the machine epsilon for System.Single in C#.
Declaration
public const float EpsilonFloat = 1.192093E-07F
Field Value
| Type | Description |
|---|---|
| System.Single |
Log10E
Defines the base-10 logarithm of E.
Declaration
public const float Log10E = 0.4342945F
Field Value
| Type | Description |
|---|---|
| System.Single |
Log2E
Defines the base-2 logarithm of E.
Declaration
public const float Log2E = 1.442695F
Field Value
| Type | Description |
|---|---|
| System.Single |
Pi
Defines the value of Pi as a System.Single.
Declaration
public const float Pi = 3.14159274F
Field Value
| Type | Description |
|---|---|
| System.Single |
PiOver2
Defines the value of Pi divided by two as a System.Single.
Declaration
public const float PiOver2 = 1.57079637F
Field Value
| Type | Description |
|---|---|
| System.Single |
PiOver3
Defines the value of Pi divided by three as a System.Single.
Declaration
public const float PiOver3 = 1.04719758F
Field Value
| Type | Description |
|---|---|
| System.Single |
PiOver4
Defines the value of Pi divided by four as a System.Single.
Declaration
public const float PiOver4 = 0.7853982F
Field Value
| Type | Description |
|---|---|
| System.Single |
PiOver6
Defines the value of Pi divided by six as a System.Single.
Declaration
public const float PiOver6 = 0.5235988F
Field Value
| Type | Description |
|---|---|
| System.Single |
ThreePiOver2
Defines the value of Pi multiplied by 3 and divided by two as a System.Single.
Declaration
public const float ThreePiOver2 = 4.712389F
Field Value
| Type | Description |
|---|---|
| System.Single |
TwoPi
Defines the value of Pi multiplied by two as a System.Single.
Declaration
public const float TwoPi = 6.28318548F
Field Value
| Type | Description |
|---|---|
| System.Single |
Methods
BinomialCoefficient(Int32, Int32)
Calculates the binomial coefficient n above k.
Declaration
public static long BinomialCoefficient(int n, int k)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | n | The n. |
| System.Int32 | k | The k. |
Returns
| Type | Description |
|---|---|
| System.Int64 | n! / (k! * (n - k)!) |
CalculateCentroid(IEnumerable<double3>)
Calculates the centroid point (mean) from given vertices in double precision.
Declaration
public static double3 CalculateCentroid(IEnumerable<double3> vertices)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IEnumerable<double3> | vertices |
Returns
| Type | Description |
|---|---|
| double3 |
CalculateCentroid(IEnumerable<float3>)
Calculates the centroid point (mean) from given vertices in single precision.
Declaration
public static float3 CalculateCentroid(IEnumerable<float3> vertices)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Collections.Generic.IEnumerable<float3> | vertices |
Returns
| Type | Description |
|---|---|
| float3 |
Clamp(Double, Double, Double)
Clamp a value to the given minimum and maximum vectors.
Declaration
public static double Clamp(double val, double min, double max)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | val | Input value |
| System.Double | min | Minimum value |
| System.Double | max | Maximum value |
Returns
| Type | Description |
|---|---|
| System.Double | The clamped value. |
Clamp(Single, Single, Single)
Clamp a value to the given minimum and maximum vectors.
Declaration
public static float Clamp(float val, float min, float max)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | val | Input value. |
| System.Single | min | Minimum value. |
| System.Single | max | Maximum value. |
Returns
| Type | Description |
|---|---|
| System.Single | The clamped value. |
Cos(Single)
Returns the Cos of the given value as float.
Declaration
public static float Cos(float val)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | val | The value. |
Returns
| Type | Description |
|---|---|
| System.Single |
CreateCovarianceMatrix(double3, IEnumerable<double3>)
Generates a covariance matrix from given centroid and vertices in double precision.
Declaration
public static double4x4 CreateCovarianceMatrix(double3 centroid, IEnumerable<double3> vertices)
Parameters
| Type | Name | Description |
|---|---|---|
| double3 | centroid | The centroid of the current mesh or point cloud. |
| System.Collections.Generic.IEnumerable<double3> | vertices | The vertex data. |
Returns
| Type | Description |
|---|---|
| double4x4 |
CreateCovarianceMatrix(float3, IEnumerable<float3>)
Generates a covariance matrix from given centroid and vertices in single precision.
Declaration
public static float4x4 CreateCovarianceMatrix(float3 centroid, IEnumerable<float3> vertices)
Parameters
| Type | Name | Description |
|---|---|---|
| float3 | centroid | The centroid of the current mesh or point cloud. |
| System.Collections.Generic.IEnumerable<float3> | vertices | The vertex data. |
Returns
| Type | Description |
|---|---|
| float4x4 |
DegreesToRadians(Single)
Convert degrees to radians
Declaration
public static float DegreesToRadians(float degrees)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | degrees | An angle in degrees |
Returns
| Type | Description |
|---|---|
| System.Single | The angle expressed in radians |
DegreesToRadiansD(Double)
Convert degrees to radians
Declaration
public static double DegreesToRadiansD(double degrees)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | degrees | An angle in degrees |
Returns
| Type | Description |
|---|---|
| System.Double | The angle expressed in radians |
Equals(Double, Double)
Compares two double values for equality.
Declaration
public static bool Equals(double a, double b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | a | The first value. |
| System.Double | b | The second value. |
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the numbers are equal. |
Equals(Single, Single)
Compares two float values for equality.
Declaration
public static bool Equals(float a, float b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | a | The first value. |
| System.Single | b | The second value. |
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the numbers are equal. |
Factorial(Int32)
Calculates the factorial of a given natural number.
Declaration
public static long Factorial(int n)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | n | The number. |
Returns
| Type | Description |
|---|---|
| System.Int64 | n! |
Float4ToABGR(float4)
Converts a float4 to an ABGR value (Int64).
Declaration
public static uint Float4ToABGR(float4 value)
Parameters
| Type | Name | Description |
|---|---|---|
| float4 | value | The float4 to convert. |
Returns
| Type | Description |
|---|---|
| System.UInt32 | The ABGR value. |
InverseSqrtFast(Double)
Returns an approximation of the inverse square root of left number.
Declaration
public static double InverseSqrtFast(double x)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | x | A number. |
Returns
| Type | Description |
|---|---|
| System.Double | An approximation of the inverse square root of the specified number, with an upper error bound of 0.001 |
Remarks
This is an improved implementation of the the method known as Carmack's inverse square root which is found in the Quake III source code. This implementation comes from http://www.codemaestro.com/reviews/review00000105.html. For the history of this method, see http://www.beyond3d.com/content/articles/8/
InverseSqrtFast(Single)
Returns an approximation of the inverse square root of left number.
Declaration
public static float InverseSqrtFast(float x)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | x | A number. |
Returns
| Type | Description |
|---|---|
| System.Single | An approximation of the inverse square root of the specified number, with an upper error bound of 0.001 |
Remarks
This is an improved implementation of the the method known as Carmack's inverse square root which is found in the Quake III source code. This implementation comes from http://www.codemaestro.com/reviews/review00000105.html. For the history of this method, see http://www.beyond3d.com/content/articles/8/
IsPowerOfTwo(Int32)
Determines whether the specified value is a power of two.
Declaration
public static bool IsPowerOfTwo(int val)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | val | The value. |
Returns
| Type | Description |
|---|---|
| System.Boolean |
Lerp(Single, Single, Single)
Returns a new float value that is the linear blend of the 2 given floats
Declaration
public static float Lerp(float a, float b, float blend)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | a | First input float |
| System.Single | b | Second input float |
| System.Single | blend | The blend factor. a when blend=0, b when blend=1. |
Returns
| Type | Description |
|---|---|
| System.Single | a when blend=0, b when blend=1, and a linear combination otherwise |
Max(Double, Double)
Calculates the maximum of a and b.
Declaration
public static double Max(double a, double b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | a | a. |
| System.Double | b | b. |
Returns
| Type | Description |
|---|---|
| System.Double | The maximum of a and b. |
Max(Int16, Int16)
Calculates the maximum of a and b.
Declaration
public static short Max(short a, short b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int16 | a | a. |
| System.Int16 | b | b. |
Returns
| Type | Description |
|---|---|
| System.Int16 | The maximum of a and b. |
Max(Int32, Int32)
Calculates the maximum of a and b.
Declaration
public static int Max(int a, int b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | a | a. |
| System.Int32 | b | b. |
Returns
| Type | Description |
|---|---|
| System.Int32 | The maximum of a and b. |
Max(Single, Single)
Calculates the maximum of a and b.
Declaration
public static float Max(float a, float b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | a | a. |
| System.Single | b | b. |
Returns
| Type | Description |
|---|---|
| System.Single | The maximum of a and b. |
Max(UInt16, UInt16)
Calculates the maximum of a and b.
Declaration
public static ushort Max(ushort a, ushort b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.UInt16 | a | a. |
| System.UInt16 | b | b. |
Returns
| Type | Description |
|---|---|
| System.UInt16 | The maximum of a and b. |
Max(UInt32, UInt32)
Calculates the maximum of a and b.
Declaration
public static uint Max(uint a, uint b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.UInt32 | a | a. |
| System.UInt32 | b | b. |
Returns
| Type | Description |
|---|---|
| System.UInt32 | The maximum of a and b. |
Min(Double, Double)
Calculates the minimum of a and b.
Declaration
public static double Min(double a, double b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | a | a. |
| System.Double | b | b. |
Returns
| Type | Description |
|---|---|
| System.Double | The minimum of a and b. |
Min(Int16, Int16)
Calculates the minimum of a and b.
Declaration
public static short Min(short a, short b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int16 | a | a. |
| System.Int16 | b | b. |
Returns
| Type | Description |
|---|---|
| System.Int16 | The minimum of a and b. |
Min(Int32, Int32)
Calculates the minimum of a and b.
Declaration
public static int Min(int a, int b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | a | a. |
| System.Int32 | b | b. |
Returns
| Type | Description |
|---|---|
| System.Int32 | The minimum of a and b. |
Min(Single, Single)
Calculates the minimum of a and b.
Declaration
public static float Min(float a, float b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | a | a. |
| System.Single | b | b. |
Returns
| Type | Description |
|---|---|
| System.Single | The minimum of a and b. |
Min(UInt16, UInt16)
Calculates the minimum of a and b.
Declaration
public static ushort Min(ushort a, ushort b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.UInt16 | a | a. |
| System.UInt16 | b | b. |
Returns
| Type | Description |
|---|---|
| System.UInt16 | The minimum of a and b. |
Min(UInt32, UInt32)
Calculates the minimum of a and b.
Declaration
public static uint Min(uint a, uint b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.UInt32 | a | a. |
| System.UInt32 | b | b. |
Returns
| Type | Description |
|---|---|
| System.UInt32 | The minimum of a and b. |
MinAngle(Double)
Wrap-around to keep angle in the interval of (-PI , +PI]
Declaration
public static double MinAngle(double angle)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | angle | The angle to minimize. |
Returns
| Type | Description |
|---|---|
| System.Double | The angle limited to a maximum magnitude of PI. |
MinAngle(Single)
Wrap-around to keep angle in the interval of (-PI , +PI]
Declaration
public static float MinAngle(float angle)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | angle | The angle to minimize. |
Returns
| Type | Description |
|---|---|
| System.Single | The angle limited to a maximum magnitude of PI. |
NextPowerOfTwo(Double)
Returns the next power of two that is larger than the specified number.
Declaration
public static double NextPowerOfTwo(double n)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | n | The specified number. |
Returns
| Type | Description |
|---|---|
| System.Double | The next power of two. |
NextPowerOfTwo(Int32)
Returns the next power of two that is larger than the specified number.
Declaration
public static int NextPowerOfTwo(int n)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | n | The specified number. |
Returns
| Type | Description |
|---|---|
| System.Int32 | The next power of two. |
NextPowerOfTwo(Int64)
Returns the next power of two that is larger than the specified number.
Declaration
public static long NextPowerOfTwo(long n)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int64 | n | The specified number. |
Returns
| Type | Description |
|---|---|
| System.Int64 | The next power of two. |
NextPowerOfTwo(Single)
Returns the next power of two that is larger than the specified number.
Declaration
public static float NextPowerOfTwo(float n)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | n | The specified number. |
Returns
| Type | Description |
|---|---|
| System.Single | The next power of two. |
RadiansToDegrees(Single)
Convert radians to degrees
Declaration
public static float RadiansToDegrees(float radians)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | radians | An angle in radians |
Returns
| Type | Description |
|---|---|
| System.Single | The angle expressed in degrees |
RadiansToDegreesD(Double)
Convert radians to degrees
Declaration
public static double RadiansToDegreesD(double radians)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | radians | An angle in radians |
Returns
| Type | Description |
|---|---|
| System.Double | The angle expressed in degrees |
ScreenPointToWorld(float2, Single, float4x4, float4x4, float4x4, float4x4, Int32, Int32)
Calculates a world position from given screen point (e. g. mouse coordinates in window space coordinates)
at any desired z coordinate specified by zPosition
Declaration
public static float3 ScreenPointToWorld(float2 windowCoordIn, float zPosition, float4x4 Projection, float4x4 View, float4x4 InvProjection, float4x4 InvView, int windowWidth, int windowHeight)
Parameters
| Type | Name | Description |
|---|---|---|
| float2 | windowCoordIn | Position in window space coordinates |
| System.Single | zPosition | Desired z coordinate in clip space |
| float4x4 | Projection | Projection matrix |
| float4x4 | View | View matrix |
| float4x4 | InvProjection | Inverse Projection matrix |
| float4x4 | InvView | Inverse View matrix |
| System.Int32 | windowWidth | Width of window |
| System.Int32 | windowHeight | Height of window |
Returns
| Type | Description |
|---|---|
| float3 |
Sin(Single)
Returns the Sin of the given value as float.
Declaration
public static float Sin(float val)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | val | The value. |
Returns
| Type | Description |
|---|---|
| System.Single |
SineStep(Single)
Smoothes out the interpolation t when approaching 0.0 and 1.0, using the sinestep function.
Declaration
public static float SineStep(float t)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | t | t will be clamped between 0.0 and 1.0. |
Returns
| Type | Description |
|---|---|
| System.Single | Returns a value between 0.0 and 1.0, corresponding to t. |
SmootherStep(Single)
Smoothes out the interpolation t when approaching 0.0 and 1.0, using the smootherstep function.
Declaration
public static float SmootherStep(float t)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | t | t will be clamped between 0.0 and 1.0. |
Returns
| Type | Description |
|---|---|
| System.Single | Returns a value between 0.0 and 1.0, corresponding to t. |
SmoothStep(Single)
Smoothes out the interpolation t when approaching 0.0 and 1.0, using the smoothstep function.
Declaration
public static float SmoothStep(float t)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | t | t will be clamped between 0.0 and 1.0. |
Returns
| Type | Description |
|---|---|
| System.Single | Returns a value between 0.0 and 1.0, corresponding to t. |
Step(Double, Double)
Generates a step function by comparing "val" to "edge". 0.0 is returned if "val" is smaller than "edge" and 1.0 is returned otherwise.
Declaration
public static double Step(double edge, double val)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | edge | Specifies the location of the edge of the step function. |
| System.Double | val | Specifies the value to be used to generate the step function. |
Returns
| Type | Description |
|---|---|
| System.Double |
Step(Single, Single)
Generates a step function by comparing "val" to "edge". 0.0 is returned if "val" is smaller than "edge" and 1.0 is returned otherwise.
Declaration
public static float Step(float edge, float val)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | edge | Specifies the location of the edge of the step function. |
| System.Single | val | Specifies the value to be used to generate the step function. |
Returns
| Type | Description |
|---|---|
| System.Single |
Swap(ref Double, ref Double)
Swaps two double values.
Declaration
public static void Swap(ref double a, ref double b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | a | The first value. |
| System.Double | b | The second value. |
Swap(ref Single, ref Single)
Swaps two float values.
Declaration
public static void Swap(ref float a, ref float b)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Single | a | The first value. |
| System.Single | b | The second value. |