## Class MathUtilsd

• java.lang.Object

• ```public final class MathUtilsd
extends java.lang.Object```
Utility and fast math functions.

Thanks to Riven on JavaGaming.org for the basis of sin/cos/atan2/floor/ceil.

• ### Field Summary

Fields
Modifier and Type Field Description
`static double` `degRad`
`static double` `degreesToRadians`
multiply by this to convert from degrees to radians
`static double` `E`
`static double` `FLOAT_ROUNDING_ERROR`
`static double` `nanoToSec`
`static double` `PI`
`static double` `PI2`
`static double` `radDeg`
`static double` `radiansToDegrees`
multiply by this to convert from radians to degrees
`static java.util.Random` `random`
• ### Constructor Summary

Constructors
Constructor Description
`MathUtilsd()`
• ### Method Summary

All Methods
Modifier and Type Method Description
`static double` ```atan2​(double y, double x)```
Returns atan2 in radians, faster but less accurate than Math.atan2.
`static double` ```clamp​(double value, double min, double max)```
`static float` ```clamp​(float value, float min, float max)```
`static int` ```clamp​(int value, int min, int max)```
`static short` ```clamp​(short value, short min, short max)```
`static double` `cos​(double radians)`
Returns the cosine in radians from a lookup table.
`static double` `cosDeg​(double degrees)`
Returns the cosine in radians from a lookup table.
`static double` ```distancePointLine​(double x1, double y1, double z1, double x2, double y2, double z2, double x0, double y0, double z0)```
Gets the distance from the point x0 to the line denoted by x1-x2.
`static double` ```distancePointSegment​(double x1, double y1, double z1, double x2, double y2, double z2, double x0, double y0, double z0)```
Gets the distance from the point p0 to the segment denoted by p1-p2.
`static double` ```eint​(double x, double x0, double x1, double y0, double y1, double exp)```
Does an exponential interpolation: y = y0 + (y1-y0) * 10 ^ (exp * (x-x0)/(x1-x0))
`static Vector3d` ```getClosestPoint​(double x1, double y1, double z1, double x2, double y2, double z2, double x0, double y0, double z0)```
Gets the closest point on the line p1-p2 from p0.
`static Vector3d` ```getClosestPoint2​(double x1, double y1, double z1, double x2, double y2, double z2, double x0, double y0, double z0)```
`static boolean` ```isEqual​(double a, double b)```
Returns true if a is nearly equal to b.
`static boolean` ```isEqual​(double a, double b, double tolerance)```
Returns true if a is nearly equal to b.
`static boolean` `isZero​(double value)`
Returns true if the value is zero (using the default tolerance as upper bound)
`static boolean` ```isZero​(double value, double tolerance)```
Returns true if the value is zero.
`static double` ```lerp​(double x, double y, double a)```
`static float` ```lerp​(float x, float y, float a)```
`static long` ```lerp​(long x, long y, long a)```
`static double` ```lint​(double x, double x0, double x1, double y0, double y1)```
Linear interpolation
`static float` ```lint​(float x, float x0, float x1, float y0, float y1)```
Linear interpolation
`static float` ```lint​(long x, long x0, long x1, float y0, float y1)```
Linear interpolation
`static Vector3d` ```perpendicular​(Vector3d in, Vector3d out)```
Gets perpendicular vector to in vector
`static double` `random()`
Returns random number between 0.0 (inclusive) and 1.0 (exclusive).
`static double` `random​(double range)`
Returns a random number between 0 (inclusive) and the specified value (exclusive).
`static double` ```random​(double start, double end)```
Returns a random number between start (inclusive) and end (exclusive).
`static int` `random​(int range)`
Returns a random number between 0 (inclusive) and the specified value (inclusive).
`static int` ```random​(int start, int end)```
Returns a random number between start (inclusive) and end (inclusive).
`static long` `random​(long range)`
Returns a random number between 0 (inclusive) and the specified value (inclusive).
`static long` ```random​(long start, long end)```
Returns a random number between start (inclusive) and end (inclusive).
`static boolean` `randomBoolean()`
Returns a random boolean value.
`static boolean` `randomBoolean​(double chance)`
Returns true if a random value between 0 and 1 is less than the specified value.
`static int` `randomSign()`
Returns -1 or 1, randomly.
`static double` `randomTriangular()`
Returns a triangularly distributed random number between -1.0 (exclusive) and 1.0 (exclusive), where values around zero are more likely.
`static double` `randomTriangular​(double max)`
Returns a triangularly distributed random number between `-max` (exclusive) and `max` (exclusive), where values around zero are more likely.
`static double` ```randomTriangular​(double min, double max)```
Returns a triangularly distributed random number between `min` (inclusive) and `max` (exclusive), where the `mode` argument defaults to the midpoint between the bounds, giving a symmetric distribution.
`static double` ```randomTriangular​(double min, double max, double mode)```
Returns a triangularly distributed random number between `min` (inclusive) and `max` (exclusive), where values around `mode` are more likely.
`static double` ```roundAvoid​(double value, int places)```
Rounds the double value to a number of decimal places
`static double` `sin​(double radians)`
Returns the sine in radians from a lookup table.
`static double` `sinDeg​(double degrees)`
Returns the sine in radians from a lookup table.
`static double` `sqrt​(double value)`
Fast sqrt method.
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Field Detail

