Package dev.romainguy.kotlin.math

Types

Bool2
Link copied to clipboard
data class Bool2(x: Boolean, y: Boolean)
Bool3
Link copied to clipboard
data class Bool3(x: Boolean, y: Boolean, z: Boolean)
Bool4
Link copied to clipboard
data class Bool4(x: Boolean, y: Boolean, z: Boolean, w: Boolean)
Float2
Link copied to clipboard
data class Float2(x: Float, y: Float)
Float3
Link copied to clipboard
data class Float3(x: Float, y: Float, z: Float)
Float4
Link copied to clipboard
data class Float4(x: Float, y: Float, z: Float, w: Float)
Mat2
Link copied to clipboard
data class Mat2(x: Float2, y: Float2)
Mat3
Link copied to clipboard
data class Mat3(x: Float3, y: Float3, z: Float3)
Mat4
Link copied to clipboard
data class Mat4(x: Float4, y: Float4, z: Float4, w: Float4)
MatrixColumn
Link copied to clipboard
enum MatrixColumn : Enum<MatrixColumn>
Quaternion
Link copied to clipboard
data class Quaternion(x: Float, y: Float, z: Float, w: Float)

Construct Quaternion and set each value. The Quaternion will be normalized during construction Default: Identity

QuaternionComponent
Link copied to clipboard
enum QuaternionComponent : Enum<QuaternionComponent>
Rational
Link copied to clipboard
value class Rational(r: Long) : Comparable<Rational>
Ray
Link copied to clipboard
data class Ray(origin: Float3, direction: Float3)
RotationsOrder
Link copied to clipboard
enum RotationsOrder : Enum<RotationsOrder>
VectorComponent
Link copied to clipboard
enum VectorComponent : Enum<VectorComponent>

Functions

abs
Link copied to clipboard
inline fun abs(v: Float2): Float2
inline fun abs(v: Float3): Float3
inline fun abs(v: Float4): Float4
inline fun abs(q: Quaternion): Quaternion
all
Link copied to clipboard
inline fun all(v: Bool2): Boolean
inline fun all(v: Bool3): Boolean
inline fun all(v: Bool4): Boolean
angle
Link copied to clipboard
inline fun angle(a: Float2, b: Float2): Float
inline fun angle(a: Float3, b: Float3): Float
fun angle(a: Quaternion, b: Quaternion): Float
any
Link copied to clipboard
inline fun any(v: Bool2): Boolean
inline fun any(v: Bool3): Boolean
inline fun any(v: Bool4): Boolean
clamp
Link copied to clipboard
inline fun clamp(v: Float2, min: Float2, max: Float2): Float2
inline fun clamp(v: Float2, min: Float, max: Float): Float2
inline fun clamp(v: Float3, min: Float3, max: Float3): Float3
inline fun clamp(v: Float3, min: Float, max: Float): Float3
inline fun clamp(v: Float4, min: Float4, max: Float4): Float4
inline fun clamp(v: Float4, min: Float, max: Float): Float4
inline fun clamp(x: Float, min: Float, max: Float): Float
conjugate
Link copied to clipboard
fun conjugate(q: Quaternion): Quaternion
cross
Link copied to clipboard
inline fun cross(a: Float3, b: Float3): Float3
fun cross(a: Quaternion, b: Quaternion): Quaternion
degrees
Link copied to clipboard
inline fun degrees(v: Float): Float
distance
Link copied to clipboard
inline fun distance(a: Float2, b: Float2): <ERROR CLASS>
inline fun distance(a: Float3, b: Float3): <ERROR CLASS>
inline fun distance(a: Float4, b: Float4): <ERROR CLASS>
div
Link copied to clipboard
inline operator fun Float.div(v: Float2): Float2
inline operator fun Float.div(v: Float3): Float3
inline operator fun Float.div(v: Float4): Float4
inline operator fun Float.div(q: Quaternion): Quaternion
dot
Link copied to clipboard
inline fun dot(a: Float2, b: Float2): Float
inline fun dot(a: Float3, b: Float3): Float
inline fun dot(a: Float4, b: Float4): Float
inline fun dot(a: Quaternion, b: Quaternion): Float
eq
Link copied to clipboard
infix inline fun Float2.eq(b: Float2): Bool2
infix inline fun Float2.eq(b: Float): Bool2
infix inline fun Float3.eq(b: Float3): Bool3
infix inline fun Float3.eq(b: Float): Bool3
infix inline fun Float4.eq(b: Float4): Bool4
infix inline fun Float4.eq(b: Float): Bool4
equal
Link copied to clipboard
inline fun equal(a: Float2, b: Float2): Bool2
inline fun equal(a: Float2, b: Float): Bool2
inline fun equal(a: Float3, b: Float3): Bool3
inline fun equal(a: Float3, b: Float): Bool3
inline fun equal(a: Float4, b: Float4): Bool4
inline fun equal(a: Float4, b: Float): Bool4
eulerAngles
Link copied to clipboard
fun eulerAngles(m: Mat4, order: RotationsOrder = RotationsOrder.ZYX): Float3

