A single-file, cross-platform, public domain game math library for C/C++.
To get started, go download the latest release.
|1.13.0||Fully inlined HandmadeMath.h. No need for HANDMADE_MATH_IMPLEMENTATION anymore|
|1.12.1||Added extra parentheses around some macros|
|1.12.0||Added Unary Minus operator for
|1.11.1||Added HMM_PREFIX macro to a few functions that were missing it.|
|1.11.0||Added ability to customize or remove the default
|1.10.1||Removed stdint.h, this doesn't exist on some really old compilers and we didn't really use it anyways.|
|1.10.0||Made HMM_Perspective use vertical FOV instead of horizontal FOV for consistency with other graphics APIs.|
|1.9.0||Added SSE versions of quaternion operations.|
|1.8.0||Added fast vector normalization routines that use fast inverse square roots.|
|1.7.1||Changed operator to take a const ref int instead of an int.|
|1.7.0||Renamed the 'Rows' member of hmm_mat4 to 'Columns'. Since our matrices are column-major, this should have been named 'Columns' from the start. 'Rows' is still present, but has been deprecated.|
|1.6.0||Added array subscript operators for vector and matrix types in C++. This is provided as a convenience, but be aware that it may incur an extra function call in unoptimized builds.|
|1.5.1||Fixed a bug with uninitialized elements in HMM_LookAt.|
|1.5.0||Changed internal structure for better performance and inlining. As a result,
|1.4.0||Fixed bug when using C mode. SSE'd all vec4 operations. Removed zeroing for better performance.|
|1.3.0||Removed need to
|1.2.0||Added equality functions for
|1.1.4||Fixed SSE being included on platforms that don't support it, and fixed divide-by-zero errors when normalizing zero vectors.|
|1.1.3||Fixed compile error in C mode|
|1.1.2||Fixed invalid HMMDEF's in the function definitions|
|1.1.1||Resolved compiler warnings on gcc and g++|
|1.0||Lots of testing|
|0.7||Added HMM_Vec2, and HMM_Vec4 versions of HMM_LengthSquared, HMM_Length, and HMM_Normalize.|
|0.6||Made HMM_Power faster, Fixed possible efficiency problem with HMM_Normalize, RENAMED HMM_LengthSquareRoot to HMM_LengthSquared, RENAMED HMM_RSqrtF to HMM_RSquareRootF, RENAMED HMM_SqrtF to HMM_SquareRootF, REMOVED Inner function (user should use Dot now), REMOVED HMM_FastInverseSquareRoot function declaration|
|0.5.2||Fixed SSE code in HMM_SqrtF and HMM_RSqrtF|
|0.5.1||Fixed HMM_Translate producing row-major matrices, ensured column-major order for matrices throughout|
|0.5||Added scalar operations on vectors and matrices, added += and -= for hmm_mat4, reconciled headers and implementations, tidied up in general|
|0.4||Added SSE Optimized HMM_SqrtF, HMM_RSqrtF, Removed use of C Runtime|
|0.3||Added +=,-=, *=, /= for hmm_vec2, hmm_vec3, hmm_vec4|
|0.2b||Disabled warning C4201 on MSVC, Added 64bit precision on HMM_PI|
|0.2||Updated Documentation, Fixed C Compliance, Prefixed all functions, and added better operator overloading|
What's the license?
This library is in the public domain. You can do whatever you want with it.
Where can I contact you to ask questions?
Feel free to make Github issues for any questions, concerns, or problems you encounter.