• #### nanoToSec

`public static final double nanoToSec`
Constant Field Values
• #### FLOAT_ROUNDING_ERROR

`public static final double FLOAT_ROUNDING_ERROR`
Constant Field Values
• #### PI2

`public static final double PI2`
Constant Field Values

`public static final double radiansToDegrees`
multiply by this to convert from radians to degrees
Constant Field Values

`public static final double radDeg`
Constant Field Values

`public static final double degreesToRadians`
multiply by this to convert from degrees to radians
Constant Field Values

`public static final double degRad`
Constant Field Values
• #### random

`public static java.util.Random random`
• ### Constructor Detail

• #### MathUtilsd

`public MathUtilsd()`
• ### Method Detail

• #### sin

`public static double sin​(double radians)`
Returns the sine in radians from a lookup table.
• #### cos

`public static double cos​(double radians)`
Returns the cosine in radians from a lookup table.
• #### sinDeg

`public static double sinDeg​(double degrees)`
Returns the sine in radians from a lookup table.
• #### cosDeg

`public static double cosDeg​(double degrees)`
Returns the cosine in radians from a lookup table.
• #### atan2

```public static double atan2​(double y,
double x)```
Returns atan2 in radians, faster but less accurate than Math.atan2. Average error of 0.00231 radians (0.1323 degrees), largest error of 0.00488 radians (0.2796 degrees).
• #### random

`public static int random​(int range)`
Returns a random number between 0 (inclusive) and the specified value (inclusive).
• #### random

```public static int random​(int start,
int end)```
Returns a random number between start (inclusive) and end (inclusive).
• #### random

`public static long random​(long range)`
Returns a random number between 0 (inclusive) and the specified value (inclusive).
• #### random

```public static long random​(long start,
long end)```
Returns a random number between start (inclusive) and end (inclusive).
• #### randomBoolean

`public static boolean randomBoolean()`
Returns a random boolean value.
• #### randomBoolean

`public static boolean randomBoolean​(double chance)`
Returns true if a random value between 0 and 1 is less than the specified value.
• #### random

`public static double random()`
Returns random number between 0.0 (inclusive) and 1.0 (exclusive).
• #### random

`public static double random​(double range)`
Returns a random number between 0 (inclusive) and the specified value (exclusive).
• #### random

```public static double random​(double start,
double end)```
Returns a random number between start (inclusive) and end (exclusive).
• #### randomSign

`public static int randomSign()`
Returns -1 or 1, randomly.
• #### randomTriangular

`public static double randomTriangular()`
Returns a triangularly distributed random number between -1.0 (exclusive) and 1.0 (exclusive), where values around zero are more likely.

This is an optimized version of `randomTriangular(-1, 1, 0)`

• #### randomTriangular

`public static double randomTriangular​(double max)`
Returns a triangularly distributed random number between `-max` (exclusive) and `max` (exclusive), where values around zero are more likely.

This is an optimized version of `randomTriangular(-max, max, 0)`

Parameters:
`max` - the upper limit
• #### randomTriangular

```public static double randomTriangular​(double min,
double max)```
Returns a triangularly distributed random number between `min` (inclusive) and `max` (exclusive), where the `mode` argument defaults to the midpoint between the bounds, giving a symmetric distribution.

This method is equivalent of `randomTriangular(min, max, (min + max) * .5f)`

Parameters:
`min` - the lower limit
`max` - the upper limit
• #### randomTriangular

```public static double randomTriangular​(double min,
double max,
double mode)```
Returns a triangularly distributed random number between `min` (inclusive) and `max` (exclusive), where values around `mode` are more likely.
Parameters:
`min` - the lower limit
`max` - the upper limit
`mode` - the point around which the values are more likely
• #### clamp