Get the Euler angles in degrees from a rotation Matrix

fun eulerAngles(q: Quaternion, order: RotationsOrder = RotationsOrder.ZYX): Float3

Convert a Quaternion to Euler angles

fract
Link copied to clipboard
inline fun fract(v: Float): Float
greaterThan
Link copied to clipboard
inline fun greaterThan(a: Float2, b: Float2): Bool2
inline fun greaterThan(a: Float2, b: Float): Bool2
inline fun greaterThan(a: Float3, b: Float3): Bool3
inline fun greaterThan(a: Float3, b: Float): Bool3
inline fun greaterThan(a: Float4, b: Float4): Bool4
inline fun greaterThan(a: Float4, b: Float): Bool4
greaterThanEqual
Link copied to clipboard
inline fun greaterThanEqual(a: Float2, b: Float2): Bool2
inline fun greaterThanEqual(a: Float2, b: Float): Bool2
inline fun greaterThanEqual(a: Float3, b: Float3): Bool3
inline fun greaterThanEqual(a: Float3, b: Float): Bool3
inline fun greaterThanEqual(a: Float4, b: Float4): Bool4
inline fun greaterThanEqual(a: Float4, b: Float): Bool4
gt
Link copied to clipboard
infix inline fun Float2.gt(b: Float2): Bool2
infix inline fun Float2.gt(b: Float): Bool2
infix inline fun Float3.gt(b: Float3): Bool3
infix inline fun Float3.gt(b: Float): Bool3
infix inline fun Float4.gt(b: Float4): Bool4
infix inline fun Float4.gt(b: Float): Bool4
gte
Link copied to clipboard
infix inline fun Float2.gte(b: Float2): Bool2
infix inline fun Float2.gte(b: Float): Bool2
infix inline fun Float3.gte(b: Float3): Bool3
infix inline fun Float3.gte(b: Float): Bool3
infix inline fun Float4.gte(b: Float4): Bool4
infix inline fun Float4.gte(b: Float): Bool4
inverse
Link copied to clipboard
fun inverse(m: Mat3): Mat3
fun inverse(m: Mat4): Mat4
fun inverse(q: Quaternion): Quaternion
length
Link copied to clipboard
inline fun length(v: Float2): <ERROR CLASS>
inline fun length(v: Float3): <ERROR CLASS>
inline fun length(v: Float4): <ERROR CLASS>
inline fun length(q: Quaternion): <ERROR CLASS>
length2
Link copied to clipboard
inline fun length2(v: Float2): Float
inline fun length2(v: Float3): Float
inline fun length2(v: Float4): Float
inline fun length2(q: Quaternion): Float
lerp
Link copied to clipboard
fun lerp(a: Quaternion, b: Quaternion, t: Float): Quaternion
lessThan
Link copied to clipboard
inline fun lessThan(a: Float2, b: Float2): Bool2
inline fun lessThan(a: Float2, b: Float): Bool2
inline fun lessThan(a: Float3, b: Float3): Bool3
inline fun lessThan(a: Float3, b: Float): Bool3
inline fun lessThan(a: Float4, b: Float4): Bool4
inline fun lessThan(a: Float4, b: Float): Bool4
lessThanEqual
Link copied to clipboard
inline fun lessThanEqual(a: Float2, b: Float2): Bool2
inline fun lessThanEqual(a: Float2, b: Float): Bool2
inline fun lessThanEqual(a: Float3, b: Float3): Bool3
inline fun lessThanEqual(a: Float3, b: Float): Bool3
inline fun lessThanEqual(a: Float4, b: Float4): Bool4
inline fun lessThanEqual(a: Float4, b: Float): Bool4
lookAt
Link copied to clipboard
fun lookAt(eye: Float3, target: Float3, up: Float3 = Float3(z = 1.0f)): Mat4
lookTowards
Link copied to clipboard
fun lookTowards(eye: Float3, forward: Float3, up: Float3 = Float3(z = 1.0f)): Mat4
lt
Link copied to clipboard
infix inline fun Float2.lt(b: Float2): Bool2
infix inline fun Float2.lt(b: Float): Bool2
infix inline fun Float3.lt(b: Float3): Bool3
infix inline fun Float3.lt(b: Float): Bool3
infix inline fun Float4.lt(b: Float4): Bool4
infix inline fun Float4.lt(b: Float): Bool4
lte
Link copied to clipboard
infix inline fun Float2.lte(b: Float2): Bool2
infix inline fun Float2.lte(b: Float): Bool2
infix inline fun Float3.lte(b: Float3): Bool3
infix inline fun Float3.lte(b: Float): Bool3
infix inline fun Float4.lte(b: Float4): Bool4
infix inline fun Float4.lte(b: Float): Bool4
max
Link copied to clipboard
inline fun max(v: Float2): <ERROR CLASS>
inline fun max(v: Float3): <ERROR CLASS>
inline fun max(v: Float4): <ERROR CLASS>
inline fun max(a: Float2, b: Float2): Float2
inline fun max(a: Float3, b: Float3): Float3
inline fun max(a: Float4, b: Float4): Float4
min
Link copied to clipboard
inline fun min(v: Float2): <ERROR CLASS>
inline fun min(v: Float3): <ERROR CLASS>
inline fun min(v: Float4): <ERROR CLASS>
inline fun min(a: Float2, b: Float2): Float2
inline fun min(a: Float3, b: Float3): Float3
inline fun min(a: Float4, b: Float4): Float4
minus
Link copied to clipboard
inline operator fun Float.minus(v: Float2): Float2
inline operator fun Float.minus(v: Float3): Float3
inline operator fun Float.minus(v: Float4): Float4
inline operator fun Float.minus(q: Quaternion): Quaternion
mix
Link copied to clipboard
inline fun mix(a: Float2, b: Float2, x: Float2): Float2
inline fun mix(a: Float2, b: Float2, x: Float): Float2
inline fun mix(a: Float3, b: Float3, x: Float3): Float3
inline fun mix(a: Float3, b: Float3, x: Float): Float3
inline fun mix(a: Float4, b: Float4, x: Float4): Float4
inline fun mix(a: Float4, b: Float4, x: Float): Float4
inline fun mix(a: Float, b: Float, x: Float): Float
neq
Link copied to clipboard
infix inline fun Float2.neq(b: Float2): Bool2
infix inline fun Float2.neq(b: Float): Bool2
infix inline fun Float3.neq(b: Float3): Bool3
infix inline fun Float3.neq(b: Float): Bool3
infix inline fun Float4.neq(b: Float4): Bool4
infix inline fun Float4.neq(b: Float): Bool4
nlerp
Link copied to clipboard
fun nlerp(a: Quaternion, b: Quaternion, t: Float): Quaternion
normal
Link copied to clipboard
fun normal(m: Mat4): Mat4
normalize
Link copied to clipboard
fun normalize(v: Float2): Float2
fun normalize(v: Float3): Float3
fun normalize(v: Float4): Float4

