Skip to content

karimnaaji/3d-quickhull

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3d-quickhull

Header only 3d quickhull in ANSI C

Usage

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

#define QUICKHULL_IMPLEMENTATION
#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);

// ...

qh_free_mesh(mesh);

Example

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

Releases

No releases published

Packages

No packages published

Languages