27 #define qh_ALGORITHMfault 0 35 #define qh_DATAfault 1 46 #define qh_DUPLICATEridge (facetT *)1L 57 #define qh_MERGEridge (facetT *)2L 77 #define FORALLfacet_( facetlist ) if (facetlist ) for ( facet=( facetlist ); facet && facet->next; facet= facet->next ) 89 #define FORALLnew_facets for ( newfacet=qh newfacet_list;newfacet && newfacet->next;newfacet=newfacet->next ) 101 #define FORALLvertex_( vertexlist ) for (vertex=( vertexlist );vertex && vertex->next;vertex= vertex->next ) 113 #define FORALLvisible_facets for (visible=qh visible_list; visible && visible->visible; visible= visible->next) 125 #define FORALLsame_(newfacet) for (same= newfacet->f.samecycle; same != newfacet; same= same->f.samecycle) 137 #define FORALLsame_cycle_(newfacet) \ 138 for (same= newfacet->f.samecycle; \ 139 same; same= (same == newfacet ? NULL : same->f.samecycle)) 156 #define FOREACHneighborA_(facet) FOREACHsetelement_(facetT, facet->neighbors, neighborA) 168 #define FOREACHvisible_(facets) FOREACHsetelement_(facetT, facets, visible) 180 #define FOREACHnewfacet_(facets) FOREACHsetelement_(facetT, facets, newfacet) 192 #define FOREACHvertexA_(vertices) FOREACHsetelement_(vertexT, vertices, vertexA) 205 #define FOREACHvertexreverse12_(vertices) FOREACHsetelementreverse12_(vertexT, vertices, vertex) 217 int qh_gethash(
int hashsize,
setT *
set,
int size,
int firstindex,
void *skipelem);
226 setT *verticesB,
int *skipB,
boolT *same);
237 void qh_addhash(
void* newelem,
setT *hashtable,
int hashsize,
int hash);
void qh_checkfacet(facetT *facet, boolT newmerge, boolT *waserrorp)
setT * qh_facetintersect(facetT *facetA, facetT *facetB, int *skipAp, int *skipBp, int extra)
facetT * qh_makenew_nonsimplicial(facetT *visible, vertexT *apex, int *numnew)
void qh_resetlists(boolT stats, boolT resetVisible)
facetT * qh_findbestlower(facetT *upperfacet, pointT *point, realT *bestdistp, int *numpart)
ridgeT * qh_newridge(void)
void qh_attachnewfacets(void)
void qh_checkflipped_all(facetT *facetlist)
void qh_addhash(void *newelem, setT *hashtable, int hashsize, int hash)
setT * qh_pointfacet(void)
facetT * qh_newfacet(void)
vertexT * qh_nearvertex(facetT *facet, pointT *point, realT *bestdistp)
void qh_matchneighbor(facetT *newfacet, int newskip, int hashsize, int *hashcount)
void qh_deletevisible(void)
void qh_check_dupridge(facetT *facet1, realT dist1, facetT *facet2, realT dist2)
setT * qh_initialvertices(int dim, setT *maxpoints, pointT *points, int numpoints)
vertexT * qh_newvertex(pointT *point)
void qh_check_point(pointT *point, facetT *facet, realT *maxoutside, realT *maxdist, facetT **errfacet1, facetT **errfacet2)
facetT * qh_makenewfacet(setT *vertices, boolT toporient, facetT *facet)
facetT * qh_findfacet_all(pointT *point, realT *bestdist, boolT *isoutside, int *numpart)
void qh_delvertex(vertexT *vertex)
void qh_printhashtable(FILE *fp)
int qh_pointid(pointT *point)
void qh_outcoplanar(void)
void qh_nearcoplanar(void)
boolT qh_vertexsubset(setT *vertexsetA, setT *vertexsetB)
void qh_triangulate_link(facetT *oldfacetA, facetT *facetA, facetT *oldfacetB, facetT *facetB)
void qh_check_bestdist(void)
void qh_setvoronoi_all(void)
void qh_appendfacet(facetT *facet)
void qh_matchnewfacets(void)
void qh_infiniteloop(facetT *facet)
void qh_clearcenters(qh_CENTER type)
facetT * qh_findbestfacet(pointT *point, boolT bestoutside, realT *bestdist, boolT *isoutside)
void qh_delfacet(facetT *facet)
void qh_triangulate_null(facetT *facetA)
boolT qh_matchvertices(int firstindex, setT *verticesA, int skipA, setT *verticesB, int *skipB, boolT *same)
void qh_triangulate(void)
int qh_newhashtable(int newsize)
void qh_updatevertices(void)
int qh_findgood(facetT *facetlist, int goodhorizon)
void qh_vertexintersect(setT **vertexsetA, setT *vertexsetB)
void qh_triangulate_facet(facetT *facetA, vertexT **first_vertex)
setT * qh_vertexintersect_new(setT *vertexsetA, setT *vertexsetB)
void qh_makenewplanes(void)
void qh_removevertex(vertexT *vertex)
setT * qh_pointvertex(void)
setT * qh_facet3vertex(facetT *facet)
boolT qh_checkflipped(facetT *facet, realT *dist, boolT allerror)
vertexT * qh_makenewfacets(pointT *point)
ridgeT * qh_nextridge3d(ridgeT *atridge, facetT *facet, vertexT **vertexp)
void qh_furthestnext(void)
void qh_matchduplicates(facetT *atfacet, int atskip, int hashsize, int *hashcount)
int qh_gethash(int hashsize, setT *set, int size, int firstindex, void *skipelem)
void qh_check_output(void)
void qh_furthestout(facetT *facet)
void qh_prependfacet(facetT *facet, facetT **facetlist)
void qh_checkpolygon(facetT *facetlist)
void qh_checkvertex(vertexT *vertex)
void qh_removefacet(facetT *facet)
void qh_createsimplex(setT *vertices)
void qh_checkconvex(facetT *facetlist, int fault)
void qh_vertexneighbors(void)
pointT * qh_point(int id)
void qh_check_maxout(void)
void qh_delridge(ridgeT *ridge)
void qh_point_add(setT *set, pointT *point, void *elem)
vertexT * qh_isvertex(pointT *point, setT *vertices)
void qh_check_points(void)
facetT * qh_makenew_simplicial(facetT *visible, vertexT *apex, int *numnew)
void qh_appendvertex(vertexT *vertex)
void qh_initialhull(setT *vertices)
void qh_findgood_all(facetT *facetlist)
void qh_triangulate_mirror(facetT *facetA, facetT *facetB)