io.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /* io.h -- declarations of Input/Output functions
  2. see README, qhull.h and io.c
  3. copyright (c) 1993, 1997, The Geometry Center
  4. */
  5. #ifndef qhDEFio
  6. #define qhDEFio 1
  7. /* ----------------------------------------------
  8. -constants and flags
  9. */
  10. #define qh_MAXfirst 200 /* maximum length of first two lines of stdin */
  11. #define qh_MINradius 0.02 /* min radius for Gp and Gv, fraction of maxcoord */
  12. #define qh_GEOMepsilon 2e-3 /* adjust outer planes for 'lines closer' and
  13. geomview roundoff. This prevents bleed through */
  14. #define qh_WHITESPACE " \n\t\v\r\f"
  15. /* ======= -functions ===========
  16. see io.c for definitions
  17. User level functions
  18. -printhelp_degenerate print help message for degenerate data
  19. -printhelp_singular print help message for singular data
  20. -produce_output prints out the result of qhull in desired format
  21. -readpoints read input points
  22. -readfeasible read feasible point from remainder and qh fin
  23. -setfeasible set feasible point from qh feasible_string
  24. Print functions for all output formats
  25. -countfacets count good facets for printing and set visitid
  26. -printafacet print facet in an output format
  27. -printbegin print header for an output format
  28. -printend print trailer for an output format
  29. -printfacets print facetlist and/or facet set in an output format
  30. -printneighborhood print neighborhood of one or two facets
  31. -skipfacet True if not printing this facet
  32. -facet2point return two temporary projected points for a 2-d facet
  33. -facetvertices returns temporary set of vertices in a set of facets
  34. -markkeep mark facets for qh KEEParea, KEEPmerge and KEEPminArea
  35. Text output functions
  36. -printfacetlist print facets in a facetlist (see user.c)
  37. -printfacet print all fields of a facet
  38. -printfacetheader prints header fields of a facet to fp
  39. -printfacetridges prints ridges of a facet to fp
  40. -printpoint print coordinates of a point
  41. -printpoints_out prints vertices for facets by their point coordinates
  42. -printridge print all fields for a ridge
  43. -printvertex print all fields for a vertex
  44. -printvertexlist print vertices used by a list or set of facets
  45. -printvertices print a set of vertices
  46. -printvneighbors print vertex neighbors of vertices in facetlist and facets
  47. -dfacet print facet by id
  48. -dvertex print vertex by id
  49. Mathematica output functions
  50. -printfacet2math print 2-d Mathematica facet
  51. -printfacet3math print 3-d Mathematica facet
  52. Geomview output functions
  53. -printfacet2geom print facet as a 2-d VECT object
  54. -printfacet2geom_points print points as a 2-d VECT object with offset
  55. -printfacet3geom_nonsimplicial print nonsimplicial facet as a 3-d geom object
  56. -printfacet3geom_points print a set of points as a 3-d OFF object
  57. -printfacet3geom_simplicial print simplicial facet as a 3-d OFF object
  58. -printfacet4geom_nonsimplicial print nonsimplicial facet as a 4-d 4OFF object
  59. -printfacet4geom_simplicial print simplicial facet as a 4-d 4OFF object
  60. -printhyperplaneintersection print hyperplane intersection as OFF or 4OFF
  61. -printline3geom prints a line as a VECT
  62. -printpoint3 prints 2-d, 3-d, or 4-d point as 3-d coordinates
  63. -printpointvect prints a 2-d or 3-d point as 3-d VECT's
  64. -printpointvect2 prints a 2-d or 3-d point as 2 3-d VECT's
  65. -printspheres3 print 3-d vertices as spheres (OFF)
  66. -projectdim3 project 2-d 3-d or 4-d point to a 3-d point
  67. Vertex incidence output functions
  68. -order_vertexneighbors order neighbors for a 3-d vertex by adjacency
  69. -printfacet3vertex print vertices for a 3-d facet
  70. -printfacetNvertex_nonsimplicial print vertices for an n-d non-simplicial facet
  71. -printfacetNvertex_simplicial print vertices for an n-d simplicial facet
  72. -printvoronoi prints facet centers and for each vertex, print ids
  73. */
  74. /*---------- -prototypes in alphabetical order -----------*/
  75. void qh_countfacets (facetT *facetlist, setT *facets, boolT printall,
  76. int *numfacetsp, int *numsimplicialp, int *totneighborsp,
  77. int *numridgesp, int *numcoplanarsp);
  78. void dfacet( unsigned id);
  79. void dvertex( unsigned id);
  80. void qh_facet2point(facetT *facet, pointT **point0, pointT **point1, realT *mindist);
  81. setT *qh_facetvertices (facetT *facetlist, setT *facets, boolT allfacets);
  82. void qh_markkeep (facetT *facetlist);
  83. void qh_order_vertexneighbors(vertexT *vertex);
  84. void qh_printafacet(FILE *fp, int format, facetT *facet, boolT printall);
  85. void qh_printbegin (FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall);
  86. void qh_printcenter (FILE *fp, int format, char *string, facetT *facet);
  87. void qh_printcentrum (FILE *fp, facetT *facet, realT radius);
  88. void qh_printend (FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall);
  89. void qh_printend4geom (FILE *fp, facetT *facet, int *num, boolT printall);
  90. void qh_printfacet(FILE *fp, facetT *facet);
  91. void qh_printfacet2math(FILE *fp, facetT *facet, int notfirst);
  92. void qh_printfacet2geom(FILE *fp, facetT *facet, realT color[3]);
  93. void qh_printfacet2geom_points(FILE *fp, pointT *point1, pointT *point2,
  94. facetT *facet, realT offset, realT color[3]);
  95. void qh_printfacet3math (FILE *fp, facetT *facet, int notfirst);
  96. void qh_printfacet3geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]);
  97. void qh_printfacet3geom_points(FILE *fp, setT *points, facetT *facet, realT offset, realT color[3]);
  98. void qh_printfacet3geom_simplicial(FILE *fp, facetT *facet, realT color[3]);
  99. void qh_printfacet3vertex(FILE *fp, facetT *facet, int format);
  100. void qh_printfacet4geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]);
  101. void qh_printfacet4geom_simplicial(FILE *fp, facetT *facet, realT color[3]);
  102. void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, int format);
  103. void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, int format);
  104. void qh_printfacetheader(FILE *fp, facetT *facet);
  105. void qh_printfacetridges(FILE *fp, facetT *facet);
  106. void qh_printfacets(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall);
  107. void qh_printhelp_degenerate(FILE *fp);
  108. void qh_printhelp_singular(FILE *fp);
  109. void qh_printhyperplaneintersection(FILE *fp, facetT *facet1, facetT *facet2,
  110. setT *vertices, realT color[3]);
  111. void qh_printneighborhood (FILE *fp, int format, facetT *facetA, facetT *facetB, boolT printall);
  112. void qh_printline3geom (FILE *fp, pointT *pointA, pointT *pointB, realT color[3]);
  113. void qh_printpoint(FILE *fp, char *string, pointT *point);
  114. void qh_printpointid(FILE *fp, char *string, int dim, pointT *point, int id);
  115. void qh_printpoint3 (FILE *fp, pointT *point);
  116. void qh_printpoints_out (FILE *fp, facetT *facetlist, setT *facets, int printall);
  117. void qh_printpointvect (FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius, realT color[3]);
  118. void qh_printpointvect2 (FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius);
  119. void qh_printridge(FILE *fp, ridgeT *ridge);
  120. void qh_printspheres(FILE *fp, setT *vertices, realT radius);
  121. void qh_printvertex(FILE *fp, vertexT *vertex);
  122. void qh_printvertexlist (FILE *fp, char* string, facetT *facetlist,
  123. setT *facets, boolT printall);
  124. void qh_printvertices (FILE *fp, char* string, setT *vertices);
  125. void qh_printvneighbors (FILE *fp, facetT* facetlist, setT *facets, boolT printall);
  126. void qh_printvoronoi (FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall);
  127. void qh_produce_output(void);
  128. void qh_projectdim3 (pointT *source, pointT *destination);
  129. int qh_readfeasible (int dim, char *remainder);
  130. coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc);
  131. void qh_setfeasible (int dim);
  132. boolT qh_skipfacet(facetT *facet);
  133. #endif /* qhDEFio */