Header only 3d quickhull in c99
Switch branches/tags
Nothing to show
Clone or download



Header only 3d quickhull in ANSI C


To use this library, simply include quickhull.h once with the QUICKHULL_IMPLEMENTATION define in a .cpp file.

#include "quickhull.h"

The usage of the library is quite simple, generate or gather a set of points, and call qh_quickhull3d. The result is a mesh with a set of indexed normals and vertices ready to upload in a GPU.

const int n = 100;
qh_vertex_t vertices[n];

for (int i = 0; i < n; ++i) {
    float a0 = (rand_0_1() * M_PI * 2);
    float a1 = (rand_0_1() * M_PI * 2);
    vertices[i].z = sin(a0) * radius;
    vertices[i].x = cos(a1) * cos(a0) * rand_0_1();
    vertices[i].y = sin(a1) * cos(a0) * rand_0_1();

qh_mesh_t mesh = qh_quickhull3d(vertices, n);

// ...



If you're interested in low-polygon rendering, using quickhull as a base for mesh triangulation can give such results: