1 /*<html><pre> -<a href="qh-io.htm" 2 >-------------------------------</a><a name="TOP">-</a> 3 4 io.h 5 declarations of Input/Output functions 6 7 see README, libqhull.h and io.c 8 9 copyright (c) 1993-2010 The Geometry Center. 10 $Id$$Change: 1164 $ 11 $DateTime: 2010/01/07 21:52:00 $$Author$ 12 */ 13 14 #ifndef qhDEFio 15 #define qhDEFio 1 16 17 #include "libqhull.h" 18 19 /*============ constants and flags ==================*/ 20 21 /*-<a href="qh-io.htm#TOC" 22 >--------------------------------</a><a name="qh_MAXfirst">-</a> 23 24 qh_MAXfirst 25 maximum length of first two lines of stdin 26 */ 27 #define qh_MAXfirst 200 28 29 /*-<a href="qh-io.htm#TOC" 30 >--------------------------------</a><a name="qh_MINradius">-</a> 31 32 qh_MINradius 33 min radius for Gp and Gv, fraction of maxcoord 34 */ 35 #define qh_MINradius 0.02 36 37 /*-<a href="qh-io.htm#TOC" 38 >--------------------------------</a><a name="qh_GEOMepsilon">-</a> 39 40 qh_GEOMepsilon 41 adjust outer planes for 'lines closer' and geomview roundoff. 42 This prevents bleed through. 43 */ 44 #define qh_GEOMepsilon 2e-3 45 46 /*-<a href="qh-io.htm#TOC" 47 >--------------------------------</a><a name="qh_WHITESPACE">-</a> 48 49 qh_WHITESPACE 50 possible values of white space 51 */ 52 #define qh_WHITESPACE " \n\t\v\r\f" 53 54 55 /*-<a href="qh-io.htm#TOC" 56 >--------------------------------</a><a name="RIDGE">-</a> 57 58 qh_RIDGE 59 to select which ridges to print in qh_eachvoronoi 60 */ 61 typedef enum 62 { 63 qh_RIDGEall = 0, qh_RIDGEinner, qh_RIDGEouter 64 } 65 qh_RIDGE; 66 67 /*-<a href="qh-io.htm#TOC" 68 >--------------------------------</a><a name="printvridgeT">-</a> 69 70 printvridgeT 71 prints results of qh_printvdiagram 72 73 see: 74 <a href="io.c#printvridge">qh_printvridge</a> for an example 75 */ 76 typedef void (*printvridgeT)(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded); 77 78 /*============== -prototypes in alphabetical order =========*/ 79 80 void dfacet(unsigned id); 81 void dvertex(unsigned id); 82 int qh_compare_facetarea(const void *p1, const void *p2); 83 int qh_compare_facetmerge(const void *p1, const void *p2); 84 int qh_compare_facetvisit(const void *p1, const void *p2); 85 int qh_compare_vertexpoint(const void *p1, const void *p2); /* not used */ 86 void qh_copyfilename(char *filename, int size, const char* source, int length); 87 void qh_countfacets(facetT *facetlist, setT *facets, boolT printall, 88 int *numfacetsp, int *numsimplicialp, int *totneighborsp, 89 int *numridgesp, int *numcoplanarsp, int *numnumtricoplanarsp); 90 pointT *qh_detvnorm(vertexT *vertex, vertexT *vertexA, setT *centers, realT *offsetp); 91 setT *qh_detvridge(vertexT *vertex); 92 setT *qh_detvridge3 (vertexT *atvertex, vertexT *vertex); 93 int qh_eachvoronoi(FILE *fp, printvridgeT printvridge, vertexT *atvertex, boolT visitall, qh_RIDGE innerouter, boolT inorder); 94 int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isUpper, qh_RIDGE innerouter, boolT inorder); 95 void qh_facet2point(facetT *facet, pointT **point0, pointT **point1, realT *mindist); 96 setT *qh_facetvertices(facetT *facetlist, setT *facets, boolT allfacets); 97 void qh_geomplanes(facetT *facet, realT *outerplane, realT *innerplane); 98 void qh_markkeep(facetT *facetlist); 99 setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isLowerp, int *numcentersp); 100 void qh_order_vertexneighbors(vertexT *vertex); 101 void qh_prepare_output(void); 102 void qh_printafacet(FILE *fp, qh_PRINT format, facetT *facet, boolT printall); 103 void qh_printbegin(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); 104 void qh_printcenter(FILE *fp, qh_PRINT format, const char *string, facetT *facet); 105 void qh_printcentrum(FILE *fp, facetT *facet, realT radius); 106 void qh_printend(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); 107 void qh_printend4geom(FILE *fp, facetT *facet, int *num, boolT printall); 108 void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, boolT printall); 109 void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, boolT printall); 110 void qh_printextremes_d(FILE *fp, facetT *facetlist, setT *facets, boolT printall); 111 void qh_printfacet(FILE *fp, facetT *facet); 112 void qh_printfacet2math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst); 113 void qh_printfacet2geom(FILE *fp, facetT *facet, realT color[3]); 114 void qh_printfacet2geom_points(FILE *fp, pointT *point1, pointT *point2, 115 facetT *facet, realT offset, realT color[3]); 116 void qh_printfacet3math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst); 117 void qh_printfacet3geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]); 118 void qh_printfacet3geom_points(FILE *fp, setT *points, facetT *facet, realT offset, realT color[3]); 119 void qh_printfacet3geom_simplicial(FILE *fp, facetT *facet, realT color[3]); 120 void qh_printfacet3vertex(FILE *fp, facetT *facet, qh_PRINT format); 121 void qh_printfacet4geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]); 122 void qh_printfacet4geom_simplicial(FILE *fp, facetT *facet, realT color[3]); 123 void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, qh_PRINT format); 124 void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, qh_PRINT format); 125 void qh_printfacetheader(FILE *fp, facetT *facet); 126 void qh_printfacetridges(FILE *fp, facetT *facet); 127 void qh_printfacets(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); 128 void qh_printhyperplaneintersection(FILE *fp, facetT *facet1, facetT *facet2, 129 setT *vertices, realT color[3]); 130 void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall); 131 void qh_printline3geom(FILE *fp, pointT *pointA, pointT *pointB, realT color[3]); 132 void qh_printpoint(FILE *fp, const char *string, pointT *point); 133 void qh_printpointid(FILE *fp, const char *string, int dim, pointT *point, int id); 134 void qh_printpoint3 (FILE *fp, pointT *point); 135 void qh_printpoints_out(FILE *fp, facetT *facetlist, setT *facets, boolT printall); 136 void qh_printpointvect(FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius, realT color[3]); 137 void qh_printpointvect2 (FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius); 138 void qh_printridge(FILE *fp, ridgeT *ridge); 139 void qh_printspheres(FILE *fp, setT *vertices, realT radius); 140 void qh_printvdiagram(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); 141 int qh_printvdiagram2 (FILE *fp, printvridgeT printvridge, setT *vertices, qh_RIDGE innerouter, boolT inorder); 142 void qh_printvertex(FILE *fp, vertexT *vertex); 143 void qh_printvertexlist(FILE *fp, const char* string, facetT *facetlist, 144 setT *facets, boolT printall); 145 void qh_printvertices(FILE *fp, const char* string, setT *vertices); 146 void qh_printvneighbors(FILE *fp, facetT* facetlist, setT *facets, boolT printall); 147 void qh_printvoronoi(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); 148 void qh_printvnorm(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded); 149 void qh_printvridge(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded); 150 void qh_produce_output(void); 151 void qh_produce_output2(void); 152 void qh_projectdim3 (pointT *source, pointT *destination); 153 int qh_readfeasible(int dim, const char *curline); 154 coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc); 155 void qh_setfeasible(int dim); 156 boolT qh_skipfacet(facetT *facet); 157 char *qh_skipfilename(char *filename); 158 159 #endif /* qhDEFio */ 160