28 #define qh_ANGLEredundant 6.0 36 #define qh_ANGLEdegen 5.0 48 #define qh_ANGLEconcave 1.5 78 #define qh_MERGEapex True 112 #define FOREACHmerge_( merges ) FOREACHsetelement_(mergeT, merges, merge) void qh_mergecycle(qhT *qh, facetT *samecycle, facetT *newfacet)
void qh_mark_dupridges(qhT *qh, facetT *facetlist)
void qh_mergevertex_neighbors(qhT *qh, facetT *facet1, facetT *facet2)
ridgeT * qh_hashridge_find(qhT *qh, setT *hashtable, int hashsize, ridgeT *ridge, vertexT *vertex, vertexT *oldvertex, int *hashslot)
int qh_comparemerge(const void *p1, const void *p2)
void qh_updatetested(qhT *qh, facetT *facet1, facetT *facet2)
void qh_mergevertices(qhT *qh, setT *vertices1, setT **vertices)
void qh_renameridgevertex(qhT *qh, ridgeT *ridge, vertexT *oldvertex, vertexT *newvertex)
void qh_hashridge(qhT *qh, setT *hashtable, int hashsize, ridgeT *ridge, vertexT *oldvertex)
void qh_mergecycle_all(qhT *qh, facetT *facetlist, boolT *wasmerge)
void qh_degen_redundant_facet(qhT *qh, facetT *facet)
void qh_tracemerging(qhT *qh)
boolT qh_remove_extravertices(qhT *qh, facetT *facet)
void qh_mergecycle_facets(qhT *qh, facetT *samecycle, facetT *newfacet)
void qh_getmergeset(qhT *qh, facetT *facetlist)
void qh_flippedmerges(qhT *qh, facetT *facetlist, boolT *wasmerge)
facetT * qh_findbestneighbor(qhT *qh, facetT *facet, realT *distp, realT *mindistp, realT *maxdistp)
void qh_postmerge(qhT *qh, const char *reason, realT maxcentrum, realT maxangle, boolT vneighbors)
void qh_copynonconvex(qhT *qh, ridgeT *atridge)
setT * qh_vertexridges(qhT *qh, vertexT *vertex)
void qh_makeridges(qhT *qh, facetT *facet)
vertexT * qh_redundant_vertex(qhT *qh, vertexT *vertex)
void qh_findbest_test(qhT *qh, boolT testcentrum, facetT *facet, facetT *neighbor, facetT **bestfacet, realT *distp, realT *mindistp, realT *maxdistp)
setT * qh_basevertices(qhT *qh, facetT *samecycle)
void qh_renamevertex(qhT *qh, vertexT *oldvertex, vertexT *newvertex, setT *ridges, facetT *oldfacet, facetT *neighborA)
void qh_vertexridges_facet(qhT *qh, vertexT *vertex, facetT *facet, setT **ridges)
boolT qh_test_appendmerge(qhT *qh, facetT *facet, facetT *neighbor)
void qh_mergecycle_neighbors(qhT *qh, facetT *samecycle, facetT *newfacet)
void qh_mergecycle_ridges(qhT *qh, facetT *samecycle, facetT *newfacet)
void qh_degen_redundant_neighbors(qhT *qh, facetT *facet, facetT *delfacet)
void qh_all_merges(qhT *qh, boolT othermerge, boolT vneighbors)
void qh_merge_nonconvex(qhT *qh, facetT *facet1, facetT *facet2, mergeType mergetype)
void qh_mergefacet2d(qhT *qh, facetT *facet1, facetT *facet2)
void qh_mergeridges(qhT *qh, facetT *facet1, facetT *facet2)
void qh_mergefacet(qhT *qh, facetT *facet1, facetT *facet2, realT *mindist, realT *maxdist, boolT mergeapex)
boolT qh_test_vneighbors(qhT *qh)
vertexT * qh_find_newvertex(qhT *qh, vertexT *oldvertex, setT *vertices, setT *ridges)
void qh_tracemerge(qhT *qh, facetT *facet1, facetT *facet2)
int qh_comparevisit(const void *p1, const void *p2)
void qh_mergesimplex(qhT *qh, facetT *facet1, facetT *facet2, boolT mergeapex)
void qh_appendmergeset(qhT *qh, facetT *facet, facetT *neighbor, mergeType mergetype, realT *angle)
void qh_mergeneighbors(qhT *qh, facetT *facet1, facetT *facet2)
int qh_compareangle(const void *p1, const void *p2)
setT * qh_neighbor_intersections(qhT *qh, vertexT *vertex)
vertexT * qh_rename_sharedvertex(qhT *qh, vertexT *vertex, facetT *facet)
void qh_maydropneighbor(qhT *qh, facetT *facet)
void qh_newvertices(qhT *qh, setT *vertices)
int qh_merge_degenredundant(qhT *qh)
boolT qh_reducevertices(qhT *qh)
void qh_premerge(qhT *qh, vertexT *apex, realT maxcentrum, realT maxangle)
void qh_forcedmerges(qhT *qh, boolT *wasmerge)
void qh_checkconnect(qhT *qh)
void qh_getmergeset_initial(qhT *qh, facetT *facetlist)
void qh_willdelete(qhT *qh, facetT *facet, facetT *replace)
void qh_mergevertex_del(qhT *qh, vertexT *vertex, facetT *facet1, facetT *facet2)
void qh_mergecycle_vneighbors(qhT *qh, facetT *samecycle, facetT *newfacet)
boolT qh_checkzero(qhT *qh, boolT testall)