Features offered by the CML include:
- Classes for vectors, matrices, and quaternions
- Vectors and matrices of arbitrary size (fixed or dynamically resizable)
- Choice of element type for each class
- Choice of row- or column-major matrix layout
- Support for both row- and column-vector notation
- Choice of standard or ‘reverse’ quaternion multiplication order
- Conversions between quaternions, matrices, axis-angle pairs, and Euler angles
- Support for all Euler angle orders (xyz, xyx, etc.)
- Conversions between polar, cylindrical, spherical, and Cartesian coordinates
- Frustum plane extraction
- Frustum corner computation for debug rendering
- Projection and ‘unprojection’ of points
- Support for picking using rays, volumes, and drag-enclosed volumes
- Support for various types of billboarding, including viewplane-aligned and axial
- A large library of functions for the construction and manipulation of transforms in 2D and 3D
- A variety of useful utility functions
For more information see the full documentation.