aboutsummaryrefslogtreecommitdiff log msg author committer range
path: root/src/mtx_qhull/zhull.h
blob: cc40f47a67855bde51df905b2533ef136efb1027 (plain)
 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ``` ``````#ifndef QHULL_ZHULL_H #define QHULL_ZHULL_H #include "vectors.h" #include "list.h" #include #include #include #define TOL_OUTSIDEPOINT 1e-7 #define TOL_INSIDEPOINT -1e-7 #define TOL_DEGENERATE 1e-6 #define MAXIT 1000000 /* * zhull * * own qhull algorithm implementation * * Copyright (c) 2012, Franz Zotter * with friendly help from * IOhannes zmoelnig * IEM, Graz, Austria * * own Implementation after the QHULL algorithm * that is documented in * Barber, C.B., Dobkin, D.P., and Huhdanpaa, H.T., * "The Quickhull algorithm for convex hulls," ACM Trans. * on Mathematical Software, 22(4):469-483, Dec 1996, * http://www.qhull.org * */ typedef struct facet_ { plane_t plane; list_t corners; list_t outsideset; list_t insideset; size_t farthest_outside_point; list_t neighbors; float maxdistance; } facet_t; typedef struct zhull_ { points_t pts; list_t used_pts; list_t facets; list_t facets_with_outsidepoints; list_t facets_with_insidepoints; } zhull_t; int calculateZHull(zhull_t *zh); index_t getTriangleCorner(const zhull_t * const zh, const index_t triangle_idx, const index_t corner_idx); void printZhull(const zhull_t * const zh); void freeZhull(zhull_t *zh); zhull_t zhullInitPoints(const float *x, const float *y, const float *z, const size_t num_points); void printFacet(const zhull_t * const zh, const facet_t * const f); #endif /* QHULL_ZHULL_H */ ``````