/math

Linear algebra mathematics C++ library. (float3, float4, float4x4, quat, ray, etc.)

Primary LanguageC++Apache License 2.0Apache-2.0

Math

A library providing common linear algebra math operations.

See the documentation.

Features

  • Vector (float2/3/4, int2/3/4)
  • Matrix (float2x2/3x3/4x4)
  • Quaternion (float4)
  • Euler angles, radians conversion
  • Matrix translate, scale, rotate
  • Pespective, orthographics projection
  • Ray, line, plane, triangle, sphere...
  • Axis aligned bounding box (AABB)
  • Bounding volume hierarchy (BVH)
  • Color conversion (RGBA, linear)
  • Version (major, minor, patch, build)
  • Hexadecimal string conversion
  • Tone mapping, gamma correction
  • Image based lighting (IBL, BRDF)
  • Spherical harmonics (SH)
  • Enum class flags declaration
  • Simplified integer types (uint32, int8, etc)

Supported operating systems

  • Windows (10/11)
  • Ubuntu (22.04/24.04)
  • macOS (14/15)

This list includes only those systems on which functionality testing is conducted. However, you can also compile it under any other Linux distribution or operating system.

Build requirements

Use building instructions to install all required tools and libraries.

CMake options

Name Description Default value
MATH_BUILD_SHARED Build Math shared library ON
MATH_BUILD_TESTS Build Math library tests ON

CMake targets

Name Description Windows macOS Linux
math-static Static Math library .lib .a .a
math-shared Dynamic Math library .dll .dylib .so

Cloning

git clone https://github.com/cfnptr/math

Building CI

  • Windows: ./scripts/build-release.bat
  • macOS / Ubuntu: ./scripts/build-release.sh

Inspired by