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 
- Windows:
./scripts/build-release.bat
- macOS / Ubuntu:
./scripts/build-release.sh
Inspired by