CwMtx is a library for matrix, vector and quaternion math.
CwMtx is a library I wrote in C++ that provides the matrix and vector operations that are used extensively in engineering and science problems.
A special feature of this library is the quaternion class which implements quaternion math. Quaternions are very useful for attitude determination in 3D space because they do not suffer from singularities. Furthermore, successive rotations and transformations of vectors can be accomplished by simple quaternion multiplication. Attitude dynamics can be expressed in a very compact form using quaternions.
For more information on quaternions and their applications, see: "Spacecraft attitude determination and control", Edited by James Wertz, D. Reidel Publishing Company, Dordrecht: Holland, Boston: U.S.A., London: England.
Speeding up CwMtx
The original version of CwMtx contains matrices that can be dimensioned dynamically. This is very flexible but it also slows matrix operations down because dynamic memory management is slow. In an attempt to circumvent this disadvantage I created a version of CwMtx that contains statically dimensioned matrices. This speeds up matrix operations considerably. Especially operations on small matrices (3x3, 4x4) and vectors (3x1, 4x1) as used in 3D problems are 3 to 5 times faster than with their dynamically dimensioned counterparts. However, I think CwMtx is not the fastest matrix library around and speed is not the highest priority for me.