1 | <!-- Do not edit with Front Page, it adds too many spaces -->
|
---|
2 | <html>
|
---|
3 | <head>
|
---|
4 | <meta http-equiv="Content-Type"
|
---|
5 | content="text/html; charset=iso-8859-1">
|
---|
6 | <title>poly.c, poly2.c -- polyhedron operations</title>
|
---|
7 | </head>
|
---|
8 |
|
---|
9 | <body>
|
---|
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: Table of Contents</a><br>
|
---|
24 | <b>To:</b> <a href="index.htm">Qhull functions</a>, macros, and data structures<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#TOC">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>
|
---|
30 | </p>
|
---|
31 | <hr>
|
---|
32 |
|
---|
33 | <h2>poly.c, poly2.c -- polyhedron operations</h2>
|
---|
34 | <blockquote>
|
---|
35 |
|
---|
36 | <p>Qhull uses dimension-free terminology. Qhull builds a
|
---|
37 | polyhedron in dimension <em>d. </em>A <em>polyhedron</em> is a
|
---|
38 | simplicial complex of faces with geometric information for the
|
---|
39 | top and bottom-level faces. A (<em>d-1</em>)-face is a <em>facet</em>,
|
---|
40 | a (<em>d-2</em>)-face is a <em>ridge</em>, and a <em>0</em>-face
|
---|
41 | is a <em>vertex</em>. For example in 3-d, a facet is a polygon
|
---|
42 | and a ridge is an edge. A facet is built from a ridge (the <em>base</em>)
|
---|
43 | and a vertex (the <em>apex</em>). See
|
---|
44 | <a href="../../html/index.htm#structure">Qhull's data structures</a>.</p>
|
---|
45 |
|
---|
46 | <p>Qhull's primary data structure is a polyhedron. A
|
---|
47 | polyhedron is a list of facets. Each facet has a set of
|
---|
48 | neighboring facets and a set of vertices. Each facet has a
|
---|
49 | hyperplane. For example, a tetrahedron has four facets.
|
---|
50 | If its vertices are <em>a, b, c, d</em>, and its facets
|
---|
51 | are <em>1, 2, 3, 4,</em> the tetrahedron is </p>
|
---|
52 | <blockquote>
|
---|
53 | <ul>
|
---|
54 | <li>facet 1 <ul>
|
---|
55 | <li>vertices: b c d </li>
|
---|
56 | <li>neighbors: 2 3 4 </li>
|
---|
57 | </ul>
|
---|
58 | </li>
|
---|
59 | <li>facet 2 <ul>
|
---|
60 | <li>vertices: a c d </li>
|
---|
61 | <li>neighbors: 1 3 4 </li>
|
---|
62 | </ul>
|
---|
63 | </li>
|
---|
64 | <li>facet 3 <ul>
|
---|
65 | <li>vertices: a b d </li>
|
---|
66 | <li>neighbors: 1 2 4 </li>
|
---|
67 | </ul>
|
---|
68 | </li>
|
---|
69 | <li>facet 4 <ul>
|
---|
70 | <li>vertices: a b c </li>
|
---|
71 | <li>neighbors: 1 2 3 </li>
|
---|
72 | </ul>
|
---|
73 | </li>
|
---|
74 | </ul>
|
---|
75 | </blockquote>
|
---|
76 | <p>A facet may be simplicial or non-simplicial. In 3-d, a
|
---|
77 | <i>simplicial facet</i> has three vertices and three
|
---|
78 | neighbors. A <i>nonsimplicial facet</i> has more than
|
---|
79 | three vertices and more than three neighbors. A
|
---|
80 | nonsimplicial facet has a set of ridges and a centrum. </p>
|
---|
81 | <p>
|
---|
82 | A simplicial facet has an orientation. An <i>orientation</i>
|
---|
83 | is either <i>top</i> or <i>bottom</i>.
|
---|
84 | The flag, <tt>facet->toporient,</tt>
|
---|
85 | defines the orientation of the facet's vertices. For example in 3-d,
|
---|
86 | 'top' is left-handed orientation (i.e., the vertex order follows the direction
|
---|
87 | of the left-hand fingers when the thumb is pointing away from the center).
|
---|
88 | Except for axis-parallel facets in 5-d and higher, topological orientation
|
---|
89 | determines the geometric orientation of the facet's hyperplane.
|
---|
90 |
|
---|
91 | <p>A nonsimplicial facet is due to merging two or more
|
---|
92 | facets. The facet's ridge set determine a simplicial
|
---|
93 | decomposition of the facet. Each ridge is a 1-face (i.e.,
|
---|
94 | it has two vertices and two neighboring facets). The
|
---|
95 | orientation of a ridge is determined by the order of the
|
---|
96 | neighboring facets. The flag, <tt>facet->toporient,</tt>is
|
---|
97 | ignored. </p>
|
---|
98 | <p>A nonsimplicial facet has a centrum for testing
|
---|
99 | convexity. A <i>centrum</i> is a point on the facet's
|
---|
100 | hyperplane that is near the center of the facet. Except
|
---|
101 | for large facets, it is the arithmetic average of the
|
---|
102 | facet's vertices. </p>
|
---|
103 | <p>A nonsimplicial facet is an approximation that is
|
---|
104 | defined by offsets from the facet's hyperplane. When
|
---|
105 | Qhull finishes, the <i>outer plane</i> is above all
|
---|
106 | points while the <i>inner plane</i> is below the facet's
|
---|
107 | vertices. This guarantees that any exact convex hull
|
---|
108 | passes between the inner and outer planes. The outer
|
---|
109 | plane is defined by <tt>facet->maxoutside</tt> while
|
---|
110 | the inner plane is computed from the facet's vertices.</p>
|
---|
111 |
|
---|
112 | <p>Qhull 3.1 includes triangulation of non-simplicial facets
|
---|
113 | ('<A href="../../html/qh-optq.htm#Qt">Qt</A>').
|
---|
114 | These facets,
|
---|
115 | called <i>tricoplanar</i>, share the same normal. centrum, and Voronoi center.
|
---|
116 | One facet (keepcentrum) owns these data structures.
|
---|
117 | While tricoplanar facets are more accurate than the simplicial facets from
|
---|
118 | joggled input, they
|
---|
119 | may have zero area or flipped orientation.
|
---|
120 |
|
---|
121 | </blockquote>
|
---|
122 | <p><b>Copyright © 1995-2012 C.B. Barber</b></p>
|
---|
123 | <hr>
|
---|
124 | <p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a>
|
---|
125 | <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a>
|
---|
126 | • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a>
|
---|
127 | • <a href="qh-merge.htm#TOC">Merge</a> • <b>Poly</b>
|
---|
128 | • <a href="qh-qhull.htm#TOC">Qhull</a> • <a href="qh-set.htm#TOC">Set</a>
|
---|
129 | • <a href="qh-stat.htm#TOC">Stat</a> • <a href="qh-user.htm#TOC">User</a>
|
---|
130 | </p>
|
---|
131 | <h3>Index to <a href="poly.c">poly.c</a>,
|
---|
132 | <a href="poly2.c">poly2.c</a>, <a href="poly.h">poly.h</a>,
|
---|
133 | and <a href="libqhull.h">libqhull.h</a></h3>
|
---|
134 | <ul>
|
---|
135 | <li><a href="#ptype">Data types and global
|
---|
136 | lists for polyhedrons</a> </li>
|
---|
137 | <li><a href="#pconst">poly.h constants</a> </li>
|
---|
138 | <li><a href="#pgall">Global FORALL macros</a> </li>
|
---|
139 | <li><a href="#pall">FORALL macros</a> </li>
|
---|
140 | <li><a href="#peach">FOREACH macros</a> </li>
|
---|
141 | <li><a href="#pieach">Indexed FOREACH macros</a> </li>
|
---|
142 | <li><a href="#pmacro">Other macros for polyhedrons</a><p> </li>
|
---|
143 | <li><a href="#plist">Facetlist functions</a> </li>
|
---|
144 | <li><a href="#pfacet">Facet functions</a> </li>
|
---|
145 | <li><a href="#pvertex">Vertex, ridge, and point
|
---|
146 | functions</a> </li>
|
---|
147 | <li><a href="#phash">Hashtable functions</a> </li>
|
---|
148 | <li><a href="#pnew">Allocation and deallocation
|
---|
149 | functions</a> </li>
|
---|
150 | <li><a href="#pcheck">Check functions</a> </li>
|
---|
151 | </ul>
|
---|
152 | <h3><a href="qh-poly.htm#TOC">»</a><a name="ptype">Data
|
---|
153 | types and global lists for polyhedrons</a></h3>
|
---|
154 | <ul>
|
---|
155 | <li><a href="libqhull.h#facetT">facetT</a> defines a
|
---|
156 | facet </li>
|
---|
157 | <li><a href="libqhull.h#ridgeT">ridgeT</a> defines a
|
---|
158 | ridge </li>
|
---|
159 | <li><a href="libqhull.h#vertexT">vertexT</a> defines a
|
---|
160 | vertex </li>
|
---|
161 | <li><a href="libqhull.h#qh-lists">qh facet and vertex
|
---|
162 | lists</a> lists of facets and vertices </li>
|
---|
163 | <li><a href="libqhull.h#qh-set">qh global sets</a>
|
---|
164 | global sets for merging, hashing, input, etc. </li>
|
---|
165 | </ul>
|
---|
166 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pconst">poly.h constants</a></h3>
|
---|
167 | <ul>
|
---|
168 | <li><a href="poly.h#ALGORITHMfault">ALGORITHMfault</a>
|
---|
169 | flag to not report errors in qh_checkconvex() </li>
|
---|
170 | <li><a href="poly.h#DATAfault">DATAfault</a> flag to
|
---|
171 | report errors in qh_checkconvex() </li>
|
---|
172 | <li><a href="poly.h#DUPLICATEridge">DUPLICATEridge</a>
|
---|
173 | special value for facet->neighbor to indicate
|
---|
174 | a duplicate ridge </li>
|
---|
175 | <li><a href="poly.h#MERGEridge">MERGEridge</a>
|
---|
176 | special value for facet->neighbor to indicate
|
---|
177 | a merged ridge </li>
|
---|
178 | </ul>
|
---|
179 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pgall">Global FORALL
|
---|
180 | macros</a></h3>
|
---|
181 | <ul>
|
---|
182 | <li><a href="libqhull.h#FORALLfacets">FORALLfacets</a>
|
---|
183 | assign 'facet' to each facet in qh.facet_list </li>
|
---|
184 | <li><a href="poly.h#FORALLnew_facets">FORALLnew_facets</a>
|
---|
185 | assign 'facet' to each facet in qh.newfacet_list </li>
|
---|
186 | <li><a href="poly.h#FORALLvisible_facets">FORALLvisible_facets</a>
|
---|
187 | assign 'visible' to each visible facet in
|
---|
188 | qh.visible_list </li>
|
---|
189 | <li><a href="libqhull.h#FORALLpoints">FORALLpoints</a>
|
---|
190 | assign 'point' to each point in qh.first_point,
|
---|
191 | qh.num_points </li>
|
---|
192 | <li><a href="libqhull.h#FORALLvertices">FORALLvertices</a>
|
---|
193 | assign 'vertex' to each vertex in qh.vertex_list </li>
|
---|
194 | </ul>
|
---|
195 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pall">FORALL macros</a></h3>
|
---|
196 | <ul>
|
---|
197 | <li><a href="poly.h#FORALLfacet_">FORALLfacet_</a>
|
---|
198 | assign 'facet' to each facet in facetlist </li>
|
---|
199 | <li><a href="libqhull.h#FORALLpoint_">FORALLpoint_</a>
|
---|
200 | assign 'point' to each point in points array</li>
|
---|
201 | <li><a href="poly.h#FORALLsame_">FORALLsame_</a>
|
---|
202 | assign 'same' to each facet in samecycle</li>
|
---|
203 | <li><a href="poly.h#FORALLsame_cycle_">FORALLsame_cycle_</a>
|
---|
204 | assign 'same' to each facet in samecycle</li>
|
---|
205 | <li><a href="poly.h#FORALLvertex_">FORALLvertex_</a>
|
---|
206 | assign 'vertex' to each vertex in vertexlist </li>
|
---|
207 | </ul>
|
---|
208 | <h3><a href="qh-poly.htm#TOC">»</a><a name="peach">FOREACH macros</a></h3>
|
---|
209 | <ul>
|
---|
210 | <li><a href="libqhull.h#FOREACHfacet_">FOREACHfacet_</a>
|
---|
211 | assign 'facet' to each facet in facets </li>
|
---|
212 | <li><a href="libqhull.h#FOREACHneighbor_">FOREACHneighbor_</a>
|
---|
213 | assign 'neighbor' to each facet in
|
---|
214 | facet->neighbors or vertex->neighbors</li>
|
---|
215 | <li><a href="poly.h#FOREACHnewfacet_">FOREACHnewfacet_</a>
|
---|
216 | assign 'newfacet' to each facet in facet set </li>
|
---|
217 | <li><a href="libqhull.h#FOREACHpoint_">FOREACHpoint_</a>
|
---|
218 | assign 'point' to each point in points set </li>
|
---|
219 | <li><a href="libqhull.h#FOREACHridge_">FOREACHridge_</a>
|
---|
220 | assign 'ridge' to each ridge in ridge set </li>
|
---|
221 | <li><a href="libqhull.h#FOREACHvertex_">FOREACHvertex_</a>
|
---|
222 | assign 'vertex' to each vertex in vertex set </li>
|
---|
223 | <li><a href="poly.h#FOREACHvertexA_">FOREACHvertexA_</a>
|
---|
224 | assign 'vertexA' to each vertex in vertex set</li>
|
---|
225 | <li><a href="poly.h#FOREACHvisible_">FOREACHvisible_</a>
|
---|
226 | assign 'visible' to each facet in facet set </li>
|
---|
227 | </ul>
|
---|
228 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pieach">Indexed
|
---|
229 | FOREACH macros</a></h3>
|
---|
230 | <ul>
|
---|
231 | <li><a href="libqhull.h#FOREACHfacet_i_">FOREACHfacet_i_</a>
|
---|
232 | assign 'facet' and 'facet_i' to each facet in
|
---|
233 | facet set </li>
|
---|
234 | <li><a href="libqhull.h#FOREACHneighbor_i_">FOREACHneighbor_i_</a>
|
---|
235 | assign 'neighbor' and 'neighbor_i' to each facet
|
---|
236 | in facet->neighbors or vertex->neighbors</li>
|
---|
237 | <li><a href="libqhull.h#FOREACHpoint_i_">FOREACHpoint_i_</a>
|
---|
238 | assign 'point' and 'point_i' to each point in
|
---|
239 | points set </li>
|
---|
240 | <li><a href="libqhull.h#FOREACHridge_i_">FOREACHridge_i_</a>
|
---|
241 | assign 'ridge' and 'ridge_i' to each ridge in
|
---|
242 | ridges set </li>
|
---|
243 | <li><a href="libqhull.h#FOREACHvertex_i_">FOREACHvertex_i_</a>
|
---|
244 | assign 'vertex' and 'vertex_i' to each vertex in
|
---|
245 | vertices set </li>
|
---|
246 | <li><a href="poly.h#FOREACHvertexreverse12_">FOREACHvertexreverse12_</a>
|
---|
247 | assign 'vertex' to each vertex in vertex set;
|
---|
248 | reverse the order of first two vertices </li>
|
---|
249 | </ul>
|
---|
250 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pmacro">Other macros for polyhedrons</a></h3>
|
---|
251 | <ul>
|
---|
252 | <li><a href="libqhull.h#getid_">getid_</a> return ID for
|
---|
253 | a facet, ridge, or vertex </li>
|
---|
254 | <li><a href="libqhull.h#otherfacet_">otherfacet_</a>
|
---|
255 | return neighboring facet for a ridge in a facet </li>
|
---|
256 | </ul>
|
---|
257 | <h3><a href="qh-poly.htm#TOC">»</a><a name="plist">Facetlist
|
---|
258 | functions</a></h3>
|
---|
259 | <ul>
|
---|
260 | <li><a href="poly.c#appendfacet">qh_appendfacet</a>
|
---|
261 | appends facet to end of qh.facet_list</li>
|
---|
262 | <li><a href="poly.c#attachnewfacets">qh_attachnewfacets</a>
|
---|
263 | attach new facets in qh.newfacet_list to the
|
---|
264 | horizon </li>
|
---|
265 | <li><a href="poly2.c#findgood">qh_findgood</a>
|
---|
266 | identify good facets for qh.PRINTgood </li>
|
---|
267 | <li><a href="poly2.c#findgood_all">qh_findgood_all</a>
|
---|
268 | identify more good facets for qh.PRINTgood </li>
|
---|
269 | <li><a href="poly2.c#furthestnext">qh_furthestnext</a>
|
---|
270 | move facet with furthest of furthest points to
|
---|
271 | facet_next </li>
|
---|
272 | <li><a href="poly2.c#initialhull">qh_initialhull</a>
|
---|
273 | construct the initial hull as a simplex of
|
---|
274 | vertices </li>
|
---|
275 | <li><a href="poly2.c#nearcoplanar">qh_nearcoplanar</a>
|
---|
276 | remove near-inside points from coplanar sets</li>
|
---|
277 | <li><a href="poly2.c#prependfacet">qh_prependfacet</a>
|
---|
278 | prepends facet to start of facetlist </li>
|
---|
279 | <li><a href="user.c#printfacetlist">qh_printfacetlist</a>
|
---|
280 | print facets in a facetlist</li>
|
---|
281 | <li><a href="poly2.c#printlists">qh_printlists</a>
|
---|
282 | print out facet list for debugging </li>
|
---|
283 | <li><a href="poly.c#removefacet">qh_removefacet</a>
|
---|
284 | unlinks facet from qh.facet_list</li>
|
---|
285 | <li><a href="poly2.c#resetlists">qh_resetlists</a>
|
---|
286 | reset qh.newvertex_list, qh.newfacet_list, and
|
---|
287 | qh.visible_list </li>
|
---|
288 | </ul>
|
---|
289 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pfacet">Facet
|
---|
290 | functions</a></h3>
|
---|
291 | <ul>
|
---|
292 | <li><a href="poly2.c#createsimplex">qh_createsimplex</a>
|
---|
293 | create a simplex of facets from a set of vertices
|
---|
294 | </li>
|
---|
295 | <li><a href="poly2.c#findbestlower">qh_findbestlower</a> find best
|
---|
296 | non-upper, non-flipped facet for point at upperfacet</li>
|
---|
297 | <li><a href="poly2.c#furthestout">qh_furthestout</a>
|
---|
298 | make furthest outside point the last point of a
|
---|
299 | facet's outside set </li>
|
---|
300 | <li><a href="poly.c#makenew_nonsimplicial">qh_makenew_nonsimplicial</a>
|
---|
301 | make new facets from ridges of visible facets </li>
|
---|
302 | <li><a href="poly.c#makenew_simplicial">qh_makenew_simplicial</a>
|
---|
303 | make new facets for horizon neighbors </li>
|
---|
304 | <li><a href="poly.c#makenewfacet">qh_makenewfacet</a>
|
---|
305 | create a facet from vertices and apex </li>
|
---|
306 | <li><a href="poly2.c#makenewfacets">qh_makenewfacets</a>
|
---|
307 | make new facets from vertex, horizon facets, and
|
---|
308 | visible facets </li>
|
---|
309 | <li><a href="poly.c#makenewplanes">qh_makenewplanes</a>
|
---|
310 | make new hyperplanes for facets </li>
|
---|
311 | <li><a href="poly2.c#outcoplanar">qh_outcoplanar</a>
|
---|
312 | move points from outside set to coplanar set </li>
|
---|
313 | <li><a href="poly2.c#setvoronoi_all">qh_setvoronoi_all</a>
|
---|
314 | compute Voronoi centers for all facets </li>
|
---|
315 | <li><a href="poly2.c#triangulate">qh_triangulate</a>
|
---|
316 | triangulate non-simplicial facets</li>
|
---|
317 | <li><a href="poly2.c#triangulate_facet">qh_triangulate_facet</a>
|
---|
318 | triangulate a non-simplicial facet</li>
|
---|
319 | <li><a href="poly2.c#triangulate_link">qh_triangulate_link</a>
|
---|
320 | link facets together from qh_triangulate</li>
|
---|
321 | <li><a href="poly2.c#triangulate_mirror">qh_triangulate_mirror</a>
|
---|
322 | delete mirrored facets from qh_triangulate</li>
|
---|
323 | <li><a href="poly2.c#triangulate_null">qh_triangulate_null</a>
|
---|
324 | delete null facet from qh_triangulate</li>
|
---|
325 | </ul>
|
---|
326 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pvertex">Vertex,
|
---|
327 | ridge, and point functions</a></h3>
|
---|
328 | <ul>
|
---|
329 | <li><a href="poly.c#appendvertex">qh_appendvertex</a>
|
---|
330 | append vertex to end of qh.vertex_list, </li>
|
---|
331 | <li><a href="io.c#detvridge">qh_detvridge</a> determine Voronoi
|
---|
332 | ridge for an input site
|
---|
333 | <li><a href="io.c#detvridge3">qh_detvridge3</a> determine 3-d Voronoi
|
---|
334 | ridge for an input site
|
---|
335 | <li><a href="poly2.c#facet3vertex">qh_facet3vertex</a>
|
---|
336 | return an oriented vertex set for a 3-d facet </li>
|
---|
337 | <li><a href="poly.c#facetintersect">qh_facetintersect</a>
|
---|
338 | return intersection of simplicial facets </li>
|
---|
339 | <li><a href="poly2.c#initialvertices">qh_initialvertices</a>
|
---|
340 | return non-singular set of initial vertices </li>
|
---|
341 | <li><a href="poly2.c#isvertex">qh_isvertex</a> true
|
---|
342 | if point is in a vertex set </li>
|
---|
343 | <li><a href="poly2.c#nearvertex">qh_nearvertex</a>
|
---|
344 | return nearest vertex to point </li>
|
---|
345 | <li><a href="poly2.c#nextridge3d">qh_nextridge3d</a>
|
---|
346 | iterate over each ridge and vertex for a 3-d
|
---|
347 | facet </li>
|
---|
348 | <li><a href="poly2.c#point">qh_point</a> return point
|
---|
349 | for a point ID </li>
|
---|
350 | <li><a href="poly2.c#pointfacet">qh_pointfacet</a>
|
---|
351 | return temporary set of facets indexed by point
|
---|
352 | ID </li>
|
---|
353 | <li><a href="poly.c#pointid">qh_pointid</a> return ID
|
---|
354 | for a point</li>
|
---|
355 | <li><a href="poly2.c#pointvertex">qh_pointvertex</a>
|
---|
356 | return temporary set of vertices indexed by point
|
---|
357 | ID </li>
|
---|
358 | <li><a href="poly.c#removevertex">qh_removevertex</a>
|
---|
359 | unlink vertex from qh.vertex_list, </li>
|
---|
360 | <li><a href="poly.c#updatevertices">qh_updatevertices</a>
|
---|
361 | update vertex neighbors and delete interior
|
---|
362 | vertices </li>
|
---|
363 | <li><a href="poly2.c#vertexintersect">qh_vertexintersect</a>
|
---|
364 | intersect two vertex sets </li>
|
---|
365 | <li><a href="poly2.c#vertexintersect_new">qh_vertexintersect_new</a>
|
---|
366 | return intersection of two vertex sets </li>
|
---|
367 | <li><a href="poly2.c#vertexneighbors">qh_vertexneighbors</a>
|
---|
368 | for each vertex in hull, determine facet
|
---|
369 | neighbors </li>
|
---|
370 | <li><a href="poly2.c#vertexsubset">qh_vertexsubset</a>
|
---|
371 | returns True if vertexsetA is a subset of
|
---|
372 | vertexsetB </li>
|
---|
373 | </ul>
|
---|
374 | <h3><a href="qh-poly.htm#TOC">»</a><a name="phash">Hashtable functions</a></h3>
|
---|
375 | <ul>
|
---|
376 | <li><a href="poly2.c#addhash">qh_addhash</a> add hash
|
---|
377 | element to linear hash table</li>
|
---|
378 | <li><a href="poly.c#gethash">qh_gethash</a> return
|
---|
379 | hash value for a set</li>
|
---|
380 | <li><a href="poly2.c#matchduplicates">qh_matchduplicates</a>
|
---|
381 | match duplicate ridges in hash table </li>
|
---|
382 | <li><a href="poly.c#matchneighbor">qh_matchneighbor</a>
|
---|
383 | try to match subridge of new facet with a
|
---|
384 | neighbor </li>
|
---|
385 | <li><a href="poly.c#matchnewfacets">qh_matchnewfacets</a>
|
---|
386 | match new facets with their new facet neighbors </li>
|
---|
387 | <li><a href="poly.c#matchvertices">qh_matchvertices</a>
|
---|
388 | tests whether a facet and hash entry match at a
|
---|
389 | ridge </li>
|
---|
390 | <li><a href="poly2.c#newhashtable">qh_newhashtable</a>
|
---|
391 | allocate a new qh.hash_table </li>
|
---|
392 | <li><a href="poly2.c#printhashtable">qh_printhashtable</a>
|
---|
393 | print hash table </li>
|
---|
394 | </ul>
|
---|
395 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pnew">Allocation and
|
---|
396 | deallocation functions</a></h3>
|
---|
397 | <ul>
|
---|
398 | <li><a href="poly2.c#clearcenters">qh_clearcenters</a>
|
---|
399 | clear old data from facet->center </li>
|
---|
400 | <li><a href="poly.c#deletevisible">qh_deletevisible</a>
|
---|
401 | delete visible facets and vertices </li>
|
---|
402 | <li><a href="poly.c#delfacet">qh_delfacet</a> free up
|
---|
403 | the memory occupied by a facet </li>
|
---|
404 | <li><a href="poly2.c#delridge">qh_delridge</a> delete
|
---|
405 | ridge</li>
|
---|
406 | <li><a href="poly2.c#delvertex">qh_delvertex</a>
|
---|
407 | delete vertex </li>
|
---|
408 | <li><a href="poly.c#newfacet">qh_newfacet</a> create
|
---|
409 | and allocate space for a facet </li>
|
---|
410 | <li><a href="poly.c#newridge">qh_newridge</a> create
|
---|
411 | and allocate space for a ridge </li>
|
---|
412 | <li><a href="poly2.c#newvertex">qh_newvertex</a>
|
---|
413 | create and allocate space for a vertex </li>
|
---|
414 | </ul>
|
---|
415 | <h3><a href="qh-poly.htm#TOC">»</a><a name="pcheck">Check
|
---|
416 | functions</a></h3>
|
---|
417 | <ul>
|
---|
418 | <li><a href="poly2.c#check_bestdist">qh_check_bestdist</a>
|
---|
419 | check that points are not outside of facets </li>
|
---|
420 | <li><a href="poly2.c#check_maxout">qh_check_maxout</a>
|
---|
421 | updates qh.max_outside and checks all points
|
---|
422 | against bestfacet </li>
|
---|
423 | <li><a href="poly2.c#check_output">qh_check_output</a>
|
---|
424 | check topological and geometric output</li>
|
---|
425 | <li><a href="poly2.c#check_point">qh_check_point</a>
|
---|
426 | check that point is not outside of facet </li>
|
---|
427 | <li><a href="poly2.c#check_points">qh_check_points</a>
|
---|
428 | check that all points are inside all facets </li>
|
---|
429 | <li><a href="poly2.c#checkconvex">qh_checkconvex</a>
|
---|
430 | check that each ridge in facetlist is convex </li>
|
---|
431 | <li><a href="poly2.c#checkfacet">qh_checkfacet</a>
|
---|
432 | check for consistency errors in facet </li>
|
---|
433 | <li><a href="poly.c#checkflipped">qh_checkflipped</a>
|
---|
434 | check facet orientation to the interior point </li>
|
---|
435 | <li><a href="poly2.c#checkflipped_all">qh_checkflipped_all</a>
|
---|
436 | check facet orientation for a facet list </li>
|
---|
437 | <li><a href="poly2.c#checkpolygon">qh_checkpolygon</a>
|
---|
438 | check topological structure </li>
|
---|
439 | <li><a href="poly2.c#checkvertex">qh_checkvertex</a>
|
---|
440 | check vertex for consistency </li>
|
---|
441 | <li><a href="poly2.c#infiniteloop">qh_infiniteloop</a>
|
---|
442 | report error for a loop of facets </li>
|
---|
443 | <li><a href="poly2.c#printlists">qh_printlists</a>
|
---|
444 | print out facet list for debugging </li>
|
---|
445 | </ul>
|
---|
446 |
|
---|
447 |
|
---|
448 | <p><!-- Navigation links --> </p>
|
---|
449 | <hr>
|
---|
450 | <p><b>Up:</b>
|
---|
451 | <a href="http://www.qhull.org">Home page for
|
---|
452 | Qhull</a> <br>
|
---|
453 | <b>Up:</b> <a href="../../html/index.htm#TOC">Qhull manual: Table of Contents</a> <br>
|
---|
454 | <b>Up:</b> <a href="../../html/qh-quick.htm#programs">Programs</a>
|
---|
455 | • <a href="../../html/qh-quick.htm#options">Options</a>
|
---|
456 | • <a href="../../html/qh-opto.htm#output">Output</a>
|
---|
457 | • <a href="../../html/qh-optf.htm#format">Formats</a>
|
---|
458 | • <a href="../../html/qh-optg.htm#geomview">Geomview</a>
|
---|
459 | • <a href="../../html/qh-optp.htm#print">Print</a>
|
---|
460 | • <a href="../../html/qh-optq.htm#qhull">Qhull</a>
|
---|
461 | • <a href="../../html/qh-optc.htm#prec">Precision</a>
|
---|
462 | • <a href="../../html/qh-optt.htm#trace">Trace</a><br>
|
---|
463 | <b>Up:</b> <a href="../../html/qh-code.htm#TOC">Qhull code: Table of Contents</a> <br>
|
---|
464 | <b>To:</b> <a href="index.htm">Qhull functions</a>, macros, and data structures<br>
|
---|
465 | <b>To:</b> <a href="qh-geom.htm">Geom</a> •
|
---|
466 | <a href="qh-globa.htm">Global</a> • <a href="qh-io.htm">Io</a>
|
---|
467 | • <a href="qh-mem.htm">Mem</a> • <a href="qh-merge.htm">Merge</a>
|
---|
468 | • <a href="qh-poly.htm">Poly</a> • <a href="qh-qhull.htm#TOC">Qhull</a>
|
---|
469 | • <a href="qh-set.htm">Set</a> • <a href="qh-stat.htm">Stat</a>
|
---|
470 | • <a href="qh-user.htm">User</a><br>
|
---|
471 | </p>
|
---|
472 | <p><!-- GC common information --> </p>
|
---|
473 | <hr>
|
---|
474 | <p><a href="http://www.geom.uiuc.edu/"><img
|
---|
475 | src="../../html/qh--geom.gif" align="middle" width="40" height="40"></a><i>The
|
---|
476 | Geometry Center Home Page </i></p>
|
---|
477 | <p>Comments to: <a href=mailto:qhull@qhull.org>qhull@qhull.org</a>
|
---|
478 | </a><br>
|
---|
479 | Created: May 2, 1997 --- <!-- hhmts start --> Last modified: see top <!-- hhmts end --> </p>
|
---|
480 | </body>
|
---|
481 | </html>
|
---|