1
<!-- Do not edit with Front Page, it adds too many spaces -->
4
<meta http-equiv="Content-Type"
5
content="text/html; charset=iso-8859-1">
6
<title>Qhull functions, macros, and data structures</title>
10
<!-- Navigation links -->
11
<p><a name="TOP"><b>Up:</b></a> <a
12
href="http://www.qhull.org">Home page</a> for Qhull<br>
13
<b>Up:</b> <a href="../../html/index.htm#TOC">Qhull manual</a>: Table of Contents <br>
14
<b>Up:</b> <a href="../../html/qh-quick.htm#programs">Programs</a>
15
• <a href="../../html/qh-quick.htm#options">Options</a>
16
• <a href="../../html/qh-opto.htm#output">Output</a>
17
• <a href="../../html/qh-optf.htm#format">Formats</a>
18
• <a href="../../html/qh-optg.htm#geomview">Geomview</a>
19
• <a href="../../html/qh-optp.htm#print">Print</a>
20
• <a href="../../html/qh-optq.htm#qhull">Qhull</a>
21
• <a href="../../html/qh-optc.htm#prec">Precision</a>
22
• <a href="../../html/qh-optt.htm#trace">Trace</a><br>
23
<b>Up:</b> <a href="../../html/qh-code.htm#TOC">Qhull code</a><br>
24
<b>To:</b> <a href="#TOC">Qhull files</a><br>
25
<b>To:</b> <a href="qh-geom.htm">Geom</a> • <a href="qh-globa.htm">Global</a>
26
• <a href="qh-io.htm">Io</a> • <a href="qh-mem.htm">Mem</a>
27
• <a href="qh-merge.htm">Merge</a> • <a href="qh-poly.htm">Poly</a>
28
• <a href="qh-qhull.htm">Qhull</a> • <a href="qh-set.htm">Set</a>
29
• <a href="qh-stat.htm">Stat</a> • <a href="qh-user.htm">User</a>
32
<!-- Main text of document. -->
34
<h1>Qhull functions, macros, and data structures</h1>
36
<p>The following sections provide an overview and index to
37
Qhull's functions, macros, and data structures. Each
38
section starts with an introduction. If you use Opera, the source code links back to this documentation.
39
See also <a href=../../html/qh-code.htm#library>Calling
40
Qhull from C programs</a> and <a href="../../html/qh-code.htm#cpp">Calling Qhull from C++ programs</a>.</p>
42
<p>Qhull uses the following conventions:</p>
46
<li>in code, global variables start with "qh "
47
<li>in documentation, global variables start with 'qh.'
48
<li>constants start with an upper case word
49
<li>important globals include an '_'
50
<li>functions, macros, and constants start with "qh_"</li>
51
<li>data types end in "T"</li>
52
<li>macros with arguments end in "_"</li>
53
<li>iterators are macros that use local variables</li>
54
<li>iterators for sets start with "FOREACH"</li>
55
<li>iterators for lists start with "FORALL"</li>
56
<li>qhull options are in single quotes (e.g., 'Pdn')</li>
57
<li>lists are sorted alphabetically</li>
58
<li>preprocessor directives on left margin for older compilers</li>
62
When reading the code, please note that the
63
global data structure, 'qh', is a macro. It
64
either expands to "qh_qh." or to
65
"qh_qh->". The later is used for
66
applications which run concurrent calls to qh_qhull().
68
When reading code with an editor, a search for
69
<i>"procedure</i>
70
will locate the header of <i>qh_procedure</i>. A search for <i>* procedure</i>
71
will locate the tail of <i>qh_procedure</i>.
73
<p>A useful starting point is <a href="libqhull.h">libqhull.h</a>. It defines most
74
of Qhull data structures and top-level functions. Search for <i>'PFn'</i> to
75
determine the corresponding constant in Qhull. Search for <i>'Fp'</i> to
76
determine the corresponding <a href="libqhull.h#qh_PRINT">qh_PRINT...</a> constant.
77
Search <a href="io.c">io.c</a> to learn how the print function is implemented.</p>
79
<p>If your web browser loads .c and .h files with an external application,
80
change the MIME type of .c and .h files to "text/html".
81
Opera does not always work since it treats '<' characters as HTML tags.
83
Please report documentation and link errors
84
to <a href="mailto:qhull-bug@qhull.org">qhull-bug@qhull.org</a>.
87
<p><b>Copyright © 1997-2012 C.B. Barber</b></p>
91
<h2><a href="#TOP">»</a><a name="TOC">Qhull files</a> </h2>
94
<p>This sections lists the .c and .h files for Qhull. Please
95
refer to these files for detailed information.</p>
99
<dt><a href="../../Makefile"><b>Makefile</b></a><b>, </b><a href="../../CMakeLists.txt"><b>CMakeLists.txt</b></a></dt>
100
<dd><tt>Makefile</tt> is preconfigured for gcc. <tt>CMakeLists.txt</tt> supports multiple
101
platforms with <a href=http://www.cmake.org/>CMake</a>.
102
Qhull includes project files for Visual Studio and Qt.
106
<dt><a href="libqhull.h"><b>libqhull.h</b></a> </dt>
107
<dd>Include file for the Qhull library (<tt>libqhull.so</tt>, <tt>qhull.dll</tt>, <tt>libqhullstatic.a</tt>).
108
Data structures are documented under <a href="qh-poly.htm">Poly</a>.
109
Global variables are documented under <a href="qh-globa.htm">Global</a>.
110
Other data structures and variables are documented under
111
<a href="qh-qhull.htm#TOC">Qhull</a> or <a href="qh-geom.htm"><b>Geom</b></a><b>.</b></dd>
114
<dt><a href="qh-geom.htm"><b>Geom</b></a><b>, </b>
115
<a href="geom.h"><b>geom.h</b></a><b>, </b>
116
<a href="geom.c"><b>geom.c</b></a><b>, </b>
117
<a href="geom2.c"><b>geom2.c</b></a><b>, </b>
118
<a href="random.c"><b>random.c</b></a><b>, </b>
119
<a href="random.h"><b>random.h</b></a></dt>
120
<dd>Geometric routines. These routines implement mathematical
121
functions such as Gaussian elimination and geometric
122
routines needed for Qhull. Frequently used routines are
123
in <tt>geom.c</tt> while infrequent ones are in <tt>geom2.c</tt>.
127
<dt><a href="qh-globa.htm"><b>Global</b></a><b>, </b>
128
<a href="global.c"><b>global.c</b></a><b>, </b>
129
<a href="libqhull.h"><b>libqhull.h</b></a> </dt>
130
<dd>Global routines. Qhull uses a global data structure, <tt>qh</tt>,
131
to store globally defined constants, lists, sets, and
133
<tt>global.c</tt> initializes and frees these
137
<dt><a href="qh-io.htm"><b>Io</b></a><b>, </b><a href="io.h"><b>io.h</b></a><b>,
138
</b><a href="io.c"><b>io.c</b></a> </dt>
139
<dd>Input and output routines. Qhull provides a wide range of
140
input and output options.</dd>
143
<dt><a href="qh-mem.htm"><b>Mem</b></a><b>, </b>
144
<a href="mem.h"><b>mem.h</b></a><b>, </b>
145
<a href="mem.c"><b>mem.c</b></a> </dt>
146
<dd>Memory routines. Qhull provides memory allocation and
147
deallocation. It uses quick-fit allocation.</dd>
150
<dt><a href="qh-merge.htm"><b>Merge</b></a><b>, </b>
151
<a href="merge.h"><b>merge.h</b></a><b>, </b>
152
<a href="merge.c"><b>merge.c</b></a> </dt>
153
<dd>Merge routines. Qhull handles precision problems by
154
merged facets or joggled input. These routines merge simplicial facets,
155
merge non-simplicial facets, merge cycles of facets, and
156
rename redundant vertices.</dd>
159
<dt><a href="qh-poly.htm"><b>Poly</b></a><b>, </b>
160
<a href="poly.h"><b>poly.h</b></a><b>, </b>
161
<a href="poly.c"><b>poly.c</b></a><b>, </b>
162
<a href="poly2.c"><b>poly2.c</b></a><b>, </b>
163
<a href="libqhull.h"><b>libqhull.h</b></a> </dt>
164
<dd>Polyhedral routines. Qhull produces a polyhedron as a
165
list of facets with vertices, neighbors, ridges, and
166
geometric information. <tt>libqhull.h</tt> defines the main
167
data structures. Frequently used routines are in <tt>poly.c</tt>
168
while infrequent ones are in <tt>poly2.c</tt>.</dd>
171
<dt><a href="qh-qhull.htm#TOC"><b>Qhull</b></a><b>, </b>
172
<a href="libqhull.c"><b>libqhull.c</b></a><b>, </b>
173
<a href="libqhull.h"><b>libqhull.h</b></a><b>, </b>
174
<a href="qhull_a.h"><b>qhull_a.h</b></a><b>, </b>
175
<a href="../qhull/unix.c"><b>unix.c</b></a> <b>, </b>
176
<a href="../qconvex/qconvex.c"><b>qconvex.c</b></a> <b>, </b>
177
<a href="../qdelaunay/qdelaun.c"><b>qdelaun.c</b></a> <b>, </b>
178
<a href="../qhalf/qhalf.c"><b>qhalf.c</b></a> <b>, </b>
179
<a href="../qvoronoi/qvoronoi.c"><b>qvoronoi.c</b></a> </dt>
180
<dd>Top-level routines. The Quickhull algorithm is
181
implemented by <tt>libqhull.c</tt>. <tt>qhull_a.h</tt>
182
includes all header files. </dd>
185
<dt><a href="qh-set.htm"><b>Set</b></a><b>, </b>
186
<a href="qset.h"><b>qset.h</b></a><b>, </b>
187
<a href="qset.c"><b>qset.c</b></a> </dt>
188
<dd>Set routines. Qhull implements its data structures as
189
sets. A set is an array of pointers that is expanded as
190
needed. This is a separate package that may be used in
191
other applications. </dd>
194
<dt><a href="qh-stat.htm"><b>Stat</b></a><b>, </b>
195
<a href="stat.h"><b>stat.h</b></a><b>, </b>
196
<a href="stat.c"><b>stat.c</b></a> </dt>
197
<dd>Statistical routines. Qhull maintains statistics about
198
its implementation. </dd>
201
<dt><a href="qh-user.htm"><b>User</b></a><b>, </b>
202
<a href="user.h"><b>user.h</b></a><b>, </b>
203
<a href="user.c"><b>user.c</b></a><b>, </b>
204
<a href="../user_eg/user_eg.c"><b>user_eg.c</b></a><b>, </b>
205
<a href="../user_eg2/user_eg2.c"><b>user_eg2.c</b></a><b>, </b>
206
<a href="../user_eg3/user_eg3.cpp"><b>user_eg3.cpp</b></a><b>, </b>
207
<a href="../libqhullcpp/qhull_interface.cpp#TOP"><b>qhull_interface.cpp</b></a></dt>
208
<dd>User-defined routines. Qhull allows the user to configure
209
the code with defined constants and specialized routines.
215
<p><!-- Navigation links --> </p>
218
<a href="http://www.qhull.org">Home page for
220
<b>Up:</b> <a href="../../html/index.htm#TOC">Qhull manual: Table of Contents</a> <br>
221
<b>Up:</b> <a href="../../html/qh-quick.htm#programs">Programs</a>
222
• <a href="../../html/qh-quick.htm#options">Options</a>
223
• <a href="../../html/qh-opto.htm#output">Output</a>
224
• <a href="../../html/qh-optf.htm#format">Formats</a>
225
• <a href="../../html/qh-optg.htm#geomview">Geomview</a>
226
• <a href="../../html/qh-optp.htm#print">Print</a>
227
• <a href="../../html/qh-optq.htm#qhull">Qhull</a>
228
• <a href="../../html/qh-optc.htm#prec">Precision</a>
229
• <a href="../../html/qh-optt.htm#trace">Trace</a><br>
230
<b>Up:</b> <a href="../../html/qh-code.htm#TOC">Qhull code: Table of Contents</a> <br>
231
<b>To:</b> <a href="#TOC">Qhull files</a><br>
232
<b>To:</b> <a href="qh-geom.htm">Geom</a> •
233
<a href="qh-globa.htm">Global</a> • <a href="qh-io.htm">Io</a>
234
• <a href="qh-mem.htm">Mem</a> • <a href="qh-merge.htm">Merge</a>
235
• <a href="qh-poly.htm">Poly</a> • <a href="qh-qhull.htm#TOC">Qhull</a>
236
• <a href="qh-set.htm">Set</a> • <a href="qh-stat.htm">Stat</a>
237
• <a href="qh-user.htm">User</a><br>
239
<p><!-- GC common information --> </p>
241
<p><a href="http://www.geom.uiuc.edu/"><img
242
src="../../html/qh--geom.gif" align="middle" width="40" height="40"></a><i>The
243
Geometry Center Home Page </i></p>
244
<p>Comments to: <a href=mailto:qhull@qhull.org>qhull@qhull.org</a>
246
Created: May 2, 1997 --- <!-- hhmts start --> Last modified: see top <!-- hhmts end --> </p>