fun normalize(q: Quaternion): Quaternion

Rescale the Quaternion to the unit length

notEqual
Link copied to clipboard
inline fun notEqual(a: Float2, b: Float2): Bool2
inline fun notEqual(a: Float2, b: Float): Bool2
inline fun notEqual(a: Float3, b: Float3): Bool3
inline fun notEqual(a: Float3, b: Float): Bool3
inline fun notEqual(a: Float4, b: Float4): Bool4
inline fun notEqual(a: Float4, b: Float): Bool4
ortho
Link copied to clipboard
fun ortho(l: Float, r: Float, b: Float, t: Float, n: Float, f: Float): Mat4
perspective
Link copied to clipboard
fun perspective(fov: Float, ratio: Float, near: Float, far: Float): Mat4
plus
Link copied to clipboard
inline operator fun Float.plus(v: Float2): Float2
inline operator fun Float.plus(v: Float3): Float3
inline operator fun Float.plus(v: Float4): Float4
inline operator fun Float.plus(q: Quaternion): Quaternion
pointAt
Link copied to clipboard
fun pointAt(r: Ray, t: Float): Float3
pow
Link copied to clipboard
inline fun pow(x: Float, y: Float): <ERROR CLASS>
quaternion
Link copied to clipboard
fun quaternion(m: Mat4): Quaternion

