A mature C and C++ math library for 3D graphics.

Author: John Tsiombikas <>

License: GNU LGPL version 3 or later (see COPYING and COPYING.LESSER for details)


Latest release (vmath 3.2):

web site:

code repository:


The vmath library has a double C and C++ interface. So for example a C program could do the following:

#include <stdio.h>
#include "vmath.h"

int main(void)
    vec3_t a, b, x;

    a = v3_cons(1, 0, 0);
    b = v3_cons(0, 1, 0);
    x = v3_cross(a, b);

    v3_print(stdout, x);

    return 0;

While a C++ program could do the following:

#include <iostream>
#include "vmath.h"

int main(void)
    Vector3 a(1, 0, 0);
    Vector3 b(0, 1, 0);
    Vector3 x = cross_product(a, b);

    std::cout << x << std::endl;


To build and install libvmath on UNIX, run the usual:

make install

See ./configure --help for build-time options.

To build on windows, you may use the included visual studio project, or use mingw, in which case just follow the UNIX instructions above.

To cross-compile for windows with mingw-w64, try the following incantation:

./configure --prefix=/usr/i686-w64-mingw32
make CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ AR=i686-w64-mingw32-ar sys=mingw
make install sys=mingw