?? qhull.h
字號:
qh static variables
defines static variables for individual functions
notes:
do not use 'static' within a function. Multiple instances of qhull
may exist.
do not assume zero initialization, 'QPn' may cause a restart
*/
boolT ERREXITcalled; /* true during errexit (prevents duplicate calls */
boolT firstcentrum; /* for qh_printcentrum */
realT last_low; /* qh_scalelast parameters for qh_setdelaunay */
realT last_high;
realT last_newhigh;
unsigned lastreport; /* for qh_buildtracing */
int mergereport; /* for qh_tracemerging */
boolT old_randomdist; /* save RANDOMdist when io, tracing, or statistics */
int ridgeoutnum; /* number of ridges in 4OFF output */
void *old_qhstat; /* for saving qh_qhstat in save_qhull() */
setT *old_tempstack; /* for saving qhmem.tempstack in save_qhull */
setT *searchset; /* set of facets for searching in qh_findbest() */
};
/*=========== -macros- =========================*/
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="otherfacet_">-</a>
otherfacet_(ridge, facet)
return neighboring facet for a ridge in facet
*/
#define otherfacet_(ridge, facet) \
(((ridge)->top == (facet)) ? (ridge)->bottom : (ridge)->top)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="getid_">-</a>
getid_(p)
return id for facet, ridge, or vertex
return MAXINT if NULL (-1 causes type conversion error )
*/
#define getid_(p) ((p) ? (p)->id : -1)
/*============== FORALL macros ===================*/
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FORALLfacets">-</a>
FORALLfacets { ... }
assign 'facet' to each facet in qh.facet_list
notes:
uses 'facetT *facet;'
assumes last facet is a sentinel
see:
FORALLfacet_( facetlist )
*/
#define FORALLfacets for (facet=qh facet_list;facet && facet->next;facet=facet->next)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FORALLpoints">-</a>
FORALLpoints { ... }
assign 'point' to each point in qh.first_point, qh.num_points
declare:
coordT *point, *pointtemp;
*/
#define FORALLpoints FORALLpoint_(qh first_point, qh num_points)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FORALLpoint_">-</a>
FORALLpoint_( points, num) { ... }
assign 'point' to each point in points array of num points
declare:
coordT *point, *pointtemp;
*/
#define FORALLpoint_(points, num) for(point= (points), \
pointtemp= (points)+qh hull_dim*(num); point < pointtemp; point += qh hull_dim)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FORALLvertices">-</a>
FORALLvertices { ... }
assign 'vertex' to each vertex in qh.vertex_list
declare:
vertexT *vertex;
notes:
assumes qh.vertex_list terminated with a sentinel
*/
#define FORALLvertices for (vertex=qh vertex_list;vertex && vertex->next;vertex= vertex->next)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHfacet_">-</a>
FOREACHfacet_( facets ) { ... }
assign 'facet' to each facet in facets
declare:
facetT *facet, **facetp;
see:
<a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
*/
#define FOREACHfacet_(facets) FOREACHsetelement_(facetT, facets, facet)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHneighbor_">-</a>
FOREACHneighbor_( facet ) { ... }
assign 'neighbor' to each neighbor in facet->neighbors
FOREACHneighbor_( vertex ) { ... }
assign 'neighbor' to each neighbor in vertex->neighbors
declare:
facetT *neighbor, **neighborp;
see:
<a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
*/
#define FOREACHneighbor_(facet) FOREACHsetelement_(facetT, facet->neighbors, neighbor)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHpoint_">-</a>
FOREACHpoint_( points ) { ... }
assign 'point' to each point in points set
declare:
pointT *point, **pointp;
see:
<a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
*/
#define FOREACHpoint_(points) FOREACHsetelement_(pointT, points, point)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHridge_">-</a>
FOREACHridge_( ridges ) { ... }
assign 'ridge' to each ridge in ridges set
declare:
ridgeT *ridge, **ridgep;
see:
<a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
*/
#define FOREACHridge_(ridges) FOREACHsetelement_(ridgeT, ridges, ridge)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHvertex_">-</a>
FOREACHvertex_( vertices ) { ... }
assign 'vertex' to each vertex in vertices set
declare:
vertexT *vertex, **vertexp;
see:
<a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
*/
#define FOREACHvertex_(vertices) FOREACHsetelement_(vertexT, vertices,vertex)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHfacet_i_">-</a>
FOREACHfacet_i_( facets ) { ... }
assign 'facet' and 'facet_i' for each facet in facets set
declare:
facetT *facet;
int facet_n, facet_i;
see:
<a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
*/
#define FOREACHfacet_i_(facets) FOREACHsetelement_i_(facetT, facets, facet)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHneighbor_i_">-</a>
FOREACHneighbor_i_( facet ) { ... }
assign 'neighbor' and 'neighbor_i' for each neighbor in facet->neighbors
FOREACHneighbor_i_( vertex ) { ... }
assign 'neighbor' and 'neighbor_i' for each neighbor in vertex->neighbors
declare:
facetT *neighbor;
int neighbor_n, neighbor_i;
see:
<a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
*/
#define FOREACHneighbor_i_(facet) FOREACHsetelement_i_(facetT, facet->neighbors, neighbor)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHpoint_i_">-</a>
FOREACHpoint_i_( points ) { ... }
assign 'point' and 'point_i' for each point in points set
declare:
pointT *point;
int point_n, point_i;
see:
<a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
*/
#define FOREACHpoint_i_(points) FOREACHsetelement_i_(pointT, points, point)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHridge_i_">-</a>
FOREACHridge_i_( ridges ) { ... }
assign 'ridge' and 'ridge_i' for each ridge in ridges set
declare:
ridgeT *ridge;
int ridge_n, ridge_i;
see:
<a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
*/
#define FOREACHridge_i_(ridges) FOREACHsetelement_i_(ridgeT, ridges, ridge)
/*-<a href="qh-c.htm#poly"
>--------------------------------</a><a name="FOREACHvertex_i_">-</a>
FOREACHvertex_i_( vertices ) { ... }
assign 'vertex' and 'vertex_i' for each vertex in vertices set
declare:
vertexT *vertex;
int vertex_n, vertex_i;
see:
<a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
*/
#define FOREACHvertex_i_(vertices) FOREACHsetelement_i_(vertexT, vertices,vertex)
/********* -qhull.c prototypes (duplicated from qhull_a.h) **********************/
void qh_qhull (void);
boolT qh_addpoint (pointT *furthest, facetT *facet, boolT checkdist);
void qh_printsummary(FILE *fp);
/********* -user.c prototypes (alphabetical) **********************/
void qh_errexit(int exitcode, facetT *facet, ridgeT *ridge);
void qh_errprint(char* string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex);
int qh_new_qhull (int dim, int numpoints, coordT *points, boolT ismalloc,
char *qhull_cmd, FILE *outfile, FILE *errfile);
void qh_printfacetlist(facetT *facetlist, setT *facets, boolT printall);
void qh_user_memsizes (void);
/***** -geom.c/geom2.c prototypes (duplicated from geom.h) ****************/
facetT *qh_findbest (pointT *point, facetT *startfacet,
boolT bestoutside, boolT newfacets, boolT noupper,
realT *dist, boolT *isoutside, int *numpart);
facetT *qh_findbestnew (pointT *point, facetT *startfacet,
realT *dist, boolT *isoutside, int *numpart);
boolT qh_gram_schmidt(int dim, realT **rows);
void qh_outerinner (facetT *facet, realT *outerplane, realT *innerplane);
void qh_printsummary(FILE *fp);
void qh_projectinput (void);
void qh_randommatrix (realT *buffer, int dim, realT **row);
void qh_rotateinput (realT **rows);
void qh_scaleinput (void);
void qh_setdelaunay (int dim, int count, pointT *points);
coordT *qh_sethalfspace_all (int dim, int count, coordT *halfspaces, pointT *feasible);
/***** -global.c prototypes (alphabetical) ***********************/
unsigned long qh_clock (void);
void qh_freebuffers (void);
void qh_freeqhull (boolT allmem);
void qh_init_A (FILE *infile, FILE *outfile, FILE *errfile, int argc, char *argv[]);
void qh_init_B (coordT *points, int numpoints, int dim, boolT ismalloc);
void qh_init_qhull_command (int argc, char *argv[]);
void qh_initbuffers (coordT *points, int numpoints, int dim, boolT ismalloc);
void qh_initflags (char *command);
void qh_initqhull_buffers (void);
void qh_initqhull_globals (coordT *points, int numpoints, int dim, boolT ismalloc);
void qh_initqhull_mem (void);
void qh_initqhull_start (FILE *infile, FILE *outfile, FILE *errfile);
void qh_initthresholds (char *command);
#if qh_QHpointer
void qh_restore_qhull (qhT **oldqh);
qhT *qh_save_qhull (void);
#endif
/***** -io.c prototypes (duplicated from io.h) ***********************/
void dfacet( unsigned id);
void dvertex( unsigned id);
void qh_printneighborhood (FILE *fp, int format, facetT *facetA, facetT *facetB, boolT printall);
void qh_produce_output(void);
coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc);
/********* -mem.c prototypes (duplicated from mem.h) **********************/
void qh_meminit (FILE *ferr);
void qh_memfreeshort (int *curlong, int *totlong);
/********* -poly.c/poly2.c prototypes (duplicated from poly.h) **********************/
void qh_check_output (void);
void qh_check_points (void);
setT *qh_facetvertices (facetT *facetlist, setT *facets, boolT allfacets);
facetT *qh_findbestfacet (pointT *point, boolT bestoutside,
realT *bestdist, boolT *isoutside);
vertexT *qh_nearvertex (facetT *facet, pointT *point, realT *bestdistp);
pointT *qh_point (int id);
setT *qh_pointfacet (void /*qh.facet_list*/);
int qh_pointid (pointT *point);
setT *qh_pointvertex (void /*qh.facet_list*/);
void qh_setvoronoi_all (void);
/********* -stat.c prototypes (duplicated from stat.h) **********************/
void qh_collectstatistics (void);
void qh_printallstatistics (FILE *fp, char *string);
#endif /* qhDEFqhull */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -