libqhull.h
Go to the documentation of this file.
1 /*<html><pre> -<a href="qh-qhull.htm"
2  >-------------------------------</a><a name="TOP">-</a>
3 
4  libqhull.h
5  user-level header file for using qhull.a library
6 
7  see qh-qhull.htm, qhull_a.h
8 
9  Copyright (c) 1993-2015 The Geometry Center.
10  $Id: //main/2015/qhull/src/libqhull/libqhull.h#7 $$Change: 2066 $
11  $DateTime: 2016/01/18 19:29:17 $$Author: bbarber $
12 
13  NOTE: access to qh_qh is via the 'qh' macro. This allows
14  qh_qh to be either a pointer or a structure. An example
15  of using qh is "qh.DROPdim" which accesses the DROPdim
16  field of qh_qh. Similarly, access to qh_qhstat is via
17  the 'qhstat' macro.
18 
19  includes function prototypes for libqhull.c, geom.c, global.c, io.c, user.c
20 
21  use mem.h for mem.c
22  use qset.h for qset.c
23 
24  see unix.c for an example of using libqhull.h
25 
26  recompile qhull if you change this file
27 */
28 
29 #ifndef qhDEFlibqhull
30 #define qhDEFlibqhull 1
31 
32 /*=========================== -included files ==============*/
33 
34 /* user_r.h first for QHULL_CRTDBG */
35 #include "user.h" /* user definable constants (e.g., qh_QHpointer) */
36 
37 #include "mem.h" /* Needed qhT in libqhull_r.h. Here for compatibility */
38 #include "qset.h" /* Needed for QHULL_LIB_CHECK */
39 /* include stat_r.h after defining boolT. Needed for qhT in libqhull_r.h. Here for compatibility and statT */
40 
41 #include <setjmp.h>
42 #include <float.h>
43 #include <time.h>
44 #include <stdio.h>
45 
46 #if __MWERKS__ && __POWERPC__
47 #include <SIOUX.h>
48 #include <Files.h>
49 #include <Desk.h>
50 #endif
51 
52 #ifndef __STDC__
53 #ifndef __cplusplus
54 #if !_MSC_VER
55 #error Neither __STDC__ nor __cplusplus is defined. Please use strict ANSI C or C++ to compile
56 #error Qhull. You may need to turn off compiler extensions in your project configuration. If
57 #error your compiler is a standard C compiler, you can delete this warning from libqhull.h
58 #endif
59 #endif
60 #endif
61 
62 /*============ constants and basic types ====================*/
63 
64 extern const char qh_version[]; /* defined in global.c */
65 extern const char qh_version2[]; /* defined in global.c */
66 
67 /*-<a href="qh-geom.htm#TOC"
68  >--------------------------------</a><a name="coordT">-</a>
69 
70  coordT
71  coordinates and coefficients are stored as realT (i.e., double)
72 
73  notes:
74  Qhull works well if realT is 'float'. If so joggle (QJ) is not effective.
75 
76  Could use 'float' for data and 'double' for calculations (realT vs. coordT)
77  This requires many type casts, and adjusted error bounds.
78  Also C compilers may do expressions in double anyway.
79 */
80 #define coordT realT
81 
82 /*-<a href="qh-geom.htm#TOC"
83  >--------------------------------</a><a name="pointT">-</a>
84 
85  pointT
86  a point is an array of coordinates, usually qh.hull_dim
87  qh_pointid returns
88  qh_IDnone if point==0 or qh is undefined
89  qh_IDinterior for qh.interior_point
90  qh_IDunknown if point is neither in qh.first_point... nor qh.other_points
91 
92  notes:
93  qh.STOPcone and qh.STOPpoint assume that qh_IDunknown==-1 (other negative numbers indicate points)
94  qh_IDunknown is also returned by getid_() for unknown facet, ridge, or vertex
95 */
96 #define pointT coordT
97 typedef enum
98 {
100 }
101 qh_pointT;
102 
103 /*-<a href="qh-qhull.htm#TOC"
104  >--------------------------------</a><a name="flagT">-</a>
105 
106  flagT
107  Boolean flag as a bit
108 */
109 #define flagT unsigned int
110 
111 /*-<a href="qh-qhull.htm#TOC"
112  >--------------------------------</a><a name="boolT">-</a>
113 
114  boolT
115  boolean value, either True or False
116 
117  notes:
118  needed for portability
119  Use qh_False/qh_True as synonyms
120 */
121 #define boolT unsigned int
122 #ifdef False
123 #undef False
124 #endif
125 #ifdef True
126 #undef True
127 #endif
128 #define False 0
129 #define True 1
130 #define qh_False 0
131 #define qh_True 1
132 
133 #include "stat.h" /* after define of boolT */
134 
135 /*-<a href="qh-qhull.htm#TOC"
136  >--------------------------------</a><a name="CENTERtype">-</a>
137 
138  qh_CENTER
139  to distinguish facet->center
140 */
141 typedef enum
142 {
143  qh_ASnone = 0, /* If not MERGING and not VORONOI */
144  qh_ASvoronoi, /* Set by qh_clearcenters on qh_prepare_output, or if not MERGING and VORONOI */
145  qh_AScentrum /* If MERGING (assumed during merging) */
146 }
147 qh_CENTER;
148 
149 /*-<a href="qh-qhull.htm#TOC"
150  >--------------------------------</a><a name="qh_PRINT">-</a>
151 
152  qh_PRINT
153  output formats for printing (qh.PRINTout).
154  'Fa' 'FV' 'Fc' 'FC'
155 
156 
157  notes:
158  some of these names are similar to qhT names. The similar names are only
159  used in switch statements in qh_printbegin() etc.
160 */
161 typedef enum {qh_PRINTnone= 0,
162  qh_PRINTarea, qh_PRINTaverage, /* 'Fa' 'FV' 'Fc' 'FC' */
164  qh_PRINTfacets, qh_PRINTfacets_xridge, /* 'f' 'FF' 'G' 'FI' 'Fi' 'Fn' */
166  qh_PRINTnormals, qh_PRINTouter, qh_PRINTmaple, /* 'n' 'Fo' 'i' 'm' 'Fm' 'FM', 'o' */
168  qh_PRINToptions, qh_PRINTpointintersect, /* 'FO' 'Fp' 'FP' 'p' 'FQ' 'FS' */
170  qh_PRINTsummary, qh_PRINTtriangles, /* 'Fs' 'Ft' 'Fv' 'FN' 'Fx' */
173 
174 /*-<a href="qh-qhull.htm#TOC"
175  >--------------------------------</a><a name="qh_ALL">-</a>
176 
177  qh_ALL
178  argument flag for selecting everything
179 */
180 #define qh_ALL True
181 #define qh_NOupper True /* argument for qh_findbest */
182 #define qh_IScheckmax True /* argument for qh_findbesthorizon */
183 #define qh_ISnewfacets True /* argument for qh_findbest */
184 #define qh_RESETvisible True /* argument for qh_resetlists */
185 
186 /*-<a href="qh-qhull.htm#TOC"
187  >--------------------------------</a><a name="qh_ERR">-</a>
188 
189  qh_ERR
190  Qhull exit codes, for indicating errors
191  See: MSG_ERROR and MSG_WARNING [user.h]
192 */
193 #define qh_ERRnone 0 /* no error occurred during qhull */
194 #define qh_ERRinput 1 /* input inconsistency */
195 #define qh_ERRsingular 2 /* singular input data */
196 #define qh_ERRprec 3 /* precision error */
197 #define qh_ERRmem 4 /* insufficient memory, matches mem.h */
198 #define qh_ERRqhull 5 /* internal error detected, matches mem.h */
199 
200 /*-<a href="qh-qhull.htm#TOC"
201 >--------------------------------</a><a name="qh_FILEstderr">-</a>
202 
203 qh_FILEstderr
204 Fake stderr to distinguish error output from normal output
205 For C++ interface. Must redefine qh_fprintf_qhull
206 */
207 #define qh_FILEstderr ((FILE*)1)
208 
209 /* ============ -structures- ====================
210  each of the following structures is defined by a typedef
211  all realT and coordT fields occur at the beginning of a structure
212  (otherwise space may be wasted due to alignment)
213  define all flags together and pack into 32-bit number
214  DEFsetT is likewise defined in
215  mem.h and qset.h
216 */
217 
218 typedef struct vertexT vertexT;
219 typedef struct ridgeT ridgeT;
220 typedef struct facetT facetT;
221 #ifndef DEFsetT
222 #define DEFsetT 1
223 typedef struct setT setT; /* defined in qset.h */
224 #endif
225 
226 /*-<a href="qh-poly.htm#TOC"
227  >--------------------------------</a><a name="facetT">-</a>
228 
229  facetT
230  defines a facet
231 
232  notes:
233  qhull() generates the hull as a list of facets.
234 
235  topological information:
236  f.previous,next doubly-linked list of facets
237  f.vertices set of vertices
238  f.ridges set of ridges
239  f.neighbors set of neighbors
240  f.toporient True if facet has top-orientation (else bottom)
241 
242  geometric information:
243  f.offset,normal hyperplane equation
244  f.maxoutside offset to outer plane -- all points inside
245  f.center centrum for testing convexity
246  f.simplicial True if facet is simplicial
247  f.flipped True if facet does not include qh.interior_point
248 
249  for constructing hull:
250  f.visible True if facet on list of visible facets (will be deleted)
251  f.newfacet True if facet on list of newly created facets
252  f.coplanarset set of points coplanar with this facet
253  (includes near-inside points for later testing)
254  f.outsideset set of points outside of this facet
255  f.furthestdist distance to furthest point of outside set
256  f.visitid marks visited facets during a loop
257  f.replace replacement facet for to-be-deleted, visible facets
258  f.samecycle,newcycle cycle of facets for merging into horizon facet
259 
260  see below for other flags and fields
261 */
262 struct facetT {
263 #if !qh_COMPUTEfurthest
264  coordT furthestdist;/* distance to furthest point of outsideset */
265 #endif
266 #if qh_MAXoutside
267  coordT maxoutside; /* max computed distance of point to facet
268  Before QHULLfinished this is an approximation
269  since maxdist not always set for mergefacet
270  Actual outer plane is +DISTround and
271  computed outer plane is +2*DISTround */
272 #endif
273  coordT offset; /* exact offset of hyperplane from origin */
274  coordT *normal; /* normal of hyperplane, hull_dim coefficients */
275  /* if tricoplanar, shared with a neighbor */
276  union { /* in order of testing */
277  realT area; /* area of facet, only in io.c if ->isarea */
278  facetT *replace; /* replacement facet if ->visible and NEWfacets
279  is NULL only if qh_mergedegen_redundant or interior */
280  facetT *samecycle; /* cycle of facets from the same visible/horizon intersection,
281  if ->newfacet */
282  facetT *newcycle; /* in horizon facet, current samecycle of new facets */
283  facetT *trivisible; /* visible facet for ->tricoplanar facets during qh_triangulate() */
284  facetT *triowner; /* owner facet for ->tricoplanar, !isarea facets w/ ->keepcentrum */
285  }f;
286  coordT *center; /* set according to qh.CENTERtype */
287  /* qh_ASnone: no center (not MERGING) */
288  /* qh_AScentrum: centrum for testing convexity (qh_getcentrum) */
289  /* assumed qh_AScentrum while merging */
290  /* qh_ASvoronoi: Voronoi center (qh_facetcenter) */
291  /* after constructing the hull, it may be changed (qh_clearcenter) */
292  /* if tricoplanar and !keepcentrum, shared with a neighbor */
293  facetT *previous; /* previous facet in the facet_list */
294  facetT *next; /* next facet in the facet_list */
295  setT *vertices; /* vertices for this facet, inverse sorted by ID
296  if simplicial, 1st vertex was apex/furthest */
297  setT *ridges; /* explicit ridges for nonsimplicial facets.
298  for simplicial facets, neighbors define the ridges */
299  setT *neighbors; /* neighbors of the facet. If simplicial, the kth
300  neighbor is opposite the kth vertex, and the first
301  neighbor is the horizon facet for the first vertex*/
302  setT *outsideset; /* set of points outside this facet
303  if non-empty, last point is furthest
304  if NARROWhull, includes coplanars for partitioning*/
305  setT *coplanarset; /* set of points coplanar with this facet
306  > qh.min_vertex and <= facet->max_outside
307  a point is assigned to the furthest facet
308  if non-empty, last point is furthest away */
309  unsigned visitid; /* visit_id, for visiting all neighbors,
310  all uses are independent */
311  unsigned id; /* unique identifier from qh.facet_id */
312  unsigned nummerge:9; /* number of merges */
313 #define qh_MAXnummerge 511 /* 2^9-1, 32 flags total, see "flags:" in io.c */
314  flagT tricoplanar:1; /* True if TRIangulate and simplicial and coplanar with a neighbor */
315  /* all tricoplanars share the same apex */
316  /* all tricoplanars share the same ->center, ->normal, ->offset, ->maxoutside */
317  /* ->keepcentrum is true for the owner. It has the ->coplanareset */
318  /* if ->degenerate, does not span facet (one logical ridge) */
319  /* during qh_triangulate, f.trivisible points to original facet */
320  flagT newfacet:1; /* True if facet on qh.newfacet_list (new or merged) */
321  flagT visible:1; /* True if visible facet (will be deleted) */
322  flagT toporient:1; /* True if created with top orientation
323  after merging, use ridge orientation */
324  flagT simplicial:1;/* True if simplicial facet, ->ridges may be implicit */
325  flagT seen:1; /* used to perform operations only once, like visitid */
326  flagT seen2:1; /* used to perform operations only once, like visitid */
327  flagT flipped:1; /* True if facet is flipped */
328  flagT upperdelaunay:1; /* True if facet is upper envelope of Delaunay triangulation */
329  flagT notfurthest:1; /* True if last point of outsideset is not furthest*/
330 
331 /*-------- flags primarily for output ---------*/
332  flagT good:1; /* True if a facet marked good for output */
333  flagT isarea:1; /* True if facet->f.area is defined */
334 
335 /*-------- flags for merging ------------------*/
336  flagT dupridge:1; /* True if duplicate ridge in facet */
337  flagT mergeridge:1; /* True if facet or neighbor contains a qh_MERGEridge
338  ->normal defined (also defined for mergeridge2) */
339  flagT mergeridge2:1; /* True if neighbor contains a qh_MERGEridge (mark_dupridges */
340  flagT coplanar:1; /* True if horizon facet is coplanar at last use */
341  flagT mergehorizon:1; /* True if will merge into horizon (->coplanar) */
342  flagT cycledone:1;/* True if mergecycle_all already done */
343  flagT tested:1; /* True if facet convexity has been tested (false after merge */
344  flagT keepcentrum:1; /* True if keep old centrum after a merge, or marks owner for ->tricoplanar */
345  flagT newmerge:1; /* True if facet is newly merged for reducevertices */
346  flagT degenerate:1; /* True if facet is degenerate (degen_mergeset or ->tricoplanar) */
347  flagT redundant:1; /* True if facet is redundant (degen_mergeset) */
348 };
349 
350 
351 /*-<a href="qh-poly.htm#TOC"
352  >--------------------------------</a><a name="ridgeT">-</a>
353 
354  ridgeT
355  defines a ridge
356 
357  notes:
358  a ridge is hull_dim-1 simplex between two neighboring facets. If the
359  facets are non-simplicial, there may be more than one ridge between
360  two facets. E.G. a 4-d hypercube has two triangles between each pair
361  of neighboring facets.
362 
363  topological information:
364  vertices a set of vertices
365  top,bottom neighboring facets with orientation
366 
367  geometric information:
368  tested True if ridge is clearly convex
369  nonconvex True if ridge is non-convex
370 */
371 struct ridgeT {
372  setT *vertices; /* vertices belonging to this ridge, inverse sorted by ID
373  NULL if a degen ridge (matchsame) */
374  facetT *top; /* top facet this ridge is part of */
375  facetT *bottom; /* bottom facet this ridge is part of */
376  unsigned id; /* unique identifier. Same size as vertex_id and ridge_id */
377  flagT seen:1; /* used to perform operations only once */
378  flagT tested:1; /* True when ridge is tested for convexity */
379  flagT nonconvex:1; /* True if getmergeset detected a non-convex neighbor
380  only one ridge between neighbors may have nonconvex */
381 };
382 
383 /*-<a href="qh-poly.htm#TOC"
384  >--------------------------------</a><a name="vertexT">-</a>
385 
386  vertexT
387  defines a vertex
388 
389  topological information:
390  next,previous doubly-linked list of all vertices
391  neighbors set of adjacent facets (only if qh.VERTEXneighbors)
392 
393  geometric information:
394  point array of DIM3 coordinates
395 */
396 struct vertexT {
397  vertexT *next; /* next vertex in vertex_list */
398  vertexT *previous; /* previous vertex in vertex_list */
399  pointT *point; /* hull_dim coordinates (coordT) */
400  setT *neighbors; /* neighboring facets of vertex, qh_vertexneighbors()
401  inits in io.c or after first merge */
402  unsigned id; /* unique identifier. Same size as qh.vertex_id and qh.ridge_id */
403  unsigned visitid; /* for use with qh.vertex_visit, size must match */
404  flagT seen:1; /* used to perform operations only once */
405  flagT seen2:1; /* another seen flag */
406  flagT delridge:1; /* vertex was part of a deleted ridge */
407  flagT deleted:1; /* true if vertex on qh.del_vertices */
408  flagT newlist:1; /* true if vertex on qh.newvertex_list */
409 };
410 
411 /*======= -global variables -qh ============================*/
412 
413 /*-<a href="qh-globa.htm#TOC"
414  >--------------------------------</a><a name="qh">-</a>
415 
416  qh
417  all global variables for qhull are in qh, qhmem, and qhstat
418 
419  notes:
420  qhmem is defined in mem.h, qhstat is defined in stat.h, qhrbox is defined in rboxpoints.h
421  Access to qh_qh is via the "qh" macro. See qh_QHpointer in user.h
422 
423  All global variables for qhull are in qh, qhmem, and qhstat
424  qh must be unique for each instance of qhull
425  qhstat may be shared between qhull instances.
426  qhmem may be shared across multiple instances of Qhull.
427  Rbox uses global variables rbox_inuse and rbox, but does not persist data across calls.
428 
429  Qhull is not multi-threaded. Global state could be stored in thread-local storage.
430 
431  QHULL_LIB_CHECK checks that a program and the corresponding
432  qhull library were built with the same type of header files.
433 */
434 
435 typedef struct qhT qhT;
436 
437 #define QHULL_NON_REENTRANT 0
438 #define QHULL_QH_POINTER 1
439 #define QHULL_REENTRANT 2
440 
441 #if qh_QHpointer_dllimport
442 #define qh qh_qh->
443 __declspec(dllimport) extern qhT *qh_qh; /* allocated in global.c */
444 #define QHULL_LIB_TYPE QHULL_QH_POINTER
445 
446 #elif qh_QHpointer
447 #define qh qh_qh->
448 extern qhT *qh_qh; /* allocated in global.c */
449 #define QHULL_LIB_TYPE QHULL_QH_POINTER
450 
451 #elif qh_dllimport
452 #define qh qh_qh.
453 __declspec(dllimport) extern qhT qh_qh; /* allocated in global.c */
454 #define QHULL_LIB_TYPE QHULL_NON_REENTRANT
455 
456 #else
457 #define qh qh_qh.
458 extern qhT qh_qh;
459 #define QHULL_LIB_TYPE QHULL_NON_REENTRANT
460 #endif
461 
462 #define QHULL_LIB_CHECK qh_lib_check(QHULL_LIB_TYPE, sizeof(qhT), sizeof(vertexT), sizeof(ridgeT), sizeof(facetT), sizeof(setT), sizeof(qhmemT));
463 #define QHULL_LIB_CHECK_RBOX qh_lib_check(QHULL_LIB_TYPE, sizeof(qhT), sizeof(vertexT), sizeof(ridgeT), sizeof(facetT), 0, 0);
464 
465 struct qhT {
466 
467 /*-<a href="qh-globa.htm#TOC"
468  >--------------------------------</a><a name="qh-const">-</a>
469 
470  qh constants
471  configuration flags and constants for Qhull
472 
473  notes:
474  The user configures Qhull by defining flags. They are
475  copied into qh by qh_setflags(). qh-quick.htm#options defines the flags.
476 */
477  boolT ALLpoints; /* true 'Qs' if search all points for initial simplex */
478  boolT ANGLEmerge; /* true 'Qa' if sort potential merges by angle */
479  boolT APPROXhull; /* true 'Wn' if MINoutside set */
480  realT MINoutside; /* 'Wn' min. distance for an outside point */
481  boolT ANNOTATEoutput; /* true 'Ta' if annotate output with message codes */
482  boolT ATinfinity; /* true 'Qz' if point num_points-1 is "at-infinity"
483  for improving precision in Delaunay triangulations */
484  boolT AVOIDold; /* true 'Q4' if avoid old->new merges */
485  boolT BESToutside; /* true 'Qf' if partition points into best outsideset */
486  boolT CDDinput; /* true 'Pc' if input uses CDD format (1.0/offset first) */
487  boolT CDDoutput; /* true 'PC' if print normals in CDD format (offset first) */
488  boolT CHECKfrequently; /* true 'Tc' if checking frequently */
489  realT premerge_cos; /* 'A-n' cos_max when pre merging */
490  realT postmerge_cos; /* 'An' cos_max when post merging */
491  boolT DELAUNAY; /* true 'd' if computing DELAUNAY triangulation */
492  boolT DOintersections; /* true 'Gh' if print hyperplane intersections */
493  int DROPdim; /* drops dim 'GDn' for 4-d -> 3-d output */
494  boolT FORCEoutput; /* true 'Po' if forcing output despite degeneracies */
495  int GOODpoint; /* 1+n for 'QGn', good facet if visible/not(-) from point n*/
496  pointT *GOODpointp; /* the actual point */
497  boolT GOODthreshold; /* true if qh.lower_threshold/upper_threshold defined
498  false if qh.SPLITthreshold */
499  int GOODvertex; /* 1+n, good facet if vertex for point n */
500  pointT *GOODvertexp; /* the actual point */
501  boolT HALFspace; /* true 'Hn,n,n' if halfspace intersection */
502  boolT ISqhullQh; /* Set by Qhull.cpp on initialization */
503  int IStracing; /* trace execution, 0=none, 1=least, 4=most, -1=events */
504  int KEEParea; /* 'PAn' number of largest facets to keep */
505  boolT KEEPcoplanar; /* true 'Qc' if keeping nearest facet for coplanar points */
506  boolT KEEPinside; /* true 'Qi' if keeping nearest facet for inside points
507  set automatically if 'd Qc' */
508  int KEEPmerge; /* 'PMn' number of facets to keep with most merges */
509  realT KEEPminArea; /* 'PFn' minimum facet area to keep */
510  realT MAXcoplanar; /* 'Un' max distance below a facet to be coplanar*/
511  boolT MERGEexact; /* true 'Qx' if exact merges (coplanar, degen, dupridge, flipped) */
512  boolT MERGEindependent; /* true 'Q2' if merging independent sets */
513  boolT MERGING; /* true if exact-, pre- or post-merging, with angle and centrum tests */
514  realT premerge_centrum; /* 'C-n' centrum_radius when pre merging. Default is round-off */
515  realT postmerge_centrum; /* 'Cn' centrum_radius when post merging. Default is round-off */
516  boolT MERGEvertices; /* true 'Q3' if merging redundant vertices */
517  realT MINvisible; /* 'Vn' min. distance for a facet to be visible */
518  boolT NOnarrow; /* true 'Q10' if no special processing for narrow distributions */
519  boolT NOnearinside; /* true 'Q8' if ignore near-inside points when partitioning */
520  boolT NOpremerge; /* true 'Q0' if no defaults for C-0 or Qx */
521  boolT NOwide; /* true 'Q12' if no error on wide merge due to duplicate ridge */
522  boolT ONLYgood; /* true 'Qg' if process points with good visible or horizon facets */
523  boolT ONLYmax; /* true 'Qm' if only process points that increase max_outside */
524  boolT PICKfurthest; /* true 'Q9' if process furthest of furthest points*/
525  boolT POSTmerge; /* true if merging after buildhull (Cn or An) */
526  boolT PREmerge; /* true if merging during buildhull (C-n or A-n) */
527  /* NOTE: some of these names are similar to qh_PRINT names */
528  boolT PRINTcentrums; /* true 'Gc' if printing centrums */
529  boolT PRINTcoplanar; /* true 'Gp' if printing coplanar points */
530  int PRINTdim; /* print dimension for Geomview output */
531  boolT PRINTdots; /* true 'Ga' if printing all points as dots */
532  boolT PRINTgood; /* true 'Pg' if printing good facets */
533  boolT PRINTinner; /* true 'Gi' if printing inner planes */
534  boolT PRINTneighbors; /* true 'PG' if printing neighbors of good facets */
535  boolT PRINTnoplanes; /* true 'Gn' if printing no planes */
536  boolT PRINToptions1st; /* true 'FO' if printing options to stderr */
537  boolT PRINTouter; /* true 'Go' if printing outer planes */
538  boolT PRINTprecision; /* false 'Pp' if not reporting precision problems */
539  qh_PRINT PRINTout[qh_PRINTEND]; /* list of output formats to print */
540  boolT PRINTridges; /* true 'Gr' if print ridges */
541  boolT PRINTspheres; /* true 'Gv' if print vertices as spheres */
542  boolT PRINTstatistics; /* true 'Ts' if printing statistics to stderr */
543  boolT PRINTsummary; /* true 's' if printing summary to stderr */
544  boolT PRINTtransparent; /* true 'Gt' if print transparent outer ridges */
545  boolT PROJECTdelaunay; /* true if DELAUNAY, no readpoints() and
546  need projectinput() for Delaunay in qh_init_B */
547  int PROJECTinput; /* number of projected dimensions 'bn:0Bn:0' */
548  boolT QUICKhelp; /* true if quick help message for degen input */
549  boolT RANDOMdist; /* true if randomly change distplane and setfacetplane */
550  realT RANDOMfactor; /* maximum random perturbation */
551  realT RANDOMa; /* qh_randomfactor is randr * RANDOMa + RANDOMb */
553  boolT RANDOMoutside; /* true if select a random outside point */
554  int REPORTfreq; /* buildtracing reports every n facets */
555  int REPORTfreq2; /* tracemerging reports every REPORTfreq/2 facets */
556  int RERUN; /* 'TRn' rerun qhull n times (qh.build_cnt) */
557  int ROTATErandom; /* 'QRn' seed, 0 time, >= rotate input */
558  boolT SCALEinput; /* true 'Qbk' if scaling input */
559  boolT SCALElast; /* true 'Qbb' if scale last coord to max prev coord */
560  boolT SETroundoff; /* true 'E' if qh.DISTround is predefined */
561  boolT SKIPcheckmax; /* true 'Q5' if skip qh_check_maxout */
562  boolT SKIPconvex; /* true 'Q6' if skip convexity testing during pre-merge */
563  boolT SPLITthresholds; /* true if upper_/lower_threshold defines a region
564  used only for printing (!for qh.ONLYgood) */
565  int STOPcone; /* 'TCn' 1+n for stopping after cone for point n */
566  /* also used by qh_build_withresart for err exit*/
567  int STOPpoint; /* 'TVn' 'TV-n' 1+n for stopping after/before(-)
568  adding point n */
569  int TESTpoints; /* 'QTn' num of test points after qh.num_points. Test points always coplanar. */
570  boolT TESTvneighbors; /* true 'Qv' if test vertex neighbors at end */
571  int TRACElevel; /* 'Tn' conditional IStracing level */
572  int TRACElastrun; /* qh.TRACElevel applies to last qh.RERUN */
573  int TRACEpoint; /* 'TPn' start tracing when point n is a vertex */
574  realT TRACEdist; /* 'TWn' start tracing when merge distance too big */
575  int TRACEmerge; /* 'TMn' start tracing before this merge */
576  boolT TRIangulate; /* true 'Qt' if triangulate non-simplicial facets */
577  boolT TRInormals; /* true 'Q11' if triangulate duplicates ->normal and ->center (sets Qt) */
578  boolT UPPERdelaunay; /* true 'Qu' if computing furthest-site Delaunay */
579  boolT USEstdout; /* true 'Tz' if using stdout instead of stderr */
580  boolT VERIFYoutput; /* true 'Tv' if verify output at end of qhull */
581  boolT VIRTUALmemory; /* true 'Q7' if depth-first processing in buildhull */
582  boolT VORONOI; /* true 'v' if computing Voronoi diagram */
583 
584  /*--------input constants ---------*/
585  realT AREAfactor; /* 1/(hull_dim-1)! for converting det's to area */
586  boolT DOcheckmax; /* true if calling qh_check_maxout (qh_initqhull_globals) */
587  char *feasible_string; /* feasible point 'Hn,n,n' for halfspace intersection */
588  coordT *feasible_point; /* as coordinates, both malloc'd */
589  boolT GETarea; /* true 'Fa', 'FA', 'FS', 'PAn', 'PFn' if compute facet area/Voronoi volume in io.c */
590  boolT KEEPnearinside; /* true if near-inside points in coplanarset */
591  int hull_dim; /* dimension of hull, set by initbuffers */
592  int input_dim; /* dimension of input, set by initbuffers */
593  int num_points; /* number of input points */
594  pointT *first_point; /* array of input points, see POINTSmalloc */
595  boolT POINTSmalloc; /* true if qh.first_point/num_points allocated */
596  pointT *input_points; /* copy of original qh.first_point for input points for qh_joggleinput */
597  boolT input_malloc; /* true if qh.input_points malloc'd */
598  char qhull_command[256];/* command line that invoked this program */
599  int qhull_commandsiz2; /* size of qhull_command at qh_clear_outputflags */
600  char rbox_command[256]; /* command line that produced the input points */
601  char qhull_options[512];/* descriptive list of options */
602  int qhull_optionlen; /* length of last line */
603  int qhull_optionsiz; /* size of qhull_options at qh_build_withrestart */
604  int qhull_optionsiz2; /* size of qhull_options at qh_clear_outputflags */
605  int run_id; /* non-zero, random identifier for this instance of qhull */
606  boolT VERTEXneighbors; /* true if maintaining vertex neighbors */
607  boolT ZEROcentrum; /* true if 'C-0' or 'C-0 Qx'. sets ZEROall_ok */
608  realT *upper_threshold; /* don't print if facet->normal[k]>=upper_threshold[k]
609  must set either GOODthreshold or SPLITthreshold
610  if Delaunay, default is 0.0 for upper envelope */
611  realT *lower_threshold; /* don't print if facet->normal[k] <=lower_threshold[k] */
612  realT *upper_bound; /* scale point[k] to new upper bound */
613  realT *lower_bound; /* scale point[k] to new lower bound
614  project if both upper_ and lower_bound == 0 */
615 
616 /*-<a href="qh-globa.htm#TOC"
617  >--------------------------------</a><a name="qh-prec">-</a>
618 
619  qh precision constants
620  precision constants for Qhull
621 
622  notes:
623  qh_detroundoff() computes the maximum roundoff error for distance
624  and other computations. It also sets default values for the
625  qh constants above.
626 */
627  realT ANGLEround; /* max round off error for angles */
628  realT centrum_radius; /* max centrum radius for convexity (roundoff added) */
629  realT cos_max; /* max cosine for convexity (roundoff added) */
630  realT DISTround; /* max round off error for distances, 'E' overrides qh_distround() */
631  realT MAXabs_coord; /* max absolute coordinate */
632  realT MAXlastcoord; /* max last coordinate for qh_scalelast */
633  realT MAXsumcoord; /* max sum of coordinates */
634  realT MAXwidth; /* max rectilinear width of point coordinates */
635  realT MINdenom_1; /* min. abs. value for 1/x */
636  realT MINdenom; /* use divzero if denominator < MINdenom */
637  realT MINdenom_1_2; /* min. abs. val for 1/x that allows normalization */
638  realT MINdenom_2; /* use divzero if denominator < MINdenom_2 */
639  realT MINlastcoord; /* min. last coordinate for qh_scalelast */
640  boolT NARROWhull; /* set in qh_initialhull if angle < qh_MAXnarrow */
641  realT *NEARzero; /* hull_dim array for near zero in gausselim */
642  realT NEARinside; /* keep points for qh_check_maxout if close to facet */
643  realT ONEmerge; /* max distance for merging simplicial facets */
644  realT outside_err; /* application's epsilon for coplanar points
645  qh_check_bestdist() qh_check_points() reports error if point outside */
646  realT WIDEfacet; /* size of wide facet for skipping ridge in
647  area computation and locking centrum */
648 
649 /*-<a href="qh-globa.htm#TOC"
650  >--------------------------------</a><a name="qh-codetern">-</a>
651 
652  qh internal constants
653  internal constants for Qhull
654 */
655  char qhull[sizeof("qhull")]; /* "qhull" for checking ownership while debugging */
656  jmp_buf errexit; /* exit label for qh_errexit, defined by setjmp() and NOerrexit */
657  char jmpXtra[40]; /* extra bytes in case jmp_buf is defined wrong by compiler */
658  jmp_buf restartexit; /* restart label for qh_errexit, defined by setjmp() and ALLOWrestart */
659  char jmpXtra2[40]; /* extra bytes in case jmp_buf is defined wrong by compiler*/
660  FILE *fin; /* pointer to input file, init by qh_initqhull_start2 */
661  FILE *fout; /* pointer to output file */
662  FILE *ferr; /* pointer to error file */
663  pointT *interior_point; /* center point of the initial simplex*/
664  int normal_size; /* size in bytes for facet normals and point coords*/
665  int center_size; /* size in bytes for Voronoi centers */
666  int TEMPsize; /* size for small, temporary sets (in quick mem) */
667 
668 /*-<a href="qh-globa.htm#TOC"
669  >--------------------------------</a><a name="qh-lists">-</a>
670 
671  qh facet and vertex lists
672  defines lists of facets, new facets, visible facets, vertices, and
673  new vertices. Includes counts, next ids, and trace ids.
674  see:
675  qh_resetlists()
676 */
677  facetT *facet_list; /* first facet */
678  facetT *facet_tail; /* end of facet_list (dummy facet) */
679  facetT *facet_next; /* next facet for buildhull()
680  previous facets do not have outside sets
681  NARROWhull: previous facets may have coplanar outside sets for qh_outcoplanar */
682  facetT *newfacet_list; /* list of new facets to end of facet_list */
683  facetT *visible_list; /* list of visible facets preceding newfacet_list,
684  facet->visible set */
685  int num_visible; /* current number of visible facets */
686  unsigned tracefacet_id; /* set at init, then can print whenever */
687  facetT *tracefacet; /* set in newfacet/mergefacet, undone in delfacet*/
688  unsigned tracevertex_id; /* set at buildtracing, can print whenever */
689  vertexT *tracevertex; /* set in newvertex, undone in delvertex*/
690  vertexT *vertex_list; /* list of all vertices, to vertex_tail */
691  vertexT *vertex_tail; /* end of vertex_list (dummy vertex) */
692  vertexT *newvertex_list; /* list of vertices in newfacet_list, to vertex_tail
693  all vertices have 'newlist' set */
694  int num_facets; /* number of facets in facet_list
695  includes visible faces (num_visible) */
696  int num_vertices; /* number of vertices in facet_list */
697  int num_outside; /* number of points in outsidesets (for tracing and RANDOMoutside)
698  includes coplanar outsideset points for NARROWhull/qh_outcoplanar() */
699  int num_good; /* number of good facets (after findgood_all) */
700  unsigned facet_id; /* ID of next, new facet from newfacet() */
701  unsigned ridge_id; /* ID of next, new ridge from newridge() */
702  unsigned vertex_id; /* ID of next, new vertex from newvertex() */
703 
704 /*-<a href="qh-globa.htm#TOC"
705  >--------------------------------</a><a name="qh-var">-</a>
706 
707  qh global variables
708  defines minimum and maximum distances, next visit ids, several flags,
709  and other global variables.
710  initialize in qh_initbuild or qh_maxmin if used in qh_buildhull
711 */
712  unsigned long hulltime; /* ignore time to set up input and randomize */
713  /* use unsigned to avoid wrap-around errors */
714  boolT ALLOWrestart; /* true if qh_precision can use qh.restartexit */
715  int build_cnt; /* number of calls to qh_initbuild */
716  qh_CENTER CENTERtype; /* current type of facet->center, qh_CENTER */
717  int furthest_id; /* pointid of furthest point, for tracing */
718  facetT *GOODclosest; /* closest facet to GOODthreshold in qh_findgood */
719  boolT hasAreaVolume; /* true if totarea, totvol was defined by qh_getarea */
720  boolT hasTriangulation; /* true if triangulation created by qh_triangulate */
721  realT JOGGLEmax; /* set 'QJn' if randomly joggle input */
722  boolT maxoutdone; /* set qh_check_maxout(), cleared by qh_addpoint() */
723  realT max_outside; /* maximum distance from a point to a facet,
724  before roundoff, not simplicial vertices
725  actual outer plane is +DISTround and
726  computed outer plane is +2*DISTround */
727  realT max_vertex; /* maximum distance (>0) from vertex to a facet,
728  before roundoff, due to a merge */
729  realT min_vertex; /* minimum distance (<0) from vertex to a facet,
730  before roundoff, due to a merge
731  if qh.JOGGLEmax, qh_makenewplanes sets it
732  recomputed if qh.DOcheckmax, default -qh.DISTround */
733  boolT NEWfacets; /* true while visible facets invalid due to new or merge
734  from makecone/attachnewfacets to deletevisible */
735  boolT findbestnew; /* true if partitioning calls qh_findbestnew */
736  boolT findbest_notsharp; /* true if new facets are at least 90 degrees */
737  boolT NOerrexit; /* true if qh.errexit is not available, cleared after setjmp */
738  realT PRINTcradius; /* radius for printing centrums */
739  realT PRINTradius; /* radius for printing vertex spheres and points */
740  boolT POSTmerging; /* true when post merging */
741  int printoutvar; /* temporary variable for qh_printbegin, etc. */
742  int printoutnum; /* number of facets printed */
743  boolT QHULLfinished; /* True after qhull() is finished */
744  realT totarea; /* 'FA': total facet area computed by qh_getarea, hasAreaVolume */
745  realT totvol; /* 'FA': total volume computed by qh_getarea, hasAreaVolume */
746  unsigned int visit_id; /* unique ID for searching neighborhoods, */
747  unsigned int vertex_visit; /* unique ID for searching vertices, reset with qh_buildtracing */
748  boolT ZEROall_ok; /* True if qh_checkzero always succeeds */
749  boolT WAScoplanar; /* True if qh_partitioncoplanar (qh_check_maxout) */
750 
751 /*-<a href="qh-globa.htm#TOC"
752  >--------------------------------</a><a name="qh-set">-</a>
753 
754  qh global sets
755  defines sets for merging, initial simplex, hashing, extra input points,
756  and deleted vertices
757 */
758  setT *facet_mergeset; /* temporary set of merges to be done */
759  setT *degen_mergeset; /* temporary set of degenerate and redundant merges */
760  setT *hash_table; /* hash table for matching ridges in qh_matchfacets
761  size is setsize() */
762  setT *other_points; /* additional points */
763  setT *del_vertices; /* vertices to partition and delete with visible
764  facets. Have deleted set for checkfacet */
765 
766 /*-<a href="qh-globa.htm#TOC"
767  >--------------------------------</a><a name="qh-buf">-</a>
768 
769  qh global buffers
770  defines buffers for maxtrix operations, input, and error messages
771 */
772  coordT *gm_matrix; /* (dim+1)Xdim matrix for geom.c */
773  coordT **gm_row; /* array of gm_matrix rows */
774  char* line; /* malloc'd input line of maxline+1 chars */
775  int maxline;
776  coordT *half_space; /* malloc'd input array for halfspace (qh normal_size+coordT) */
777  coordT *temp_malloc; /* malloc'd input array for points */
778 
779 /*-<a href="qh-globa.htm#TOC"
780  >--------------------------------</a><a name="qh-static">-</a>
781 
782  qh static variables
783  defines static variables for individual functions
784 
785  notes:
786  do not use 'static' within a function. Multiple instances of qhull
787  may exist.
788 
789  do not assume zero initialization, 'QPn' may cause a restart
790 */
791  boolT ERREXITcalled; /* true during qh_errexit (prevents duplicate calls */
792  boolT firstcentrum; /* for qh_printcentrum */
793  boolT old_randomdist; /* save RANDOMdist flag during io, tracing, or statistics */
794  setT *coplanarfacetset; /* set of coplanar facets for searching qh_findbesthorizon() */
795  realT last_low; /* qh_scalelast parameters for qh_setdelaunay */
798  unsigned lastreport; /* for qh_buildtracing */
799  int mergereport; /* for qh_tracemerging */
800  qhstatT *old_qhstat; /* for saving qh_qhstat in save_qhull() and UsingLibQhull. Free with qh_free() */
801  setT *old_tempstack; /* for saving qhmem.tempstack in save_qhull */
802  int ridgeoutnum; /* number of ridges for 4OFF output (qh_printbegin,etc) */
803 };
804 
805 /*=========== -macros- =========================*/
806 
807 /*-<a href="qh-poly.htm#TOC"
808  >--------------------------------</a><a name="otherfacet_">-</a>
809 
810  otherfacet_(ridge, facet)
811  return neighboring facet for a ridge in facet
812 */
813 #define otherfacet_(ridge, facet) \
814  (((ridge)->top == (facet)) ? (ridge)->bottom : (ridge)->top)
815 
816 /*-<a href="qh-poly.htm#TOC"
817  >--------------------------------</a><a name="getid_">-</a>
818 
819  getid_(p)
820  return int ID for facet, ridge, or vertex
821  return qh_IDunknown(-1) if NULL
822 */
823 #define getid_(p) ((p) ? (int)((p)->id) : qh_IDunknown)
824 
825 /*============== FORALL macros ===================*/
826 
827 /*-<a href="qh-poly.htm#TOC"
828  >--------------------------------</a><a name="FORALLfacets">-</a>
829 
830  FORALLfacets { ... }
831  assign 'facet' to each facet in qh.facet_list
832 
833  notes:
834  uses 'facetT *facet;'
835  assumes last facet is a sentinel
836 
837  see:
838  FORALLfacet_( facetlist )
839 */
840 #define FORALLfacets for (facet=qh facet_list;facet && facet->next;facet=facet->next)
841 
842 /*-<a href="qh-poly.htm#TOC"
843  >--------------------------------</a><a name="FORALLpoints">-</a>
844 
845  FORALLpoints { ... }
846  assign 'point' to each point in qh.first_point, qh.num_points
847 
848  declare:
849  coordT *point, *pointtemp;
850 */
851 #define FORALLpoints FORALLpoint_(qh first_point, qh num_points)
852 
853 /*-<a href="qh-poly.htm#TOC"
854  >--------------------------------</a><a name="FORALLpoint_">-</a>
855 
856  FORALLpoint_( points, num) { ... }
857  assign 'point' to each point in points array of num points
858 
859  declare:
860  coordT *point, *pointtemp;
861 */
862 #define FORALLpoint_(points, num) for (point= (points), \
863  pointtemp= (points)+qh hull_dim*(num); point < pointtemp; point += qh hull_dim)
864 
865 /*-<a href="qh-poly.htm#TOC"
866  >--------------------------------</a><a name="FORALLvertices">-</a>
867 
868  FORALLvertices { ... }
869  assign 'vertex' to each vertex in qh.vertex_list
870 
871  declare:
872  vertexT *vertex;
873 
874  notes:
875  assumes qh.vertex_list terminated with a sentinel
876 */
877 #define FORALLvertices for (vertex=qh vertex_list;vertex && vertex->next;vertex= vertex->next)
878 
879 /*-<a href="qh-poly.htm#TOC"
880  >--------------------------------</a><a name="FOREACHfacet_">-</a>
881 
882  FOREACHfacet_( facets ) { ... }
883  assign 'facet' to each facet in facets
884 
885  declare:
886  facetT *facet, **facetp;
887 
888  see:
889  <a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
890 */
891 #define FOREACHfacet_(facets) FOREACHsetelement_(facetT, facets, facet)
892 
893 /*-<a href="qh-poly.htm#TOC"
894  >--------------------------------</a><a name="FOREACHneighbor_">-</a>
895 
896  FOREACHneighbor_( facet ) { ... }
897  assign 'neighbor' to each neighbor in facet->neighbors
898 
899  FOREACHneighbor_( vertex ) { ... }
900  assign 'neighbor' to each neighbor in vertex->neighbors
901 
902  declare:
903  facetT *neighbor, **neighborp;
904 
905  see:
906  <a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
907 */
908 #define FOREACHneighbor_(facet) FOREACHsetelement_(facetT, facet->neighbors, neighbor)
909 
910 /*-<a href="qh-poly.htm#TOC"
911  >--------------------------------</a><a name="FOREACHpoint_">-</a>
912 
913  FOREACHpoint_( points ) { ... }
914  assign 'point' to each point in points set
915 
916  declare:
917  pointT *point, **pointp;
918 
919  see:
920  <a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
921 */
922 #define FOREACHpoint_(points) FOREACHsetelement_(pointT, points, point)
923 
924 /*-<a href="qh-poly.htm#TOC"
925  >--------------------------------</a><a name="FOREACHridge_">-</a>
926 
927  FOREACHridge_( ridges ) { ... }
928  assign 'ridge' to each ridge in ridges set
929 
930  declare:
931  ridgeT *ridge, **ridgep;
932 
933  see:
934  <a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
935 */
936 #define FOREACHridge_(ridges) FOREACHsetelement_(ridgeT, ridges, ridge)
937 
938 /*-<a href="qh-poly.htm#TOC"
939  >--------------------------------</a><a name="FOREACHvertex_">-</a>
940 
941  FOREACHvertex_( vertices ) { ... }
942  assign 'vertex' to each vertex in vertices set
943 
944  declare:
945  vertexT *vertex, **vertexp;
946 
947  see:
948  <a href="qset.h#FOREACHsetelement_">FOREACHsetelement_</a>
949 */
950 #define FOREACHvertex_(vertices) FOREACHsetelement_(vertexT, vertices,vertex)
951 
952 /*-<a href="qh-poly.htm#TOC"
953  >--------------------------------</a><a name="FOREACHfacet_i_">-</a>
954 
955  FOREACHfacet_i_( facets ) { ... }
956  assign 'facet' and 'facet_i' for each facet in facets set
957 
958  declare:
959  facetT *facet;
960  int facet_n, facet_i;
961 
962  see:
963  <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
964 */
965 #define FOREACHfacet_i_(facets) FOREACHsetelement_i_(facetT, facets, facet)
966 
967 /*-<a href="qh-poly.htm#TOC"
968  >--------------------------------</a><a name="FOREACHneighbor_i_">-</a>
969 
970  FOREACHneighbor_i_( facet ) { ... }
971  assign 'neighbor' and 'neighbor_i' for each neighbor in facet->neighbors
972 
973  FOREACHneighbor_i_( vertex ) { ... }
974  assign 'neighbor' and 'neighbor_i' for each neighbor in vertex->neighbors
975 
976  declare:
977  facetT *neighbor;
978  int neighbor_n, neighbor_i;
979 
980  see:
981  <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
982 */
983 #define FOREACHneighbor_i_(facet) FOREACHsetelement_i_(facetT, facet->neighbors, neighbor)
984 
985 /*-<a href="qh-poly.htm#TOC"
986  >--------------------------------</a><a name="FOREACHpoint_i_">-</a>
987 
988  FOREACHpoint_i_( points ) { ... }
989  assign 'point' and 'point_i' for each point in points set
990 
991  declare:
992  pointT *point;
993  int point_n, point_i;
994 
995  see:
996  <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
997 */
998 #define FOREACHpoint_i_(points) FOREACHsetelement_i_(pointT, points, point)
999 
1000 /*-<a href="qh-poly.htm#TOC"
1001  >--------------------------------</a><a name="FOREACHridge_i_">-</a>
1002 
1003  FOREACHridge_i_( ridges ) { ... }
1004  assign 'ridge' and 'ridge_i' for each ridge in ridges set
1005 
1006  declare:
1007  ridgeT *ridge;
1008  int ridge_n, ridge_i;
1009 
1010  see:
1011  <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
1012 */
1013 #define FOREACHridge_i_(ridges) FOREACHsetelement_i_(ridgeT, ridges, ridge)
1014 
1015 /*-<a href="qh-poly.htm#TOC"
1016  >--------------------------------</a><a name="FOREACHvertex_i_">-</a>
1017 
1018  FOREACHvertex_i_( vertices ) { ... }
1019  assign 'vertex' and 'vertex_i' for each vertex in vertices set
1020 
1021  declare:
1022  vertexT *vertex;
1023  int vertex_n, vertex_i;
1024 
1025  see:
1026  <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a>
1027 */
1028 #define FOREACHvertex_i_(vertices) FOREACHsetelement_i_(vertexT, vertices,vertex)
1029 
1030 /********* -libqhull.c prototypes (duplicated from qhull_a.h) **********************/
1031 
1032 void qh_qhull(void);
1033 boolT qh_addpoint(pointT *furthest, facetT *facet, boolT checkdist);
1034 void qh_printsummary(FILE *fp);
1035 
1036 /********* -user.c prototypes (alphabetical) **********************/
1037 
1038 void qh_errexit(int exitcode, facetT *facet, ridgeT *ridge);
1039 void qh_errprint(const char* string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex);
1040 int qh_new_qhull(int dim, int numpoints, coordT *points, boolT ismalloc,
1041  char *qhull_cmd, FILE *outfile, FILE *errfile);
1042 void qh_printfacetlist(facetT *facetlist, setT *facets, boolT printall);
1043 void qh_printhelp_degenerate(FILE *fp);
1044 void qh_printhelp_narrowhull(FILE *fp, realT minangle);
1045 void qh_printhelp_singular(FILE *fp);
1046 void qh_user_memsizes(void);
1047 
1048 /********* -usermem.c prototypes (alphabetical) **********************/
1049 void qh_exit(int exitcode);
1050 void qh_fprintf_stderr(int msgcode, const char *fmt, ... );
1051 void qh_free(void *mem);
1052 void *qh_malloc(size_t size);
1053 
1054 /********* -userprintf.c and userprintf_rbox.c prototypes **********************/
1055 void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... );
1056 void qh_fprintf_rbox(FILE *fp, int msgcode, const char *fmt, ... );
1057 
1058 /***** -geom.c/geom2.c/random.c prototypes (duplicated from geom.h, random.h) ****************/
1059 
1060 facetT *qh_findbest(pointT *point, facetT *startfacet,
1061  boolT bestoutside, boolT newfacets, boolT noupper,
1062  realT *dist, boolT *isoutside, int *numpart);
1063 facetT *qh_findbestnew(pointT *point, facetT *startfacet,
1064  realT *dist, boolT bestoutside, boolT *isoutside, int *numpart);
1065 boolT qh_gram_schmidt(int dim, realT **rows);
1066 void qh_outerinner(facetT *facet, realT *outerplane, realT *innerplane);
1067 void qh_printsummary(FILE *fp);
1068 void qh_projectinput(void);
1069 void qh_randommatrix(realT *buffer, int dim, realT **row);
1070 void qh_rotateinput(realT **rows);
1071 void qh_scaleinput(void);
1072 void qh_setdelaunay(int dim, int count, pointT *points);
1073 coordT *qh_sethalfspace_all(int dim, int count, coordT *halfspaces, pointT *feasible);
1074 
1075 /***** -global.c prototypes (alphabetical) ***********************/
1076 
1077 unsigned long qh_clock(void);
1078 void qh_checkflags(char *command, char *hiddenflags);
1079 void qh_clear_outputflags(void);
1080 void qh_freebuffers(void);
1081 void qh_freeqhull(boolT allmem);
1082 void qh_freeqhull2(boolT allmem);
1083 void qh_init_A(FILE *infile, FILE *outfile, FILE *errfile, int argc, char *argv[]);
1084 void qh_init_B(coordT *points, int numpoints, int dim, boolT ismalloc);
1085 void qh_init_qhull_command(int argc, char *argv[]);
1086 void qh_initbuffers(coordT *points, int numpoints, int dim, boolT ismalloc);
1087 void qh_initflags(char *command);
1088 void qh_initqhull_buffers(void);
1089 void qh_initqhull_globals(coordT *points, int numpoints, int dim, boolT ismalloc);
1090 void qh_initqhull_mem(void);
1091 void qh_initqhull_outputflags(void);
1092 void qh_initqhull_start(FILE *infile, FILE *outfile, FILE *errfile);
1093 void qh_initqhull_start2(FILE *infile, FILE *outfile, FILE *errfile);
1094 void qh_initthresholds(char *command);
1095 void qh_lib_check(int qhullLibraryType, int qhTsize, int vertexTsize, int ridgeTsize, int facetTsize, int setTsize, int qhmemTsize);
1096 void qh_option(const char *option, int *i, realT *r);
1097 #if qh_QHpointer
1098 void qh_restore_qhull(qhT **oldqh);
1099 qhT *qh_save_qhull(void);
1100 #endif
1101 
1102 /***** -io.c prototypes (duplicated from io.h) ***********************/
1103 
1104 void qh_dfacet(unsigned id);
1105 void qh_dvertex(unsigned id);
1106 void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall);
1107 void qh_produce_output(void);
1108 coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc);
1109 
1110 
1111 /********* -mem.c prototypes (duplicated from mem.h) **********************/
1112 
1113 void qh_meminit(FILE *ferr);
1114 void qh_memfreeshort(int *curlong, int *totlong);
1115 
1116 /********* -poly.c/poly2.c prototypes (duplicated from poly.h) **********************/
1117 
1118 void qh_check_output(void);
1119 void qh_check_points(void);
1120 setT *qh_facetvertices(facetT *facetlist, setT *facets, boolT allfacets);
1121 facetT *qh_findbestfacet(pointT *point, boolT bestoutside,
1122  realT *bestdist, boolT *isoutside);
1123 vertexT *qh_nearvertex(facetT *facet, pointT *point, realT *bestdistp);
1124 pointT *qh_point(int id);
1125 setT *qh_pointfacet(void /*qh.facet_list*/);
1126 int qh_pointid(pointT *point);
1127 setT *qh_pointvertex(void /*qh.facet_list*/);
1128 void qh_setvoronoi_all(void);
1129 void qh_triangulate(void /*qh.facet_list*/);
1130 
1131 /********* -rboxlib.c prototypes **********************/
1132 int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command);
1133 void qh_errexit_rbox(int exitcode);
1134 
1135 /********* -stat.c prototypes (duplicated from stat.h) **********************/
1136 
1137 void qh_collectstatistics(void);
1138 void qh_printallstatistics(FILE *fp, const char *string);
1139 
1140 #endif /* qhDEFlibqhull */
qhT::feasible_point
coordT * feasible_point
Definition: libqhull.h:588
qh_findbestfacet
facetT * qh_findbestfacet(pointT *point, boolT bestoutside, realT *bestdist, boolT *isoutside)
Definition: poly2.c:1239
facetT::tricoplanar
flagT tricoplanar
Definition: libqhull.h:314
qh_ASnone
@ qh_ASnone
Definition: libqhull.h:143
qhT::facet_tail
facetT * facet_tail
Definition: libqhull.h:678
qh_PRINTvneighbors
@ qh_PRINTvneighbors
Definition: libqhull.h:171
coordT
#define coordT
Definition: libqhull.h:80
qh_outerinner
void qh_outerinner(facetT *facet, realT *outerplane, realT *innerplane)
Definition: geom2.c:1279
ridgeT::vertices
setT * vertices
Definition: libqhull.h:372
qh_PRINTfacets_xridge
@ qh_PRINTfacets_xridge
Definition: libqhull.h:164
qhT::ZEROall_ok
boolT ZEROall_ok
Definition: libqhull.h:748
facetT::notfurthest
flagT notfurthest
Definition: libqhull.h:329
qhT::TRACEmerge
int TRACEmerge
Definition: libqhull.h:575
facetT::center
coordT * center
Definition: libqhull.h:286
qhT::PRINTcoplanar
boolT PRINTcoplanar
Definition: libqhull.h:529
qhT::UPPERdelaunay
boolT UPPERdelaunay
Definition: libqhull.h:578
qh_version2
const char qh_version2[]
Definition: global.c:51
qh_PRINTids
@ qh_PRINTids
Definition: libqhull.h:165
qhT::QHULLfinished
boolT QHULLfinished
Definition: libqhull.h:743
facetT::neighbors
setT * neighbors
Definition: libqhull.h:299
obb.fmt
fmt
Definition: obb.py:145
qhT::IStracing
int IStracing
Definition: libqhull.h:503
vertexT::next
vertexT * next
Definition: libqhull.h:397
qh_fprintf_stderr
void qh_fprintf_stderr(int msgcode, const char *fmt,...)
Definition: usermem.c:57
qhT::vertex_visit
unsigned int vertex_visit
Definition: libqhull.h:747
qh_PRINTpointintersect
@ qh_PRINTpointintersect
Definition: libqhull.h:168
qhT::normal_size
int normal_size
Definition: libqhull.h:664
qh_PRINTvertices
@ qh_PRINTvertices
Definition: libqhull.h:171
qhT::ridgeoutnum
int ridgeoutnum
Definition: libqhull.h:802
qhT::ANNOTATEoutput
boolT ANNOTATEoutput
Definition: libqhull.h:481
qhT::ANGLEround
realT ANGLEround
Definition: libqhull.h:627
qhT::vertex_tail
vertexT * vertex_tail
Definition: libqhull.h:691
qhT::qhull_commandsiz2
int qhull_commandsiz2
Definition: libqhull.h:599
qhT::ANGLEmerge
boolT ANGLEmerge
Definition: libqhull.h:478
qh_initqhull_outputflags
void qh_initqhull_outputflags(void)
Definition: global.c:1722
qhT::POSTmerging
boolT POSTmerging
Definition: libqhull.h:740
qhT::MINdenom_2
realT MINdenom_2
Definition: libqhull.h:638
qh_PRINTqhull
@ qh_PRINTqhull
Definition: libqhull.h:169
qh_PRINToptions
@ qh_PRINToptions
Definition: libqhull.h:168
qhT::MERGEexact
boolT MERGEexact
Definition: libqhull.h:511
qhT::hull_dim
int hull_dim
Definition: libqhull.h:591
facetT::mergeridge
flagT mergeridge
Definition: libqhull.h:337
qh_qhull
void qh_qhull(void)
Definition: libqhull.c:60
qhT::NOnearinside
boolT NOnearinside
Definition: libqhull.h:519
qhT::half_space
coordT * half_space
Definition: libqhull.h:776
qh_new_qhull
int qh_new_qhull(int dim, int numpoints, coordT *points, boolT ismalloc, char *qhull_cmd, FILE *outfile, FILE *errfile)
Definition: user.c:129
qh_IDnone
@ qh_IDnone
Definition: libqhull.h:99
qhT::PRINTspheres
boolT PRINTspheres
Definition: libqhull.h:541
qhT::TESTpoints
int TESTpoints
Definition: libqhull.h:569
qhT::num_outside
int num_outside
Definition: libqhull.h:697
qh_PRINTincidences
@ qh_PRINTincidences
Definition: libqhull.h:167
qh_PRINTnormals
@ qh_PRINTnormals
Definition: libqhull.h:166
qhT::QUICKhelp
boolT QUICKhelp
Definition: libqhull.h:548
facetT::seen2
flagT seen2
Definition: libqhull.h:326
qhT::lastreport
unsigned lastreport
Definition: libqhull.h:798
facetT::newcycle
facetT * newcycle
Definition: libqhull.h:282
qhT::totarea
realT totarea
Definition: libqhull.h:744
qhT::NARROWhull
boolT NARROWhull
Definition: libqhull.h:640
qhT::hash_table
setT * hash_table
Definition: libqhull.h:760
qh_check_output
void qh_check_output(void)
Definition: poly2.c:302
qh_setdelaunay
void qh_setdelaunay(int dim, int count, pointT *points)
Definition: geom2.c:1806
qh_printhelp_singular
void qh_printhelp_singular(FILE *fp)
Definition: user.c:440
qhT::PROJECTinput
int PROJECTinput
Definition: libqhull.h:547
qhstatT
Definition: stat.h:503
qhT::PRINTprecision
boolT PRINTprecision
Definition: libqhull.h:538
facetT::isarea
flagT isarea
Definition: libqhull.h:333
qhT::ATinfinity
boolT ATinfinity
Definition: libqhull.h:482
qh_PRINTnone
@ qh_PRINTnone
Definition: libqhull.h:161
qhT::gm_matrix
coordT * gm_matrix
Definition: libqhull.h:772
qhT::PRINTcradius
realT PRINTcradius
Definition: libqhull.h:738
qhT::MERGEindependent
boolT MERGEindependent
Definition: libqhull.h:512
qh_PRINTinner
@ qh_PRINTinner
Definition: libqhull.h:165
qh_errexit_rbox
void qh_errexit_rbox(int exitcode)
Definition: rboxlib.c:866
qhT::qhull_options
char qhull_options[512]
Definition: libqhull.h:601
facetT::outsideset
setT * outsideset
Definition: libqhull.h:302
qhT::qhull_optionsiz2
int qhull_optionsiz2
Definition: libqhull.h:604
realT
#define realT
Definition: user.h:154
facetT::good
flagT good
Definition: libqhull.h:332
qhT::rbox_command
char rbox_command[256]
Definition: libqhull.h:600
vertexT::point
pointT * point
Definition: libqhull.h:399
qh_ASvoronoi
@ qh_ASvoronoi
Definition: libqhull.h:144
qhT::STOPpoint
int STOPpoint
Definition: libqhull.h:567
qhT::visible_list
facetT * visible_list
Definition: libqhull.h:683
qhT::SCALEinput
boolT SCALEinput
Definition: libqhull.h:558
qhT::BESToutside
boolT BESToutside
Definition: libqhull.h:485
qhT::run_id
int run_id
Definition: libqhull.h:605
qhT::PROJECTdelaunay
boolT PROJECTdelaunay
Definition: libqhull.h:545
qhT::feasible_string
char * feasible_string
Definition: libqhull.h:587
facetT::visible
flagT visible
Definition: libqhull.h:321
qhT::DELAUNAY
boolT DELAUNAY
Definition: libqhull.h:491
qhT::tracefacet
facetT * tracefacet
Definition: libqhull.h:687
qhT::last_high
realT last_high
Definition: libqhull.h:796
qhT::AREAfactor
realT AREAfactor
Definition: libqhull.h:585
qh_pointfacet
setT * qh_pointfacet(void)
Definition: poly2.c:2510
qhT::num_facets
int num_facets
Definition: libqhull.h:694
qhT::REPORTfreq2
int REPORTfreq2
Definition: libqhull.h:555
qh_printneighborhood
void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall)
Definition: io.c:2809
qh_errprint
void qh_errprint(const char *string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex)
Definition: user.c:277
vertexT::visitid
unsigned visitid
Definition: libqhull.h:403
facetT::redundant
flagT redundant
Definition: libqhull.h:347
facetT::ridges
setT * ridges
Definition: libqhull.h:297
qhT::jmpXtra2
char jmpXtra2[40]
Definition: libqhull.h:659
qh_malloc
void * qh_malloc(size_t size)
Definition: usermem.c:90
qhT
Definition: libqhull.h:465
vertexT::seen2
flagT seen2
Definition: libqhull.h:405
qhT::CHECKfrequently
boolT CHECKfrequently
Definition: libqhull.h:488
qhT::MAXlastcoord
realT MAXlastcoord
Definition: libqhull.h:632
qh_IDunknown
@ qh_IDunknown
Definition: libqhull.h:99
qh_initqhull_globals
void qh_initqhull_globals(coordT *points, int numpoints, int dim, boolT ismalloc)
Definition: global.c:1496
qhT::PRINToptions1st
boolT PRINToptions1st
Definition: libqhull.h:536
qhT::SETroundoff
boolT SETroundoff
Definition: libqhull.h:560
facetT::tested
flagT tested
Definition: libqhull.h:343
qhT::last_newhigh
realT last_newhigh
Definition: libqhull.h:797
facetT::flipped
flagT flipped
Definition: libqhull.h:327
qhT::SKIPconvex
boolT SKIPconvex
Definition: libqhull.h:562
qh_randommatrix
void qh_randommatrix(realT *buffer, int dim, realT **row)
Definition: random.c:204
qh_checkflags
void qh_checkflags(char *command, char *hiddenflags)
Definition: global.c:86
qhT::MAXcoplanar
realT MAXcoplanar
Definition: libqhull.h:510
ridgeT::tested
flagT tested
Definition: libqhull.h:378
qhT::PRINTdim
int PRINTdim
Definition: libqhull.h:530
qhT::WAScoplanar
boolT WAScoplanar
Definition: libqhull.h:749
qhT::KEEPminArea
realT KEEPminArea
Definition: libqhull.h:509
octree.r
r
Definition: octree.py:9
qh_init_qhull_command
void qh_init_qhull_command(int argc, char *argv[])
Definition: global.c:575
qh_rboxpoints
int qh_rboxpoints(FILE *fout, FILE *ferr, char *rbox_command)
Definition: rboxlib.c:90
qhT::last_low
realT last_low
Definition: libqhull.h:795
qhT::jmpXtra
char jmpXtra[40]
Definition: libqhull.h:657
qhT::lower_threshold
realT * lower_threshold
Definition: libqhull.h:611
facetT
Definition: libqhull.h:262
facetT::toporient
flagT toporient
Definition: libqhull.h:322
qh_produce_output
void qh_produce_output(void)
Definition: io.c:39
qhT::MINoutside
realT MINoutside
Definition: libqhull.h:480
qh_findbest
facetT * qh_findbest(pointT *point, facetT *startfacet, boolT bestoutside, boolT newfacets, boolT noupper, realT *dist, boolT *isoutside, int *numpart)
Definition: geom.c:140
ridgeT::bottom
facetT * bottom
Definition: libqhull.h:375
qhT::MINlastcoord
realT MINlastcoord
Definition: libqhull.h:639
ridgeT::top
facetT * top
Definition: libqhull.h:374
qh_initbuffers
void qh_initbuffers(coordT *points, int numpoints, int dim, boolT ismalloc)
qh_PRINTsummary
@ qh_PRINTsummary
Definition: libqhull.h:170
qh_PRINTtriangles
@ qh_PRINTtriangles
Definition: libqhull.h:170
qhT::GOODclosest
facetT * GOODclosest
Definition: libqhull.h:718
qhT::vertex_list
vertexT * vertex_list
Definition: libqhull.h:690
vertexT::deleted
flagT deleted
Definition: libqhull.h:407
qhT::NOpremerge
boolT NOpremerge
Definition: libqhull.h:520
qhT::ROTATErandom
int ROTATErandom
Definition: libqhull.h:557
qh_freeqhull2
void qh_freeqhull2(boolT allmem)
Definition: global.c:453
facetT::seen
flagT seen
Definition: libqhull.h:325
qh_addpoint
boolT qh_addpoint(pointT *furthest, facetT *facet, boolT checkdist)
Definition: libqhull.c:168
qhT::totvol
realT totvol
Definition: libqhull.h:745
qhT::KEEPnearinside
boolT KEEPnearinside
Definition: libqhull.h:590
qhT::maxline
int maxline
Definition: libqhull.h:775
qh_PRINTfacets
@ qh_PRINTfacets
Definition: libqhull.h:164
facetT::samecycle
facetT * samecycle
Definition: libqhull.h:280
qhT::PRINTnoplanes
boolT PRINTnoplanes
Definition: libqhull.h:535
qh_projectinput
void qh_projectinput(void)
Definition: geom2.c:1424
ridgeT::id
unsigned id
Definition: libqhull.h:376
qhT::MERGING
boolT MERGING
Definition: libqhull.h:513
boolT
#define boolT
Definition: libqhull.h:121
qhT::NEARinside
realT NEARinside
Definition: libqhull.h:642
qhT::tracevertex
vertexT * tracevertex
Definition: libqhull.h:689
qh_PRINTouter
@ qh_PRINTouter
Definition: libqhull.h:166
qhT::maxoutdone
boolT maxoutdone
Definition: libqhull.h:722
qh_PRINToff
@ qh_PRINToff
Definition: libqhull.h:167
qhT::AVOIDold
boolT AVOIDold
Definition: libqhull.h:484
qh_check_points
void qh_check_points(void)
Definition: poly2.c:365
qhT::visit_id
unsigned int visit_id
Definition: libqhull.h:746
ridgeT::nonconvex
flagT nonconvex
Definition: libqhull.h:379
qhT::CDDinput
boolT CDDinput
Definition: libqhull.h:486
qhT::newfacet_list
facetT * newfacet_list
Definition: libqhull.h:682
qh_initflags
void qh_initflags(char *command)
Definition: global.c:615
qh_findbestnew
facetT * qh_findbestnew(pointT *point, facetT *startfacet, realT *dist, boolT bestoutside, boolT *isoutside, int *numpart)
Definition: geom.c:412
qh_version
const char qh_version[]
Definition: global.c:50
qhT::HALFspace
boolT HALFspace
Definition: libqhull.h:501
facetT::mergehorizon
flagT mergehorizon
Definition: libqhull.h:341
qh_initqhull_start2
void qh_initqhull_start2(FILE *infile, FILE *outfile, FILE *errfile)
Definition: global.c:1856
qhT::fin
FILE * fin
Definition: libqhull.h:660
qhT::fout
FILE * fout
Definition: libqhull.h:661
qhT::num_points
int num_points
Definition: libqhull.h:593
qhT::MAXabs_coord
realT MAXabs_coord
Definition: libqhull.h:631
qhT::RANDOMb
realT RANDOMb
Definition: libqhull.h:552
qhT::PRINTstatistics
boolT PRINTstatistics
Definition: libqhull.h:542
facetT::nummerge
unsigned nummerge
Definition: libqhull.h:312
qh_pointvertex
setT * qh_pointvertex(void)
Definition: poly2.c:2547
qhT::max_outside
realT max_outside
Definition: libqhull.h:723
qhT::DISTround
realT DISTround
Definition: libqhull.h:630
qhT::FORCEoutput
boolT FORCEoutput
Definition: libqhull.h:494
qhT::JOGGLEmax
realT JOGGLEmax
Definition: libqhull.h:721
qhT::PREmerge
boolT PREmerge
Definition: libqhull.h:526
qhT::NOnarrow
boolT NOnarrow
Definition: libqhull.h:518
qhT::PRINTouter
boolT PRINTouter
Definition: libqhull.h:537
qhT::input_points
pointT * input_points
Definition: libqhull.h:596
facetT::trivisible
facetT * trivisible
Definition: libqhull.h:283
qhT::MAXwidth
realT MAXwidth
Definition: libqhull.h:634
qh_PRINTgeom
@ qh_PRINTgeom
Definition: libqhull.h:165
qhT::RANDOMoutside
boolT RANDOMoutside
Definition: libqhull.h:553
setT
Definition: qset.h:83
qh_IDinterior
@ qh_IDinterior
Definition: libqhull.h:99
qhT::ALLpoints
boolT ALLpoints
Definition: libqhull.h:477
qhT::postmerge_cos
realT postmerge_cos
Definition: libqhull.h:490
qhT::RANDOMa
realT RANDOMa
Definition: libqhull.h:551
qhT::outside_err
realT outside_err
Definition: libqhull.h:644
flagT
#define flagT
Definition: libqhull.h:109
qhT::VIRTUALmemory
boolT VIRTUALmemory
Definition: libqhull.h:581
qhT::PRINTradius
realT PRINTradius
Definition: libqhull.h:739
qhT::errexit
jmp_buf errexit
Definition: libqhull.h:656
vertexT::delridge
flagT delridge
Definition: libqhull.h:406
facetT::replace
facetT * replace
Definition: libqhull.h:278
qhT::facet_list
facetT * facet_list
Definition: libqhull.h:677
qhT::cos_max
realT cos_max
Definition: libqhull.h:629
qhT::TEMPsize
int TEMPsize
Definition: libqhull.h:666
qhT::KEEPcoplanar
boolT KEEPcoplanar
Definition: libqhull.h:505
qhT::SPLITthresholds
boolT SPLITthresholds
Definition: libqhull.h:563
qh_errexit
void qh_errexit(int exitcode, facetT *facet, ridgeT *ridge)
Definition: user.c:213
qhT::PRINTgood
boolT PRINTgood
Definition: libqhull.h:532
facetT::newmerge
flagT newmerge
Definition: libqhull.h:345
ridgeT
Definition: libqhull.h:371
qh_PRINTextremes
@ qh_PRINTextremes
Definition: libqhull.h:171
vertexT::previous
vertexT * previous
Definition: libqhull.h:398
qhT::ONLYmax
boolT ONLYmax
Definition: libqhull.h:523
qhT::NOerrexit
boolT NOerrexit
Definition: libqhull.h:737
qh_PRINT
qh_PRINT
Definition: libqhull.h:161
qhT::GOODpoint
int GOODpoint
Definition: libqhull.h:495
qh_printfacetlist
void qh_printfacetlist(facetT *facetlist, setT *facets, boolT printall)
Definition: user.c:325
qh_CENTER
qh_CENTER
Definition: libqhull.h:141
qhT::NEARzero
realT * NEARzero
Definition: libqhull.h:641
qh_printhelp_narrowhull
void qh_printhelp_narrowhull(FILE *fp, realT minangle)
Definition: user.c:423
qhT::REPORTfreq
int REPORTfreq
Definition: libqhull.h:554
qh_dvertex
void qh_dvertex(unsigned id)
Definition: io.c:109
qh_lib_check
void qh_lib_check(int qhullLibraryType, int qhTsize, int vertexTsize, int ridgeTsize, int facetTsize, int setTsize, int qhmemTsize)
Definition: global.c:2039
qhT::printoutvar
int printoutvar
Definition: libqhull.h:741
qhT::old_tempstack
setT * old_tempstack
Definition: libqhull.h:801
qhT::TRACElevel
int TRACElevel
Definition: libqhull.h:571
qhT::ZEROcentrum
boolT ZEROcentrum
Definition: libqhull.h:607
qhT::RANDOMdist
boolT RANDOMdist
Definition: libqhull.h:549
qh_PRINTmerges
@ qh_PRINTmerges
Definition: libqhull.h:167
qh_initthresholds
void qh_initthresholds(char *command)
Definition: global.c:1931
qhT::old_qhstat
qhstatT * old_qhstat
Definition: libqhull.h:800
qhT::DOintersections
boolT DOintersections
Definition: libqhull.h:492
qhT::mergereport
int mergereport
Definition: libqhull.h:799
qhT::qhull_command
char qhull_command[256]
Definition: libqhull.h:598
qhT::ridge_id
unsigned ridge_id
Definition: libqhull.h:701
qhT::postmerge_centrum
realT postmerge_centrum
Definition: libqhull.h:515
qhT::ONEmerge
realT ONEmerge
Definition: libqhull.h:643
qhT::STOPcone
int STOPcone
Definition: libqhull.h:565
qh_exit
void qh_exit(int exitcode)
Definition: usermem_r-cpp.cpp:36
qh_AScentrum
@ qh_AScentrum
Definition: libqhull.h:145
qhT::first_point
pointT * first_point
Definition: libqhull.h:594
qhT::newvertex_list
vertexT * newvertex_list
Definition: libqhull.h:692
qhT::qhull_optionsiz
int qhull_optionsiz
Definition: libqhull.h:603
qh_initqhull_mem
void qh_initqhull_mem(void)
Definition: global.c:1684
qhT::RERUN
int RERUN
Definition: libqhull.h:556
qh_point
pointT * qh_point(int id)
Definition: poly2.c:2446
qhT::DROPdim
int DROPdim
Definition: libqhull.h:493
qhT::MINdenom_1
realT MINdenom_1
Definition: libqhull.h:635
qhT::upper_threshold
realT * upper_threshold
Definition: libqhull.h:608
facetT::next
facetT * next
Definition: libqhull.h:294
qhT::ferr
FILE * ferr
Definition: libqhull.h:662
qhT::TRACEpoint
int TRACEpoint
Definition: libqhull.h:573
qhT::MERGEvertices
boolT MERGEvertices
Definition: libqhull.h:516
facetT::newfacet
flagT newfacet
Definition: libqhull.h:320
qhT::tracevertex_id
unsigned tracevertex_id
Definition: libqhull.h:688
qhT::num_vertices
int num_vertices
Definition: libqhull.h:696
qhT::TRACElastrun
int TRACElastrun
Definition: libqhull.h:572
qh_setvoronoi_all
void qh_setvoronoi_all(void)
Definition: poly2.c:2735
facetT::cycledone
flagT cycledone
Definition: libqhull.h:342
qhT::GOODvertex
int GOODvertex
Definition: libqhull.h:499
qhT::old_randomdist
boolT old_randomdist
Definition: libqhull.h:793
qh_PRINTsize
@ qh_PRINTsize
Definition: libqhull.h:169
qhT::gm_row
coordT ** gm_row
Definition: libqhull.h:773
qhT::PRINTneighbors
boolT PRINTneighbors
Definition: libqhull.h:534
qhT::WIDEfacet
realT WIDEfacet
Definition: libqhull.h:646
qh_clear_outputflags
void qh_clear_outputflags(void)
Definition: global.c:167
qhT::RANDOMfactor
realT RANDOMfactor
Definition: libqhull.h:550
qh_PRINTcoplanars
@ qh_PRINTcoplanars
Definition: libqhull.h:163
qh_pointid
int qh_pointid(pointT *point)
Definition: poly.c:1053
qh_PRINTmaple
@ qh_PRINTmaple
Definition: libqhull.h:166
qhT::ONLYgood
boolT ONLYgood
Definition: libqhull.h:522
qh_gram_schmidt
boolT qh_gram_schmidt(int dim, realT **rows)
Definition: geom2.c:763
facetT::simplicial
flagT simplicial
Definition: libqhull.h:324
qhT::POINTSmalloc
boolT POINTSmalloc
Definition: libqhull.h:595
qhT::hulltime
unsigned long hulltime
Definition: libqhull.h:712
qhT::PICKfurthest
boolT PICKfurthest
Definition: libqhull.h:524
qhT::lower_bound
realT * lower_bound
Definition: libqhull.h:613
qh_initqhull_buffers
void qh_initqhull_buffers(void)
Definition: global.c:1442
qh_free
void qh_free(void *mem)
Definition: usermem.c:77
qh_printallstatistics
void qh_printallstatistics(FILE *fp, const char *string)
Definition: stat.c:559
stat.h
qhT::firstcentrum
boolT firstcentrum
Definition: libqhull.h:792
qhT::upper_bound
realT * upper_bound
Definition: libqhull.h:612
qh_init_A
void qh_init_A(FILE *infile, FILE *outfile, FILE *errfile, int argc, char *argv[])
Definition: global.c:487
qhT::min_vertex
realT min_vertex
Definition: libqhull.h:729
qhT::GOODthreshold
boolT GOODthreshold
Definition: libqhull.h:497
qhT::ALLOWrestart
boolT ALLOWrestart
Definition: libqhull.h:714
qhT::SKIPcheckmax
boolT SKIPcheckmax
Definition: libqhull.h:561
qhT::PRINTtransparent
boolT PRINTtransparent
Definition: libqhull.h:544
qh_triangulate
void qh_triangulate(void)
Definition: poly2.c:2767
facetT::maxoutside
coordT maxoutside
Definition: libqhull.h:267
qhT::vertex_id
unsigned vertex_id
Definition: libqhull.h:702
vertexT::seen
flagT seen
Definition: libqhull.h:404
qh_PRINTcentrums
@ qh_PRINTcentrums
Definition: libqhull.h:163
facetT::furthestdist
coordT furthestdist
Definition: libqhull.h:264
qhT::input_malloc
boolT input_malloc
Definition: libqhull.h:597
qhT::NEWfacets
boolT NEWfacets
Definition: libqhull.h:733
qhT::restartexit
jmp_buf restartexit
Definition: libqhull.h:658
qh_PRINTmathematica
@ qh_PRINTmathematica
Definition: libqhull.h:167
qh_memfreeshort
void qh_memfreeshort(int *curlong, int *totlong)
Definition: mem.c:288
qh_readpoints
coordT * qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc)
Definition: io.c:3673
qhT::qhull
char qhull[sizeof("qhull")]
Definition: libqhull.h:655
pointT
#define pointT
Definition: libqhull.h:96
facetT::visitid
unsigned visitid
Definition: libqhull.h:309
qhT::num_visible
int num_visible
Definition: libqhull.h:685
user.h
qhT::PRINTdots
boolT PRINTdots
Definition: libqhull.h:531
qhT::PRINTsummary
boolT PRINTsummary
Definition: libqhull.h:543
facetT::degenerate
flagT degenerate
Definition: libqhull.h:346
qh_PRINTaverage
@ qh_PRINTaverage
Definition: libqhull.h:162
vertexT
Definition: libqhull.h:396
qhT::printoutnum
int printoutnum
Definition: libqhull.h:742
qh_printsummary
void qh_printsummary(FILE *fp)
Definition: libqhull.c:1205
qh_initqhull_start
void qh_initqhull_start(FILE *infile, FILE *outfile, FILE *errfile)
Definition: global.c:1827
qh_sethalfspace_all
coordT * qh_sethalfspace_all(int dim, int count, coordT *halfspaces, pointT *feasible)
Definition: geom2.c:1918
qhT::MINdenom_1_2
realT MINdenom_1_2
Definition: libqhull.h:637
qhT::VERTEXneighbors
boolT VERTEXneighbors
Definition: libqhull.h:606
vertexT::newlist
flagT newlist
Definition: libqhull.h:408
qhT::line
char * line
Definition: libqhull.h:774
qh_pointT
qh_pointT
Definition: libqhull.h:97
facetT::keepcentrum
flagT keepcentrum
Definition: libqhull.h:344
qh_PRINTpointnearest
@ qh_PRINTpointnearest
Definition: libqhull.h:169
qhT::KEEParea
int KEEParea
Definition: libqhull.h:504
facetT::offset
coordT offset
Definition: libqhull.h:273
facetT::normal
coordT * normal
Definition: libqhull.h:274
qhT::del_vertices
setT * del_vertices
Definition: libqhull.h:763
qhT::MINvisible
realT MINvisible
Definition: libqhull.h:517
ridgeT::seen
flagT seen
Definition: libqhull.h:377
qhT::max_vertex
realT max_vertex
Definition: libqhull.h:727
qhT::NOwide
boolT NOwide
Definition: libqhull.h:521
qhT::premerge_cos
realT premerge_cos
Definition: libqhull.h:489
qhT::ERREXITcalled
boolT ERREXITcalled
Definition: libqhull.h:791
qhT::GOODpointp
pointT * GOODpointp
Definition: libqhull.h:496
qhT::MINdenom
realT MINdenom
Definition: libqhull.h:636
qhT::coplanarfacetset
setT * coplanarfacetset
Definition: libqhull.h:794
qhT::qhull_optionlen
int qhull_optionlen
Definition: libqhull.h:602
qh_PRINTEND
@ qh_PRINTEND
Definition: libqhull.h:172
qhT::findbestnew
boolT findbestnew
Definition: libqhull.h:735
qh_fprintf_rbox
void qh_fprintf_rbox(FILE *fp, int msgcode, const char *fmt,...)
Definition: userprintf_rbox.c:40
qhT::input_dim
int input_dim
Definition: libqhull.h:592
qset.h
qh_qh
qhT qh_qh
Definition: global.c:26
qhT::TESTvneighbors
boolT TESTvneighbors
Definition: libqhull.h:570
facetT::coplanarset
setT * coplanarset
Definition: libqhull.h:305
qhT::PRINTcentrums
boolT PRINTcentrums
Definition: libqhull.h:528
qhT::degen_mergeset
setT * degen_mergeset
Definition: libqhull.h:759
qhT::KEEPinside
boolT KEEPinside
Definition: libqhull.h:506
qhT::PRINTridges
boolT PRINTridges
Definition: libqhull.h:540
facetT::dupridge
flagT dupridge
Definition: libqhull.h:336
qh_fprintf
void qh_fprintf(FILE *fp, int msgcode, const char *fmt,...)
Definition: userprintf.c:42
mem.h
qhT::CENTERtype
qh_CENTER CENTERtype
Definition: libqhull.h:716
facetT::upperdelaunay
flagT upperdelaunay
Definition: libqhull.h:328
qhT::TRACEdist
realT TRACEdist
Definition: libqhull.h:574
qhT::centrum_radius
realT centrum_radius
Definition: libqhull.h:628
qhT::TRInormals
boolT TRInormals
Definition: libqhull.h:577
qh_PRINTarea
@ qh_PRINTarea
Definition: libqhull.h:162
qhT::premerge_centrum
realT premerge_centrum
Definition: libqhull.h:514
qh_meminit
void qh_meminit(FILE *ferr)
Definition: mem.c:317
qhT::tracefacet_id
unsigned tracefacet_id
Definition: libqhull.h:686
qh_dfacet
void qh_dfacet(unsigned id)
Definition: io.c:91
qh_freeqhull
void qh_freeqhull(boolT allmem)
Definition: global.c:425
qhT::VORONOI
boolT VORONOI
Definition: libqhull.h:582
facetT::id
unsigned id
Definition: libqhull.h:311
qhT::APPROXhull
boolT APPROXhull
Definition: libqhull.h:479
vertexT::neighbors
setT * neighbors
Definition: libqhull.h:400
qhT::facet_next
facetT * facet_next
Definition: libqhull.h:679
qh_clock
unsigned long qh_clock(void)
Definition: global.c:239
qhT::furthest_id
int furthest_id
Definition: libqhull.h:717
qhT::hasAreaVolume
boolT hasAreaVolume
Definition: libqhull.h:719
qhT::findbest_notsharp
boolT findbest_notsharp
Definition: libqhull.h:736
qh_scaleinput
void qh_scaleinput(void)
Definition: geom2.c:1646
facetT::triowner
facetT * triowner
Definition: libqhull.h:284
qhT::GETarea
boolT GETarea
Definition: libqhull.h:589
qhT::DOcheckmax
boolT DOcheckmax
Definition: libqhull.h:586
qhT::MAXsumcoord
realT MAXsumcoord
Definition: libqhull.h:633
qhT::USEstdout
boolT USEstdout
Definition: libqhull.h:579
qh_collectstatistics
void qh_collectstatistics(void)
Definition: stat.c:316
qhT::SCALElast
boolT SCALElast
Definition: libqhull.h:559
qhT::PRINTinner
boolT PRINTinner
Definition: libqhull.h:533
qh_nearvertex
vertexT * qh_nearvertex(facetT *facet, pointT *point, realT *bestdistp)
Definition: poly2.c:2248
qhT::facet_id
unsigned facet_id
Definition: libqhull.h:700
facetT::area
realT area
Definition: libqhull.h:277
qh_option
void qh_option(const char *option, int *i, realT *r)
Definition: global.c:2115
qh_printhelp_degenerate
void qh_printhelp_degenerate(FILE *fp)
Definition: user.c:346
qh_freebuffers
void qh_freebuffers(void)
Definition: global.c:276
qhT::build_cnt
int build_cnt
Definition: libqhull.h:715
qhT::VERIFYoutput
boolT VERIFYoutput
Definition: libqhull.h:580
facetT::vertices
setT * vertices
Definition: libqhull.h:295
qh_facetvertices
setT * qh_facetvertices(facetT *facetlist, setT *facets, boolT allfacets)
Definition: io.c:801
qhT::other_points
setT * other_points
Definition: libqhull.h:762
qhT::num_good
int num_good
Definition: libqhull.h:699
qh_user_memsizes
void qh_user_memsizes(void)
Definition: user.c:531
facetT::mergeridge2
flagT mergeridge2
Definition: libqhull.h:339
vertexT::id
unsigned id
Definition: libqhull.h:402
qhT::TRIangulate
boolT TRIangulate
Definition: libqhull.h:576
qhT::interior_point
pointT * interior_point
Definition: libqhull.h:663
qh_PRINTneighbors
@ qh_PRINTneighbors
Definition: libqhull.h:165
facetT::previous
facetT * previous
Definition: libqhull.h:293
qhT::CDDoutput
boolT CDDoutput
Definition: libqhull.h:487
qhT::facet_mergeset
setT * facet_mergeset
Definition: libqhull.h:758
qhT::hasTriangulation
boolT hasTriangulation
Definition: libqhull.h:720
qhT::temp_malloc
coordT * temp_malloc
Definition: libqhull.h:777
qh_PRINTpoints
@ qh_PRINTpoints
Definition: libqhull.h:169
qhT::ISqhullQh
boolT ISqhullQh
Definition: libqhull.h:502
qhT::PRINTout
qh_PRINT PRINTout[qh_PRINTEND]
Definition: libqhull.h:539
facetT::coplanar
flagT coplanar
Definition: libqhull.h:340
qhT::POSTmerge
boolT POSTmerge
Definition: libqhull.h:525
qhT::KEEPmerge
int KEEPmerge
Definition: libqhull.h:508
qhT::GOODvertexp
pointT * GOODvertexp
Definition: libqhull.h:500
qh_init_B
void qh_init_B(coordT *points, int numpoints, int dim, boolT ismalloc)
Definition: global.c:534
qh_rotateinput
void qh_rotateinput(realT **rows)
Definition: geom2.c:1584
qhT::center_size
int center_size
Definition: libqhull.h:665
facetT::f
union facetT::@20 f


hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:44:58