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

5.1. Structures

AABR

axis aligned bounding rectangle

Fields
  • min : float2 - min coordinates

  • max : float2 - max coordinates

AABB

axis aligned bounding box

Fields
  • min : float3 - min coordinates

  • max : float3 - max coordinates

Ray

ray (direction and origin)

Fields
  • dir : float3 - direction

  • origin : float3 - origin

5.2. Angle conversions

degrees(f: float) : float()

convert radians to degrees

Arguments
  • f : float

radians(f: float) : float()

convert degrees to radians

Arguments
  • f : float

5.3. Intersections

is_intersecting(a: AABR; b: AABR) : bool()

returns true if inputs intersect

Arguments
is_intersecting(a: AABB; b: AABB) : bool()

returns true if inputs intersect

Arguments
is_intersecting(ray: Ray; aabb: AABB; Tmin: float = 0f; Tmax: float = FLT_MAX) : bool()

returns true if ray intersects aabb within [Tmin, Tmax]

Arguments
  • ray : Ray

  • aabb : AABB

  • Tmin : float

  • Tmax : float

5.4. Matrices

look_at_lh(Eye: float3; At: float3; Up: float3) : float4x4()

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

Arguments
  • Eye : float3

  • At : float3

  • Up : float3

look_at_rh(Eye: float3; At: float3; Up: float3) : float4x4()

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

Arguments
  • Eye : float3

  • At : float3

  • Up : float3

perspective_lh(fovy: float; aspect: float; zn: float; zf: float) : float4x4()

left-handed (z forward) perspective matrix

Arguments
  • fovy : float

  • aspect : float

  • zn : float

  • zf : float

perspective_rh(fovy: float; aspect: float; zn: float; zf: float) : float4x4()

right-handed (z toward viewer) perspective matrix

Arguments
  • fovy : float

  • aspect : float

  • zn : float

  • zf : float

perspective_rh_opengl(fovy: float; aspect: float; zn: float; zf: float) : float4x4()

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

Arguments
  • fovy : float

  • aspect : float

  • zn : float

  • zf : float

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

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

Arguments
  • left : float

  • right : float

  • bottom : float

  • top : float

  • zNear : float

  • zFar : float

planar_shadow(Light: float4; Plane: float4) : float4x4()

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

Arguments
  • Light : float4

  • Plane : float4

5.5. Plane

plane_dot(Plane: float4; Vec: float4) : float()

dot product of Plane and ‘Vec’

Arguments
  • Plane : float4

  • Vec : float4

plane_normalize(Plane: float4) : float4()

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

Arguments
  • Plane : float4

plane_from_point_normal(p: float3; n: float3) : float4()

construct plane from point p and normal n

Arguments
  • p : float3

  • n : float3

5.6. Color conversions

linear_to_SRGB(x: float) : float()

convert value from linear space to sRGB curve space

Arguments
  • x : float

linear_to_SRGB(c: float3) : float3()

convert value from linear space to sRGB curve space

Arguments
  • c : float3

linear_to_SRGB(c: float4) : float4()

convert value from linear space to sRGB curve space

Arguments
  • c : float4

5.7. Color packig and unpacking

RGBA_TO_UCOLOR(x: float; y: float; z: float; w: float) : uint()

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

Arguments
  • x : float

  • y : float

  • z : float

  • w : float

RGBA_TO_UCOLOR(xyzw: float4) : uint()

conversion from RGBA to ucolor. xyzw components are in [0,1] range

Arguments
  • xyzw : float4

UCOLOR_TO_RGBA(x: uint) : float4()

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

Arguments
  • x : uint

UCOLOR_TO_RGB(x: uint) : float3()

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

Arguments
  • x : uint