Emil Dotchevski


A generic C++ library for working with Quaternions, Vectors and Matrices.



  • Emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications.
  • Free function templates operate on any compatible user-defined Quaternion, Vector or Matrix type.
  • Enables Quaternion, Vector and Matrix types from different libraries to be safely mixed in the same expression.
  • Type-safe mapping between compatible lvalue types with no temporary objects; f.ex. transpose remaps the access to the elements, rather than transforming the matrix.
  • Requires only {CPP}03.
  • Zero dependencies.



Besides GitHub, there are two other distribution channels:

  • QVM is included in official Boost releases.
  • For maximum portability, the library is also available in single-header format, in two variants (direct download links):
    • qvm.hpp: single header containing the complete QVM source, including the complete set of swizzling overloads.
    • qvm_lite.hpp: single header containing everything except for the swizzling overloads.

Copyright 2008-2023 Emil Dotchevski and Reverge Studios, Inc. Distributed under the Boost Software License, Version 1.0.