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

convert radians to degrees

radians(f: float const)

radians returns float

argument

argument type

f

float const

convert degrees to radians

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)

planar_shadow returns math::float4x4

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