# 5. Boost package for math¶

The math boost module implements collection of helper macros and functions to accompany math.

All functions and symbols are in “math_boost” module, use require to get access to it.

```require daslib/math_boost
```
`AABR`

AABR fields are

 min float2 max float2

axis aligned bounding rectangle

`AABB`

AABB fields are

 min float3 max float3

axis aligned bounding box

`Ray`

Ray fields are

 dir float3 origin float3

ray (direction and origin)

## 5.1. Angle conversions¶

`degrees`(f: float const)

degrees returns float

argument

argument type

f

float const

`radians`(f: float const)

argument

argument type

f

float const

## 5.2. Intersections¶

`is_intersecting`(a: AABR const; b: AABR const)

is_intersecting returns bool

argument

argument type

a

math_boost::AABR const

b

math_boost::AABR const

returns true if inputs intersect

`is_intersecting`(a: AABB const; b: AABB const)

is_intersecting returns bool

argument

argument type

a

math_boost::AABB const

b

math_boost::AABB const

returns true if inputs intersect

`is_intersecting`(ray: Ray const; aabb: AABB const; Tmin: float const; Tmax: float const)

is_intersecting returns bool

argument

argument type

ray

math_boost::Ray const

aabb

math_boost::AABB const

Tmin

float const

Tmax

float const

returns true if inputs intersect

## 5.3. Matrices¶

`look_at_lh`(Eye: float3 const; At: float3 const; Up: float3 const)

look_at_lh returns math::float4x4

argument

argument type

Eye

float3 const

At

float3 const

Up

float3 const

left-handed (z forward) look at matrix with origin at Eye and target at At, and up vector Up.

`look_at_rh`(Eye: float3 const; At: float3 const; Up: float3 const)

look_at_rh returns math::float4x4

argument

argument type

Eye

float3 const

At

float3 const

Up

float3 const

right-handed (z towards viewer) look at matrix with origin at Eye and target at At, and up vector Up.

`perspective_lh`(fovy: float const; aspect: float const; zn: float const; zf: float const)

perspective_lh returns math::float4x4

argument

argument type

fovy

float const

aspect

float const

zn

float const

zf

float const

left-handed (z forward) perspective matrix

`perspective_rh`(fovy: float const; aspect: float const; zn: float const; zf: float const)

perspective_rh returns math::float4x4

argument

argument type

fovy

float const

aspect

float const

zn

float const

zf

float const

right-handed (z toward viewer) perspective matrix

`perspective_rh_opengl`(fovy: float const; aspect: float const; zn: float const; zf: float const)

perspective_rh_opengl returns math::float4x4

argument

argument type

fovy

float const

aspect

float const

zn

float const

zf

float const

right-handed (z toward viewer) opengl (z in [-1..1]) perspective matrix

`ortho_rh`(left: float const; right: float const; bottom: float const; top: float const; zNear: float const; zFar: float const)

ortho_rh returns math::float4x4

argument

argument type

left

float const

right

float const

bottom

float const

top

float const

zNear

float const

zFar

float const

right handed (z towards viwer) orthographic (parallel) projection matrix

`planar_shadow`(Light: float4 const; Plane: float4 const)

argument

argument type

Light

float4 const

Plane

float4 const

planar shadow projection matrix, i.e. all light shadows to be projected on a plane

## 5.4. Plane¶

`plane_dot`(Plane: float4 const; Vec: float4 const)

plane_dot returns float

argument

argument type

Plane

float4 const

Vec

float4 const

dot product of Plane and ‘Vec’

`plane_normalize`(Plane: float4 const)

plane_normalize returns float4 const

argument

argument type

Plane

float4 const

normalize `Plane’, length xyz will be 1.0 (or 0.0 for no plane)

`plane_from_point_normal`(p: float3 const; n: float3 const)

plane_from_point_normal returns float4

argument

argument type

p

float3 const

n

float3 const

construct plane from point p and normal n

## 5.5. Color packig and unpacking¶

`RGBA_TO_UCOLOR`(x: float const; y: float const; z: float const; w: float const)

RGBA_TO_UCOLOR returns uint

argument

argument type

x

float const

y

float const

z

float const

w

float const

conversion from RGBA to ucolor. x,y,z,w are in [0,1] range

`RGBA_TO_UCOLOR`(xyzw: float4 const)

RGBA_TO_UCOLOR returns uint

argument

argument type

xyzw

float4 const

conversion from RGBA to ucolor. x,y,z,w are in [0,1] range

`UCOLOR_TO_RGBA`(x: uint const)

UCOLOR_TO_RGBA returns float4

argument

argument type

x

uint const

conversion from ucolor to RGBA. x components are in [0,255] range

`UCOLOR_TO_RGB`(x: uint const)

UCOLOR_TO_RGB returns float3

argument

argument type

x

uint const

conversion from ucolor to RGB. x components are in [0,255] range. result is float3(x,y,z)

## 5.6. Uncategorized¶

`linear_to_SRGB`(x: float const)

linear_to_SRGB returns float

argument

argument type

x

float const

convert value from linear space to sRGB curve space

`linear_to_SRGB`(c: float3 const)

linear_to_SRGB returns float3

argument

argument type

c

float3 const

convert value from linear space to sRGB curve space

`linear_to_SRGB`(c: float4 const)

linear_to_SRGB returns float4

argument

argument type

c

float4 const

convert value from linear space to sRGB curve space