Get the Quaternion from a rotation Matrix

radians
Link copied to clipboard
inline fun radians(v: Float): Float
Rational
Link copied to clipboard
fun Rational(value: Double): Rational
fun Rational(value: Float): Rational
fun Rational(value: Int): Rational
fun Rational(numerator: Int, denominator: Int): Rational
reflect
Link copied to clipboard
inline fun reflect(i: Float2, n: Float2): Float2
inline fun reflect(i: Float3, n: Float3): Float3
refract
Link copied to clipboard
fun refract(i: Float2, n: Float2, eta: Float): Float2
fun refract(i: Float3, n: Float3, eta: Float): Float3
rotation
Link copied to clipboard
fun rotation(m: Mat4): Mat4
fun rotation(axis: Float3, angle: Float): Mat4

fun rotation(quaternion: Quaternion): Mat4

Construct a Quaternion Rotation Matrix following the Hamilton convention

fun rotation(d: Float3, order: RotationsOrder = RotationsOrder.ZYX): Mat4

Construct a rotation matrix from Euler angles using YPR around a specified order

fun rotation(yaw: Float = 0.0f, pitch: Float = 0.0f, roll: Float = 0.0f, order: RotationsOrder = RotationsOrder.ZYX): Mat4

Construct a rotation matrix from Euler yaw, pitch, roll around a specified order.

saturate
Link copied to clipboard
inline fun saturate(x: Float): Float
scale
Link copied to clipboard
fun scale(s: Float3): Mat4
fun scale(m: Mat4): Mat4
slerp
Link copied to clipboard
fun slerp(a: Quaternion, b: Quaternion, t: Float, dotThreshold: Float = 0.9995f): Quaternion

Spherical linear interpolation between two given orientations

sqr
Link copied to clipboard
inline fun sqr(v: Float): Float
times
Link copied to clipboard
inline operator fun Float.times(v: Float2): Float2
inline operator fun Float.times(v: Float3): Float3
inline operator fun Float.times(v: Float4): Float4
inline operator fun Float.times(q: Quaternion): Quaternion
transform
Link copied to clipboard
inline fun transform(v: Float2, block: (Float) -> Float): Float2
inline fun transform(v: Float3, block: (Float) -> Float): Float3
inline fun transform(v: Float4, block: (Float) -> Float): Float4
translation
Link copied to clipboard
fun translation(t: Float3): Mat4
fun translation(m: Mat4): Mat4
transpose
Link copied to clipboard
fun transpose(m: Mat2): Mat2
fun transpose(m: Mat3): Mat3
fun transpose(m: Mat4): Mat4
x
Link copied to clipboard
infix inline fun Float3.x(v: Float3): Float3

Properties

FOUR_PI
Link copied to clipboard
const val FOUR_PI: Float
HALF_PI
Link copied to clipboard
const val HALF_PI: Float
INV_FOUR_PI
Link copied to clipboard
const val INV_FOUR_PI: Float
INV_PI
Link copied to clipboard
const val INV_PI: Float
INV_TWO_PI
Link copied to clipboard
const val INV_TWO_PI: Float
PI
Link copied to clipboard
const val PI: Float = 3.1415927f
TWO_PI
Link copied to clipboard
const val TWO_PI: Float