Package org.joml
Class Math
java.lang.Object
org.joml.Math
Contains fast approximations of some
Math
operations.
By default, Math
methods will be used by all other JOML classes. In order to use the approximations in this class, start the JVM with the parameter -Djoml.fastmath
.
There are two algorithms for approximating sin/cos:
- arithmetic polynomial approximation contributed by roquendm
- theagentd's linear interpolation variant of Riven's algorithm from http://www.java-gaming.org/
-Djoml.sinLookup
. The lookup table bit length of the second algorithm can also be adjusted
for improved accuracy via -Djoml.sinLookup.bits=<n>
, where <n> is the number of bits of the lookup table.- Author:
- Kai Burjack
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic double
abs
(double r) static float
abs
(float r) static int
abs
(int r) static double
acos
(double r) static float
acos
(float r) static double
asin
(double r) static float
asin
(float r) static double
atan2
(double y, double x) static float
atan2
(float y, float x) static double
biLerp
(double q00, double q10, double q01, double q11, double tx, double ty) static float
biLerp
(float q00, float q10, float q01, float q11, float tx, float ty) static double
ceil
(double v) static float
ceil
(float v) static double
clamp
(double a, double b, double val) static float
clamp
(float a, float b, float val) static int
clamp
(int a, int b, int val) static double
cos
(double rad) static float
cos
(float rad) static double
cosFromSin
(double sin, double angle) static float
cosFromSin
(float sin, float angle) static double
exp
(double a) static double
floor
(double v) static float
floor
(float v) static double
fma
(double a, double b, double c) static float
fma
(float a, float b, float c) static double
invsqrt
(double r) static float
invsqrt
(float r) static boolean
isFinite
(double d) static boolean
isFinite
(float f) static double
lerp
(double a, double b, double t) static float
lerp
(float a, float b, float t) static double
max
(double a, double b) static float
max
(float a, float b) static int
max
(int x, int y) static double
min
(double a, double b) static float
min
(float a, float b) static int
min
(int x, int y) static double
random()
static long
round
(double v) static int
round
(float v) static int
roundHalfDown
(double v) static int
roundHalfDown
(float v) static int
roundHalfEven
(double v) static int
roundHalfEven
(float v) static int
roundHalfUp
(double v) static int
roundHalfUp
(float v) static int
roundUsing
(double v, int mode) static int
roundUsing
(float v, int mode) static double
safeAcos
(double v) static float
safeAcos
(float v) static double
safeAsin
(double r) static float
safeAsin
(float r) static double
signum
(double v) static float
signum
(float v) static int
signum
(int v) static int
signum
(long v) static double
sin
(double rad) static float
sin
(float rad) static double
sqrt
(double r) static float
sqrt
(float r) static double
tan
(double r) static float
tan
(float r) static double
toDegrees
(double angles) static double
toRadians
(double angles) static float
toRadians
(float angles) static double
triLerp
(double q000, double q100, double q010, double q110, double q001, double q101, double q011, double q111, double tx, double ty, double tz) static float
triLerp
(float q000, float q100, float q010, float q110, float q001, float q101, float q011, float q111, float tx, float ty, float tz)
-
Field Details
-
PI
public static final double PI- See Also:
-
-
Constructor Details
-
Math
public Math()
-
-
Method Details
-
sin
public static float sin(float rad) -
sin
public static double sin(double rad) -
cos
public static float cos(float rad) -
cos
public static double cos(double rad) -
cosFromSin
public static float cosFromSin(float sin, float angle) -
cosFromSin
public static double cosFromSin(double sin, double angle) -
sqrt
public static float sqrt(float r) -
sqrt
public static double sqrt(double r) -
invsqrt
public static float invsqrt(float r) -
invsqrt
public static double invsqrt(double r) -
tan
public static float tan(float r) -
tan
public static double tan(double r) -
acos
public static float acos(float r) -
acos
public static double acos(double r) -
safeAcos
public static float safeAcos(float v) -
safeAcos
public static double safeAcos(double v) -
atan2
public static float atan2(float y, float x) -
atan2
public static double atan2(double y, double x) -
asin
public static float asin(float r) -
asin
public static double asin(double r) -
safeAsin
public static float safeAsin(float r) -
safeAsin
public static double safeAsin(double r) -
abs
public static float abs(float r) -
abs
public static double abs(double r) -
abs
public static int abs(int r) -
max
public static int max(int x, int y) -
min
public static int min(int x, int y) -
min
public static double min(double a, double b) -
min
public static float min(float a, float b) -
max
public static float max(float a, float b) -
max
public static double max(double a, double b) -
clamp
public static float clamp(float a, float b, float val) -
clamp
public static double clamp(double a, double b, double val) -
clamp
public static int clamp(int a, int b, int val) -
toRadians
public static float toRadians(float angles) -
toRadians
public static double toRadians(double angles) -
toDegrees
public static double toDegrees(double angles) -
floor
public static double floor(double v) -
floor
public static float floor(float v) -
ceil
public static double ceil(double v) -
ceil
public static float ceil(float v) -
round
public static long round(double v) -
round
public static int round(float v) -
exp
public static double exp(double a) -
isFinite
public static boolean isFinite(double d) -
isFinite
public static boolean isFinite(float f) -
fma
public static float fma(float a, float b, float c) -
fma
public static double fma(double a, double b, double c) -
roundUsing
public static int roundUsing(float v, int mode) -
roundUsing
public static int roundUsing(double v, int mode) -
lerp
public static float lerp(float a, float b, float t) -
lerp
public static double lerp(double a, double b, double t) -
biLerp
public static float biLerp(float q00, float q10, float q01, float q11, float tx, float ty) -
biLerp
public static double biLerp(double q00, double q10, double q01, double q11, double tx, double ty) -
triLerp
public static float triLerp(float q000, float q100, float q010, float q110, float q001, float q101, float q011, float q111, float tx, float ty, float tz) -
triLerp
public static double triLerp(double q000, double q100, double q010, double q110, double q001, double q101, double q011, double q111, double tx, double ty, double tz) -
roundHalfEven
public static int roundHalfEven(float v) -
roundHalfDown
public static int roundHalfDown(float v) -
roundHalfUp
public static int roundHalfUp(float v) -
roundHalfEven
public static int roundHalfEven(double v) -
roundHalfDown
public static int roundHalfDown(double v) -
roundHalfUp
public static int roundHalfUp(double v) -
random
public static double random() -
signum
public static double signum(double v) -
signum
public static float signum(float v) -
signum
public static int signum(int v) -
signum
public static int signum(long v)
-