```public static int clamp​(int value,
int min,
int max)```
• #### clamp

```public static short clamp​(short value,
short min,
short max)```
• #### clamp

```public static float clamp​(float value,
float min,
float max)```
• #### clamp

```public static double clamp​(double value,
double min,
double max)```
• #### isZero

`public static boolean isZero​(double value)`
Returns true if the value is zero (using the default tolerance as upper bound)
• #### isZero

```public static boolean isZero​(double value,
double tolerance)```
Returns true if the value is zero.
Parameters:
`tolerance` - represent an upper bound below which the value is considered zero.
• #### isEqual

```public static boolean isEqual​(double a,
double b)```
Returns true if a is nearly equal to b. The function uses the default doubleing error tolerance.
Parameters:
`a` - the first value.
`b` - the second value.
• #### isEqual

```public static boolean isEqual​(double a,
double b,
double tolerance)```
Returns true if a is nearly equal to b.
Parameters:
`a` - the first value.
`b` - the second value.
`tolerance` - represent an upper bound below which the two values are considered equal.
• #### sqrt

`public static double sqrt​(double value)`
Fast sqrt method. Default passes it through one round of Newton's method
Parameters:
`value` - The value
Returns:
The square root value
• #### eint

```public static double eint​(double x,
double x0,
double x1,
double y0,
double y1,
double exp)```
Does an exponential interpolation: y = y0 + (y1-y0) * 10 ^ (exp * (x-x0)/(x1-x0))
Parameters:
`x` -
`x0` -
`x1` -
`y0` -
`y1` -
`exp` -
Returns:
• #### lint

```public static double lint​(double x,
double x0,
double x1,
double y0,
double y1)```
Linear interpolation
Parameters:
`x` - The value to interpolate
`x0` - Inferior limit to the independent value
`x1` - Superior limit to the independent value
`y0` - Inferior limit to the dependent value
`y1` - Superior limit to the dependent value
Returns:
The interpolated value
• #### lerp

```public static double lerp​(double x,
double y,
double a)```
• #### lint

```public static float lint​(float x,
float x0,
float x1,
float y0,
float y1)```
Linear interpolation
Parameters:
`x` - The value to interpolate
`x0` - Inferior limit to the independent value
`x1` - Superior limit to the independent value
`y0` - Inferior limit to the dependent value
`y1` - Superior limit to the dependent value
Returns:
The interpolated value
• #### lerp

```public static float lerp​(float x,
float y,
float a)```
• #### lint

```public static float lint​(long x,
long x0,
long x1,
float y0,
float y1)```
Linear interpolation
Parameters:
`x` - The value to interpolate
`x0` - Inferior limit to the independent value
`x1` - Superior limit to the independent value
`y0` - Inferior limit to the dependent value
`y1` - Superior limit to the dependent value
Returns:
The interpolated value
• #### lerp

```public static long lerp​(long x,
long y,
long a)```
• #### distancePointLine

```public static double distancePointLine​(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x0,
double y0,
double z0)```
Gets the distance from the point x0 to the line denoted by x1-x2.
Parameters:
`x1` - The first point in the line
`x2` - The second point in the line
`x0` - The point
Returns:
The Euclidean distance between the line (x1, x2) and x0
• #### distancePointSegment

```public static double distancePointSegment​(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x0,
double y0,
double z0)```
Gets the distance from the point p0 to the segment denoted by p1-p2.
Parameters:
`x1` - The first segment delimiter.
`x2` - The second segment delimiter.
`x0` - The point.
Returns:
The Euclidean distance between the segment (x1, x2)
• #### getClosestPoint

```public static Vector3d getClosestPoint​(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x0,
double y0,
double z0)```
Gets the closest point on the line p1-p2 from p0.
Parameters:
`x1` - The first segment delimiter.
`x2` - The second segment delimiter.
`x0` - The point.
Returns:
The vector with the closest point on the line to p0
• #### getClosestPoint2

```public static Vector3d getClosestPoint2​(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x0,
double y0,
double z0)```
• #### perpendicular

```public static Vector3d perpendicular​(Vector3d in,
Vector3d out)```
Gets perpendicular vector to in vector
Parameters:
`in` -
Returns:
• #### roundAvoid

```public static double roundAvoid​(double value,
int places)```
Rounds the double value to a number of decimal places
Parameters:
`value` - The value to round
`places` - The number of decimal places
Returns:
The rounded value