From 6fb83d1567d97604b736efa97005581a4904e221 Mon Sep 17 00:00:00 2001 From: Brad Barber <bradb@shore.net> Date: Tue, 12 Jan 2010 21:30:54 -0500 Subject: [PATCH] - All projects compile with warnings enabled - Add libqhull5 to Readme, Announce, download - Reviewed #pragma - Reviewed FIXUP and assigned QH tags - Replaced 'up' glyphs with » - Moved cpp questions to http://www.qhull.org/html/qh-code.htm#questions-cpp - Moved suggestions to http://www.qhull.org/html/qh-code.htm#enhance - Moved documentation requests to http://www.qhull.org/html/qh-code.htm#enhance --- Announce.txt | 2 + README.txt | 1 + cpp/Qhull.cpp | 2 + cpp/QhullFacet.cpp | 9 +- cpp/QhullPoint.cpp | 2 + cpp/QhullRidge.cpp | 3 +- cpp/QhullVertex.cpp | 4 +- cpp/UsingLibQhull.cpp | 2 + html/index.htm | 38 +++---- html/qconvex.htm | 16 +-- html/qdelau_f.htm | 16 +-- html/qdelaun.htm | 16 +-- html/qh-code.htm | 168 ++++++++++++++++++++++------ html/qh-eg.htm | 118 +++++++++---------- html/qh-faq.htm | 78 ++++++------- html/qh-get.htm | 19 ++-- html/qh-impre.htm | 22 ++-- html/qh-optc.htm | 22 ++-- html/qh-optf.htm | 56 +++++----- html/qh-optg.htm | 26 ++--- html/qh-opto.htm | 16 +-- html/qh-optp.htm | 22 ++-- html/qh-optq.htm | 68 +++++------ html/qh-optt.htm | 32 +++--- html/qh-quick.htm | 4 +- html/qhalf.htm | 16 +-- html/qhull.htm | 10 +- html/qvoron_f.htm | 16 +-- html/qvoronoi.htm | 16 +-- html/rbox.htm | 10 +- project/libqhull/libqhull.pro | 6 +- project/libqhullcpp/libqhullcpp.pro | 6 +- project/libqhullp/libqhullp.pro | 6 +- project/qconvex/qconvex.pro | 5 +- project/qdelaunay/qdelaunay.pro | 5 +- project/qhalf/qhalf.pro | 5 +- project/qhull/qhull.pro | 5 +- project/qhulltest/qhulltest.pro | 3 + project/qvoronoi/qvoronoi.pro | 5 +- project/rbox/rbox.pro | 5 +- project/user_eg/user_eg.pro | 5 +- project/user_eg2/user_eg2.pro | 5 +- project/user_eg3/user_eg3.pro | 3 + src/Changes.txt | 99 ++-------------- src/index.htm | 2 +- src/qh-geom.htm | 16 +-- src/qh-globa.htm | 6 +- src/qh-io.htm | 16 +-- src/qh-mem.htm | 10 +- src/qh-merge.htm | 22 ++-- src/qh-poly.htm | 28 ++--- src/qh-qhull.htm | 18 +-- src/qh-set.htm | 26 ++--- src/qh-stat.htm | 10 +- src/qh-user.htm | 22 ++-- 55 files changed, 604 insertions(+), 565 deletions(-) diff --git a/Announce.txt b/Announce.txt index 0d6193f..816a51a 100644 --- a/Announce.txt +++ b/Announce.txt @@ -3,6 +3,7 @@ http://www.qhull.org git@gitorious.org:qhull/qhull.git + http://packages.debian.org/sid/libqhull5 http://www6.uniovi.es/ftp/pub/mirrors/geom.umn.edu/software/ghindex.html http://www.geomview.org http://www.geom.uiuc.edu @@ -21,6 +22,7 @@ You can view the results in 2-d, 3-d and 4-d with Geomview. To download Qhull: http://www.qhull.org/download git@gitorious.org:qhull/qhull.git + http://packages.debian.org/sid/libqhull5 Download qhull-96.ps for: diff --git a/README.txt b/README.txt index ed2905c..4a4809c 100644 --- a/README.txt +++ b/README.txt @@ -11,6 +11,7 @@ Convex hull, Delaunay triangulation, Voronoi diagrams, Halfspace intersection Available from: <http://www.qhull.org> <git@gitorious.org:qhull/qhull.git> + <http://packages.debian.org/sid/libqhull5> News and a paper: <http://www.qhull.org/news> diff --git a/cpp/Qhull.cpp b/cpp/Qhull.cpp index 23d9355..410e4f1 100644 --- a/cpp/Qhull.cpp +++ b/cpp/Qhull.cpp @@ -424,6 +424,8 @@ maybeThrowQhullMessage(int exitCode) void Qhull:: maybeThrowQhullMessage(int exitCode, int noThrow) throw() { + QHULL_UNUSED(noThrow); + if(qhull_status==qh_ERRnone){ qhull_status= exitCode; } diff --git a/cpp/QhullFacet.cpp b/cpp/QhullFacet.cpp index c6d38bc..6c546f4 100644 --- a/cpp/QhullFacet.cpp +++ b/cpp/QhullFacet.cpp @@ -33,7 +33,14 @@ namespace orgQhull { #//class statics facetT QhullFacet:: -s_empty_facet= {}; + s_empty_facet= {0,0,0,0,{0}, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0}; #//GetSet diff --git a/cpp/QhullPoint.cpp b/cpp/QhullPoint.cpp index 88802a4..ee7455b 100644 --- a/cpp/QhullPoint.cpp +++ b/cpp/QhullPoint.cpp @@ -23,6 +23,8 @@ namespace orgQhull { int QhullPoint:: id(int qhRunId, int dimension, const coordT *c) { + QHULL_UNUSED(dimension); + if(UsingLibQhull::hasPoints()){ if(qhRunId==UsingLibQhull::NOqhRunId){ const coordT *pointsEnd; diff --git a/cpp/QhullRidge.cpp b/cpp/QhullRidge.cpp index 3f3ba49..1bcde13 100644 --- a/cpp/QhullRidge.cpp +++ b/cpp/QhullRidge.cpp @@ -21,7 +21,8 @@ namespace orgQhull { #//class statics ridgeT QhullRidge:: -s_empty_ridge= {}; +s_empty_ridge= {0,0,0,0,0, + 0,0}; #//Constructor, destructor, etc. diff --git a/cpp/QhullVertex.cpp b/cpp/QhullVertex.cpp index 59a98c2..d235618 100644 --- a/cpp/QhullVertex.cpp +++ b/cpp/QhullVertex.cpp @@ -24,7 +24,9 @@ namespace orgQhull { #//class statics vertexT QhullVertex:: -s_empty_vertex= {}; +s_empty_vertex= {0,0,0,0,0, + 0,0,0,0,0, + 0,0}; #//ForEach QhullFacetSet QhullVertex:: diff --git a/cpp/UsingLibQhull.cpp b/cpp/UsingLibQhull.cpp index 446ce75..f8c5a47 100644 --- a/cpp/UsingLibQhull.cpp +++ b/cpp/UsingLibQhull.cpp @@ -110,6 +110,8 @@ UsingLibQhull(Qhull *q, int noThrow) : my_qhull(0) // Fail by default , qh_exitcode(0) { + QHULL_UNUSED(noThrow); + QhullQh *qhullqh= q->qhullQh(); if(s_using_libqhull){ QhullError e(10050, "Qhull error: UsingLibQhull already in use"); diff --git a/html/index.htm b/html/index.htm index 4919b90..7bda7ef 100644 --- a/html/index.htm +++ b/html/index.htm @@ -90,7 +90,7 @@ reports the maximum outer and inner plane. <hr> -<h2><a href="#TOP">»</a><a name="TOC">Qhull manual: Table of +<h2><a href="#TOP">»</a><a name="TOC">Qhull manual: Table of Contents </a></h2> <ul> @@ -191,7 +191,7 @@ Contents </a></h2> <li><a href="#ref">References</a></li> <li><a href="#acknowledge">Acknowledgments</a></li> </ul> -<h2><a href="#TOC">»</a><a name="when">When to use Qhull</a></h2> +<h2><a href="#TOC">»</a><a name="when">When to use Qhull</a></h2> <blockquote> <p>Qhull constructs convex hulls, Delaunay triangulations, @@ -291,11 +291,11 @@ add constraints by adding additional points to the triangulation.</p> objects. Use <tt>qdelaunay</tt> to subdivide a convex object.</p> </blockquote> -<h2><a href="#TOC">»</a><a name="description">Description of +<h2><a href="#TOC">»</a><a name="description">Description of Qhull </a></h2> <blockquote> -<h3><a href="#TOC">»</a><a name="definition">definition</a></h3> +<h3><a href="#TOC">»</a><a name="definition">definition</a></h3> <blockquote> <p>The <i>convex hull</i> of a point set <i>P</i> is the smallest @@ -320,7 +320,7 @@ Voronoi diagram of a set of points. It may be used for the intersection of halfspaces. </p> </blockquote> -<h3><a href="#TOC">»</a><a name="input">input format</a></h3> +<h3><a href="#TOC">»</a><a name="input">input format</a></h3> <blockquote> <p>The input data on <tt>stdin</tt> consists of:</p> @@ -360,7 +360,7 @@ and line breaks are ignored. Error reporting is better if there is one point per line.</p> </blockquote> -<h3><a href="#TOC">»</a><a name="option">option format</a></h3> +<h3><a href="#TOC">»</a><a name="option">option format</a></h3> <blockquote> <p>Use options to specify the output formats and control @@ -420,7 +420,7 @@ try out different options. In Windows 95, use a DOS window with <tt>doskey</tt> and a window scroller (e.g., <tt>peruse</tt>). </p> </blockquote> -<h3><a href="#TOC">»</a><a name="output">output format</a></h3> +<h3><a href="#TOC">»</a><a name="output">output format</a></h3> <blockquote> <p>To write the results to a file, use I/O redirection or '<a @@ -446,7 +446,7 @@ href="qh-opto.htm#s">s</a>') go to <tt>stderr</tt>. Unless redirected, <tt>stderr</tt> is the console.</p> </blockquote> -<h3><a href="#TOC">»</a><a name="algorithm">algorithm</a></h3> +<h3><a href="#TOC">»</a><a name="algorithm">algorithm</a></h3> <blockquote> <p>Qhull implements the Quickhull algorithm for convex hull @@ -463,7 +463,7 @@ terms of the number of extreme points), reduced space requirements, and floating-point error handling. </p> </blockquote> -<h3><a href="#TOC">»</a><a name="structure">data structures</a></h3> +<h3><a href="#TOC">»</a><a name="structure">data structures</a></h3> <blockquote> <p>Qhull produces the following data structures for dimension <i>d</i>: @@ -516,13 +516,13 @@ href="../src/qh-poly.htm">polyhedron operations</a> for further design documentation. </p> </blockquote> -<h3><a href="#TOC">»</a>Imprecision in Qhull</h3> +<h3><a href="#TOC">»</a>Imprecision in Qhull</h3> <blockquote> <p>See <a href="qh-impre.htm">Imprecision in Qhull</a>.</p> </blockquote> -<h3><a href="#TOC">»</a><a name="geomview">Geomview, Qhull's +<h3><a href="#TOC">»</a><a name="geomview">Geomview, Qhull's graphical viewer</a></h3> <blockquote> @@ -537,7 +537,7 @@ many features for viewing mathematical objects. You may need to ftp <tt>ndview</tt> from the <tt>newpieces</tt> directory. </p> </blockquote> -<h3><a href="#TOC">»</a>Description of Qhull examples</h3> +<h3><a href="#TOC">»</a>Description of Qhull examples</h3> <blockquote> <p>See <a href="qh-eg.htm">Examples</a>. Some of the examples @@ -547,19 +547,19 @@ href="http://www.geom.uiuc.edu/graphics/pix/Special_Topics/Computational_Geometr </blockquote> </blockquote> -<h2><a href="#TOC">»</a>Options for using Qhull </h2> +<h2><a href="#TOC">»</a>Options for using Qhull </h2> <blockquote> <p>See <a href="qh-quick.htm#options">Options</a>.</p> </blockquote> -<h2><a href="#TOC">»</a>Qhull internals </h2> +<h2><a href="#TOC">»</a>Qhull internals </h2> <blockquote> <p>See <a href="qh-code.htm">Internals</a>.</p> </blockquote> -<h2><a href="#TOC">»</a><a name="bugs">What to do if something +<h2><a href="#TOC">»</a><a name="bugs">What to do if something goes wrong</a></h2> <blockquote> @@ -614,7 +614,7 @@ messages generated by Qhull. This allows me to see the error for myself. Qhull is maintained part-time. </p> </blockquote> -<h2><a href="#TOC">»</a><a name="email">Email</a></h2> +<h2><a href="#TOC">»</a><a name="email">Email</a></h2> <blockquote> <p>Please send correspondence to Brad Barber at <a href=mailto:qhull@qhull.org>qhull@qhull.org</a> @@ -632,7 +632,7 @@ sci.math.num-analysis. For Qhull news look at <a href="http://www.qhull.org/news">qhull-news.html</a>.</p> </blockquote> -<h2><a href="#TOC">»</a><a name="authors">Authors</a></h2> +<h2><a href="#TOC">»</a><a name="authors">Authors</a></h2> <blockquote> <pre> @@ -641,7 +641,7 @@ href="http://www.qhull.org/news">qhull-news.html</a>.</p> </pre> </blockquote> -<h2><a href="#TOC">»</a><a name="acknowledge">Acknowledgments</a></h2> +<h2><a href="#TOC">»</a><a name="acknowledge">Acknowledgments</a></h2> <blockquote> <p>A special thanks to David Dobkin for his guidance. A special @@ -669,7 +669,7 @@ the Department of Energy, by the University of Minnesota, and by Minnesota Technology, Inc.</p> </blockquote> -<h2><a href="#TOC">»</a><a name="ref">References</a></h2> +<h2><a href="#TOC">»</a><a name="ref">References</a></h2> <blockquote> <p><a name="aure91">Aurenhammer</a>, F., "Voronoi diagrams diff --git a/html/qconvex.htm b/html/qconvex.htm index b77b555..12a187b 100644 --- a/html/qconvex.htm +++ b/html/qconvex.htm @@ -134,7 +134,7 @@ Qr Qu Qv Qx Qz TR E V Fp Gt Q0,etc</i>. <hr> -<h3><a href="#TOP">»</a><a name="synopsis">qconvex synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">qconvex synopsis</a></h3> <pre> qconvex- compute the convex hull. input (stdin): dimension, number of points, point coordinates @@ -168,7 +168,7 @@ examples: rbox c D7 | qconvex FA TF1000 </pre> -<h3><a href="#TOP">»</a><a name="input">qconvex +<h3><a href="#TOP">»</a><a name="input">qconvex input</a></h3> <blockquote> @@ -234,7 +234,7 @@ Statistics for: RBOX c | QCONVEX s n </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="outputs">qconvex outputs</a></h3> +<h3><a href="#TOP">»</a><a name="outputs">qconvex outputs</a></h3> <blockquote> <p>These options control the output of qconvex. They may be used @@ -376,7 +376,7 @@ individually or together.</p> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="controls">qconvex controls</a></h3> +<h3><a href="#TOP">»</a><a name="controls">qconvex controls</a></h3> <blockquote> <p>These options provide additional control:</p> @@ -422,7 +422,7 @@ best initial simplex. This is expensive is high dimensions.</dd> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="graphics">qconvex graphics</a></h3> +<h3><a href="#TOP">»</a><a name="graphics">qconvex graphics</a></h3> <blockquote> <p>Display 2-d, 3-d, and 4-d convex hulls with Geomview ('<a @@ -437,7 +437,7 @@ octant and '<a href="qh-optg.htm#GDn">GrD2</a>' to drop dimension 2. </p> </blockquote> -<h3><a href="#TOP">»</a><a name="notes">qconvex notes</a></h3> +<h3><a href="#TOP">»</a><a name="notes">qconvex notes</a></h3> <blockquote> <p>Qhull always computes a convex hull. The @@ -448,7 +448,7 @@ triangulation is equivalent to the convex hull of the input sites after lifting the points to a paraboloid.</p> </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">qconvex +<h3><a href="#TOP">»</a><a name="conventions">qconvex conventions</a></h3> <blockquote> @@ -476,7 +476,7 @@ See <a href="index.htm#structure">Qhull's data structures</a>.</p> href="qh-optq.htm#QVn">QVn</a>', etc.</li> </ul> </blockquote> -<h3><a href="#TOP">»</a><a name="options">qconvex options</a></h3> +<h3><a href="#TOP">»</a><a name="options">qconvex options</a></h3> <pre> qconvex- compute the convex hull diff --git a/html/qdelau_f.htm b/html/qdelau_f.htm index 9afa73f..706649a 100644 --- a/html/qdelau_f.htm +++ b/html/qdelau_f.htm @@ -118,7 +118,7 @@ Qm Qr QR Qv Qx TR E V FC Fi Fo Fp FV Q0,etc</i>. <hr> -<h3><a href="#TOP">»</a><a name="synopsis">furthest-site qdelaunay synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">furthest-site qdelaunay synopsis</a></h3> <blockquote> See <a href="qdelaun.htm#synopsis">qdelaunay synopsis</a>. The same @@ -126,7 +126,7 @@ program is used for both constructions. Use option '<a href="qh-optq.htm#Qu">Qu for furthest-site Delaunay triangulations. </blockquote> -<h3><a href="#TOP">»</a><a name="input">furthest-site qdelaunay +<h3><a href="#TOP">»</a><a name="input">furthest-site qdelaunay input</a></h3> <blockquote> @@ -184,7 +184,7 @@ Statistics for: RBOX c 4 D2 | QDELAUNAY s Qu i </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="outputs">furthest-site qdelaunay +<h3><a href="#TOP">»</a><a name="outputs">furthest-site qdelaunay outputs</a></h3> <blockquote> @@ -268,7 +268,7 @@ outputs</a></h3> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="controls">furthest-site qdelaunay +<h3><a href="#TOP">»</a><a name="controls">furthest-site qdelaunay controls</a></h3> <blockquote> @@ -305,7 +305,7 @@ controls</a></h3> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="graphics">furthest-site qdelaunay +<h3><a href="#TOP">»</a><a name="graphics">furthest-site qdelaunay graphics</a></h3> <blockquote> @@ -313,7 +313,7 @@ See <a href="qdelaun.htm#graphics">Delaunay graphics</a>. They are the same except for Mathematica and Maple output. </blockquote> -<h3><a href="#TOP">»</a><a name="notes">furthest-site +<h3><a href="#TOP">»</a><a name="notes">furthest-site qdelaunay notes</a></h3> <blockquote> @@ -343,7 +343,7 @@ coplanar if the last coefficient of its normal is nearly zero (see <a href="../src/user.h#ZEROdelaunay">qh_ZEROdelaunay</a>). </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">furthest-site qdelaunay conventions</a></h3> +<h3><a href="#TOP">»</a><a name="conventions">furthest-site qdelaunay conventions</a></h3> <blockquote> <p>The following terminology is used for furthest-site Delaunay @@ -373,7 +373,7 @@ and <a href="index.htm#structure">Qhull's data structures</a></p> </ul> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="options">furthest-site qdelaunay options</a></h3> +<h3><a href="#TOP">»</a><a name="options">furthest-site qdelaunay options</a></h3> <blockquote> See <a href="qdelaun.htm#options">qdelaunay options</a>. The same diff --git a/html/qdelaun.htm b/html/qdelaun.htm index c559066..dd5309c 100644 --- a/html/qdelaun.htm +++ b/html/qdelaun.htm @@ -121,7 +121,7 @@ Qm Qr QR Qv Qx TR E V FC Fi Fo Fp Ft FV Q0,etc</i>. <hr> -<h3><a href="#TOP">»</a><a name="synopsis">qdelaunay synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">qdelaunay synopsis</a></h3> <pre> qdelaunay- compute the Delaunay triangulation. @@ -154,7 +154,7 @@ examples: </pre> -<h3><a href="#TOP">»</a><a name="input">qdelaunay +<h3><a href="#TOP">»</a><a name="input">qdelaunay input</a></h3> <blockquote> @@ -220,7 +220,7 @@ Statistics for: RBOX s 4 W0 c D2 | QDELAUNAY s i </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="outputs">qdelaunay +<h3><a href="#TOP">»</a><a name="outputs">qdelaunay outputs</a></h3> <blockquote> @@ -308,7 +308,7 @@ outputs</a></h3> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="controls">qdelaunay +<h3><a href="#TOP">»</a><a name="controls">qdelaunay controls</a></h3> <blockquote> @@ -351,7 +351,7 @@ degenerate facets of zero area.</dd> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="graphics">qdelaunay +<h3><a href="#TOP">»</a><a name="graphics">qdelaunay graphics</a></h3> <blockquote> @@ -383,7 +383,7 @@ href="qh-opto.htm#m">m</a>') displays the upper facets of the corresponding conv hull (a paraboloid). </p> </blockquote> -<h3><a href="#TOP">»</a><a name="notes">qdelaunay +<h3><a href="#TOP">»</a><a name="notes">qdelaunay notes</a></h3> <blockquote> @@ -445,7 +445,7 @@ dropping the lifted coordinate). If point 0 is interior to the original point set, it is interior to the reduced point set. </p> </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">qdelaunay conventions</a></h3> +<h3><a href="#TOP">»</a><a name="conventions">qdelaunay conventions</a></h3> <blockquote> <p>The following terminology is used for Delaunay triangulations @@ -485,7 +485,7 @@ conventions</a>.</p> </ul> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="options">qdelaunay options</a></h3> +<h3><a href="#TOP">»</a><a name="options">qdelaunay options</a></h3> <pre> qdelaunay- compute the Delaunay triangulation diff --git a/html/qh-code.htm b/html/qh-code.htm index 502971c..5e64e50 100644 --- a/html/qh-code.htm +++ b/html/qh-code.htm @@ -41,16 +41,18 @@ height="100"></a> Qhull code</h1> <hr> -<h2><a href="#TOP">»</a><a name="TOC">Qhull code: Table of +<h2><a href="#TOP">»</a><a name="TOC">Qhull code: Table of Contents </a></h2> <ul> <li><a href="#performance">Performance</a> of Qhull</li> <li><a href="#cpp">Calling Qhull</a> from C++ programs <ul> + <li><a href="#questions-cpp">Cpp questions for Qhull</a></li> <li><a href="#coordinate-cpp">CoordinateIterator</a></li> <li><a href="#qhull-cpp">Qhull</a></li> - <li><a href="#error-cpp">QhullError</a></li> <li><a href="#facet-cpp">QhullFacet</a></li> + <li><a href="#error-cpp">QhullError</a></li> + <li><a href="#facet-cpp">QhullFacet</a></li> <li><a href="#facetlist-cpp">QhullFacetList</a></li> <li><a href="#facetset-cpp">QhullFacetSet</a></li> <li><a href="#iterator-cpp">QhullIterator</a></li> @@ -90,7 +92,7 @@ Contents </a></h2> <hr> -<h2><a href="#TOC">»</a><a name="performance">Performance of +<h2><a href="#TOC">»</a><a name="performance">Performance of Qhull </a></h2> <p>Empirically, Qhull's performance is balanced in the sense that @@ -204,7 +206,7 @@ is creating new facets in qh_addpoint(), while qh_distplane() remains the most expensive function. </p> -<h2><a href="#TOC">»</a><a name="cpp">Calling Qhull from +<h2><a href="#TOC">»</a><a name="cpp">Calling Qhull from C++ programs</a></h2> <p><b>Warning:</b> The C++ interface to Qhull is new and @@ -272,7 +274,50 @@ that qh_qh is correct. The QhullQh functions <code>startQhullAccess()</code> an <code>qh_qh</code> pointer. </p> -<h3><a href="#TOC">»</a><a name="coordinate-cpp">CoordinateIterator</a></h3> +<h3><a href="#TOC">»</a><a name="questions-cpp">Cpp questions for Qhull</a></h3> + +Developing C++ code requires many conventions, idioms, and technical details. +The following questions have either +mystified the author or do not have a clear answer. See also +<a href="http://www.qhull.org/road/road-faq/xml/cpp-guideline.xml">C++ and Perl Guidelines</a>, +<a href="http://www.qhull.org/road/road-faq/xml/qhull-cpp.xml">C++ interface to Qhull</a>. and FIXUP +in the code. Please add notes to <a href="http://gitorious.org/qhull/pages/Home">Gitorious wiki</a>. + +<ul> +<li>FIXUP QH10012 Should return reference, but get reference to temporary +<pre>iterator Coordinates::operator++() { return iterator(++i); }</pre> +<li>size() as size_t, size_type, or int +<li>Should all containers have a reserve()? +<li>Qhull.feasiblePoint interface +<li>How to avoid copy constructor while logging, maybeThrowQhullMessage() +<li>How to configure Qhull output. Trace and results should go to stdout/stderr +<li>Qhull and RboxPoints messaging. e.g., ~Qhull, hasQhullMessage(). Rename them as QhullErrorMessage? +<li>How to add additional output to an error message, e.g., qh_setprint +<li>Is idx the best name for an index? It's rather cryptic, but BSD strings.h defines index(). +<li>Qhull::feasiblePoint Qhull::useOutputStream as field or getter? +<li>Define virtual functions for user customization of Qhull (e.g., qh_fprintf, qh_memfree,etc.) +<li>Figure out RoadError::global_log. clearQhullMessage currently clearGlobalLog +<li>Should the false QhullFacet be NULL or empty? e.g., QhullFacet::tricoplanarOwner() and QhullFacetSet::end() +<li>Should output format for floats be predefined (qh_REAL_1, 2.2g, 10.7g) or as currently set for stream +<li>Should cout << !point.defined() be blank or 'undefined' +<li>Interface for UsingLibQhull::globalAngleEpsilon(), globalDistanceEpsilon, etc. +<li>Interface for UsingLibQhull::globalDimension +<li>Set up globals for thread-private storage (redefine macros qh, qhstat, etc) +<li>Is Q_GLOBAL_STATIC non-threaded/threaded, needed for Qhull? +<li>Infinite point as !defined() +<li>qlist and qlinkedlist define pointer, reference, size_type, difference_type, const_pointer, const_reference for the class but not for iterator and const_iterator + vector.h -- <pre>reference operator[](difference_type _Off) const</pre> +<li>When forwarding an implementation is base() an approriate name (e.g., Coordinates::iterator::base() as std::vector<coordT>::iterator). +<li>When forwarding an implementation, does not work "returning address of temporary" +<li>Also --, +=, and -= + <pre>iterator &operator++() { return iterator(i++); }</pre> +<li>if vector<coordT> inheritance is bad, is QhullVertexSet OK? +<li>Should QhullPointSet define pointer and reference data types? +<li>Allow UsingQhullLib to work with static allocation of qh_qh +</ul> + + +<h3><a href="#TOC">»</a><a name="coordinate-cpp">CoordinateIterator</a></h3> <p> A CoordinateIterator or ConstCoordinateIterator [RboxPoints.cpp] is a <code>std::vector<realT>::iterator</code> for Rbox and Qhull coordinates. It is the result type of <a href="#rbox-cpp">RboxPoints</a>.coordinates(). @@ -282,7 +327,7 @@ It is the result type of <a href="#rbox-cpp">RboxPoints</a>.coordinates(). See <a href="#point-cpp">QhullPoint</a>. </p> -<h3><a href="#TOC">»</a><a name="qhull-cpp">Qhull</a></h3> +<h3><a href="#TOC">»</a><a name="qhull-cpp">Qhull</a></h3> <p> Qhull is the top-level class for running Qhull. It initializes Qhull, runs the computation, and records errors. @@ -290,7 +335,7 @@ It provides access to the global data structure <a href="#qh-cpp">QhullQh</a>, Qhull's <a href="#facet-cpp">facets</a>, and <a href="#vertex-cpp">vertices</a>. </p> -<h3><a href="#TOC">»</a><a name="error-cpp">QhullError</a></h3> +<h3><a href="#TOC">»</a><a name="error-cpp">QhullError</a></h3> <p> QhullError is derived from <code>std::exception</code>. It reports errors from Qhull and captures the output to stderr. </p> @@ -301,7 +346,7 @@ If error handling is not set up, Qhull exits with a code from 1 to 5 captured output in QhullError. Call Qhull::setErrorStream to send output to cerr instead. </p> -<h3><a href="#TOC">»</a><a name="facet-cpp">QhullFacet</a></h3> +<h3><a href="#TOC">»</a><a name="facet-cpp">QhullFacet</a></h3> <p> A QhullFacet is a facet of the convex hull, a region of the Delaunay triangulation, a vertex of a Voronoi diagram, or an intersection of the halfspace intersection about a point. @@ -309,42 +354,42 @@ A QhullFacet has a set of <a href="#vertex-cpp">QhullVertex</a>, a set of <a hre a set of neighboring QhullFacets. </p> -<h3><a href="#TOC">»</a><a name="facetlist-cpp">QhullFacetList</a></h3> +<h3><a href="#TOC">»</a><a name="facetlist-cpp">QhullFacetList</a></h3> <p> A QhullFacetList is a linked list of <a href="#facet-cpp">QhullFacet</a>. The result of <code>Qhull.runQhull</code> is a QhullFacetList stored in <a href="#qh-cpp">QhullQh</a>. </p> -<h3><a href="#TOC">»</a><a name="facetset-cpp">QhullFacetSet</a></h3> +<h3><a href="#TOC">»</a><a name="facetset-cpp">QhullFacetSet</a></h3> <p> A QhullFacetSet is a <a href="#set-cpp">QhullSet</a> of <a href="#facet-cpp">QhullFacet</a>. QhullFacetSet may be ordered or unordered. The neighboring facets of a QhullFacet is a QhullFacetSet. The neighbors of a <a href="#facet-cpp">QhullFacet</a> is a QhullFacetSet. The neighbors are ordered for simplicial facets, matching the opposite vertex of the facet. </p> -<h3><a href="#TOC">»</a><a name="iterator-cpp">QhullIterator</a></h3> +<h3><a href="#TOC">»</a><a name="iterator-cpp">QhullIterator</a></h3> <p> QhullIterator contains macros for defining Java-style iterator templates from a STL-style iterator template. </p> -<h3><a href="#TOC">»</a><a name="linkedlist-cpp">QhullLinkedList</a></h3> +<h3><a href="#TOC">»</a><a name="linkedlist-cpp">QhullLinkedList</a></h3> <p> A QhullLinkedLIst is a template for linked lists with next and previous pointers. <a href="#facetlist-cpp">QhullFacetList</a> and <a href="#facetlist-cpp">QhullVertexList</a> are QhullLinkedLists. </p> -<h3><a href="#TOC">»</a><a name="point-cpp">QhullPoint</a></h3> +<h3><a href="#TOC">»</a><a name="point-cpp">QhullPoint</a></h3> <p> A QhullPoint is an array of point coordinates, typically doubles. The length of the array is <a href="#qh-cpp">QhullQh</a>.hull_dim. The identifier of a QhullPoint is its 0-based index from QhullQh.first_point followed by QhullQh.other_points. </p> -<h3><a href="#TOC">»</a><a name="pointset-cpp">QhullPointSet</a></h3> +<h3><a href="#TOC">»</a><a name="pointset-cpp">QhullPointSet</a></h3> <p> A QhullPointSet is a <a href="#set-cpp">QhullSet</a> of <a href="#point-cpp">QhullPoint</a>. The QhullPointSet of a <a href="#facet-cpp">QhullFacet</a> is its coplanar points. </p> -<h3><a href="#TOC">»</a><a name="qh-cpp">QhullQh</a></h3> +<h3><a href="#TOC">»</a><a name="qh-cpp">QhullQh</a></h3> <p> QhullQh is the root of Qhull's data structure. It contains initialized constants, sets, buffers, and variables. @@ -358,33 +403,33 @@ Qhull's functions access QhullQh through the global variable, <code>qh_qh</code> The global data structures, qh_stat and qh_mem, record statistics and manage memory respectively. </p> -<h3><a href="#TOC">»</a><a name="ridge-cpp">QhullRidge</a></h3> +<h3><a href="#TOC">»</a><a name="ridge-cpp">QhullRidge</a></h3> <p> A QhullRidge represents the edge between two <a href="#facet-cpp">QhullFacet</a>'s. It is always simplicial with qh.hull_dim-1 <a href="#vertex-cpp">QhullVertex</a>)'s. </p> -<h3><a href="#TOC">»</a><a name="ridgeset-cpp">QhullRidgeSet</a></h3> +<h3><a href="#TOC">»</a><a name="ridgeset-cpp">QhullRidgeSet</a></h3> <p> A QhullRidgeSet is a <a href="#set-cpp">QhullSet</a> of <a href="#ridge-cpp">QhullRidge</a>. Each <a href="#facet-cpp">QhullFacet</a> contains a QhullRidgeSet. </p> -<h3><a href="#TOC">»</a><a name="set-cpp">QhullSet</a></h3> +<h3><a href="#TOC">»</a><a name="set-cpp">QhullSet</a></h3> <p> A QhullSet is a set of pointers to objects. QhullSets may be ordered or unordered. They are the core data structure for Qhull. </p> -<h3><a href="#TOC">»</a><a name="vertex-cpp">QhullVertex</a></h3> +<h3><a href="#TOC">»</a><a name="vertex-cpp">QhullVertex</a></h3> <p> A QhullVertex is a vertex of the convex hull. A simplicial <a href="#facet-cpp">QhullFacet</a> has qh.hull_dim-1 vertices. A QhullVertex contains a <a href="#point-cpp">QhullPoint</a>. It may list its neighboring <a href="#facet-cpp">QhullFacet</a>'s. </p> -<h3><a href="#TOC">»</a><a name="vertexlist-cpp">QhullVertexList</a></h3> +<h3><a href="#TOC">»</a><a name="vertexlist-cpp">QhullVertexList</a></h3> <p> A QhullVertexList is a <a href="#linkedlist-cpp">QhullLinkedList</a> of <a href="#vertex-cpp">QhullVertex</a>. @@ -392,7 +437,7 @@ The global data structure, <a href="#qh-cpp">QhullQh</a> contains a QhullVertexL the vertices. </p> -<h3><a href="#TOC">»</a><a name="vertexset-cpp">QhullVertexSet</a></h3> +<h3><a href="#TOC">»</a><a name="vertexset-cpp">QhullVertexSet</a></h3> <p> A QhullVertexSet is a <a href="#set-cpp">QhullSet</a> of <a href="#vertex-cpp">QhullVertex</a>. @@ -400,7 +445,7 @@ The QhullVertexSet of a <a href="#facet-cpp">QhullFacet</a> is the vertices of t ordered for simplicial facets and unordered for non-simplicial facets. </p> -<h3><a href="#TOC">»</a><a name="rbox-cpp">RboxPoints</a></h3> +<h3><a href="#TOC">»</a><a name="rbox-cpp">RboxPoints</a></h3> <p> RboxPoints is a std::vector of point coordinates (<a href="#point-cpp">QhullPoint</a>). @@ -411,14 +456,14 @@ It's iterator is <a href="#coordinate-cpp">CoordinateIterator</a>. It can also append a cube's vertices or specific points. </p> -<h3><a href="#TOC">»</a><a name="usingqhull-cpp">UsingLibQhull</a></h3> +<h3><a href="#TOC">»</a><a name="usingqhull-cpp">UsingLibQhull</a></h3> <p> UsingLibQhull checks that the current thread owns Qhull's global data structure, <a href="#qh-cpp">QhullQh</a>. It is required while calling the Qhull library. Otherwise two threads may be updating and reading the same data structure. </p> -<h2><a href="#TOC">»</a><a name="library">Calling Qhull from +<h2><a href="#TOC">»</a><a name="library">Calling Qhull from C programs</a></h2> <p><b>Warning:</b> Qhull was not designed for calling from C @@ -484,7 +529,7 @@ do not occur in the Qhull program. Please report all errors that you find in the Qhull library. Please include suggestions for improvement. </p> -<h3><a href="#TOC">»</a><a name="mem">sets and quick memory +<h3><a href="#TOC">»</a><a name="mem">sets and quick memory allocation</a></h3> <p>You can use <tt>mem.c</tt> and<tt> qset.c</tt> individually. <tt>Mem.c @@ -497,7 +542,7 @@ the inner loop of Qhull, so speed is more important than abstraction. Set iteration is particularly fast. <tt>qset.c</tt> just includes the functions needed for Qhull. </p> -<h3><a href="#TOC">»</a><a name="dids">Delaunay triangulations +<h3><a href="#TOC">»</a><a name="dids">Delaunay triangulations and point indices</a></h3> <p>Here some unchecked code to print the point indices of each @@ -523,7 +568,7 @@ triangulation. </p> </pre> </blockquote> -<h3><a href="#TOC">»</a><a name="findfacet">locate a facet with +<h3><a href="#TOC">»</a><a name="findfacet">locate a facet with qh_findbestfacet()</a></h3> <p>The routine qh_findbestfacet in <tt>poly2.c</tt> is @@ -573,7 +618,7 @@ locating the facet closest to a distant point on the ray. Intersecting the ray with the facet's hyperplane gives a new point to test. </p> -<h3><a href="#TOC">»</a><a name="inc">on-line construction with +<h3><a href="#TOC">»</a><a name="inc">on-line construction with qh_addpoint()</a></h3> <p>The Qhull library may be used for the on-line construction of @@ -631,7 +676,7 @@ call qh_check_maxout() to compute outer planes terminate qhull</pre> </blockquote> -<h3><a href="#TOC">»</a><a name="constrained">Constrained +<h3><a href="#TOC">»</a><a name="constrained">Constrained Delaunay triangulation </a></h3> <p>With a fair amount of work, Qhull is suitable for constrained @@ -644,7 +689,7 @@ the minimum feature separation. You will need an independent check of the constraint in the output since the minimum feature separation may be incorrect. [H. Geron] </p> -<h3><A href="#TOC">»</A><a name="tricoplanar">Tricoplanar facets and option 'Qt'</h3> +<h3><A href="#TOC">»</A><a name="tricoplanar">Tricoplanar facets and option 'Qt'</h3> <p>Option '<a href=qh-optq.htm#Qt>Qt</a>' triangulates non-simplicial facets (e.g., a square facet in 3-d or a cubical facet in 4-d). @@ -665,7 +710,7 @@ will have the same facet->center.</p> <p>See <a href=../src/io.c#detvridge>qh_detvridge</a> for an example of ignoring tricoplanar facets.</p> -<h3><a href="#TOC">»</a><a name="vertices">Voronoi vertices of a +<h3><a href="#TOC">»</a><a name="vertices">Voronoi vertices of a region</a></h3> <p>The following code iterates over all Voronoi vertices for each @@ -701,7 +746,7 @@ FORALLvertices { </pre> </blockquote> -<h3><a href="#TOC">»</a><a name="ridge">Voronoi vertices of a +<h3><a href="#TOC">»</a><a name="ridge">Voronoi vertices of a ridge</a></h3> <p>Qhull uses qh_printvdiagram() in io.c to print the ridges of a @@ -716,7 +761,7 @@ the total number of ridges, you can skip the first call to qh_printvdiagram2(). See qh_printvridge() and qh_printvnorm() in io.c for examples. </p> -<h3><a href="#TOC">»</a><a name="vneighbor">vertex neighbors of +<h3><a href="#TOC">»</a><a name="vneighbor">vertex neighbors of a vertex</a></h3> <p>To visit all of the vertices that share an edge with a vertex: @@ -742,11 +787,61 @@ decomposition of the (d-2)-faces between each pair of facets -- if you need 1-faces, you probably need to generate the full face graph of the convex hull. </p> -<h2><a href="#TOC">»</a><a name="enhance">Enhancements to Qhull </a></h2> +<h2><a href="#TOC">»</a><a name="enhance">Enhancements to Qhull </a></h2> <p>There are many ways in which Qhull can be improved. </p> -<pre>Here is a partial list: +<pre> +[Jan 2010] Suggestions + - Generate vcproj from qtpro files + cd qtpro && qmake -spec win32-msvc2005 -tp vc -recursive + sed -i 's/C\:\/bash\/local\/qhull\/qtpro\///' qhull-all.sln + Change qhullcpp to libqhull.dll + Allow both builds on same host (keep /tmp separate) + - Make distribution -- remove tmp, news, .git, leftovers from project, change CRLF + search for 2010.1, Dates + qhulltest --all added to output + Add md5sum + Add test of user_eg3, etc. + - C++ class for access to statistics, accumulate vs. add + - Add dialog box to RoadError-- a virtual function? + - Option 'Gt' does not make visible all facets of the mesh example, rbox 32 M1,0,1 | qhull d Gt + - Option to select bounded Voronoi regions [A. Uzunovic] + - Merge small volume boundary cells into unbounded regions [Dominik Szczerba] + - Postmerge with merge options + - Add const to C code + - Add modify operators and MutablePointCoordinateIterator to PointCoordinates + - Add Qtest::toString() functions for QhullPoint and others. QByteArray and qstrdup() + - Fix option Qt for conformant triangulations of merged facets + - Investigate flipped facet -- rbox 100 s D3 t1263080158 | qhull R1e-3 Tcv Qc + - Add doc comments to c++ code + - Measure performance of Qhull, seconds per point by dimension + - Report potential wraparound of 64-bit ints -- e.g., a large set or points + +To do for documentation +- Qhull::addPoint(). Problems with qh_findbestfacet and otherpoints see + qh-code.htm#inc on-line construction with qh_addpoint() +- How to handle 64-bit possible loss of data. WARN64, ptr_intT, size_t/int +- Show custom of qh_fprintf +- grep 'qh_mem ' x | sort | awk '{ print $2; }' | uniq -c | grep -vE ' (2|4|6|8|10|12|14|16|20|64|162)[^0-9]' +- qtpro/qhulltest contains .pro and Makefile. Remove Makefiles by setting shadow directory to ../../tmp/projectname +- Rules for use of qh_qh and multi processes + UsingQhull + errorIfAnotherUser + ~QhullPoints() needs ownership of qh_qh + Does !qh_pointer work? + When is qh_qh required? Minimize the time. + qhmem, qhstat.ferr + qhull_inuse==1 when qhull globals active [not useful?] + rbox_inuse==1 when rbox globals active + - Multithreaded -- call largest dimension for infinityPoint() and origin() + - Better documentation for qhmem totshort, freesize, etc. + - how to change .h, .c, and .cpp to text/html. OK in Opera + - QhullVertex.dimension() is not quite correct, epensive + - Check globalAngleEpsilon + - Deprecate save_qhull() + +[Dec 2003] Here is a partial list: - fix finddelaunay() in user_eg.c for tricoplanar facets - write a BGL, C++ interface to Qhull http://www.boost.org/libs/graph/doc/table_of_contents.html @@ -756,8 +851,7 @@ graph of the convex hull. </p> - prove that directed search locates all coplanar facets - in high-d merging, can a loop of facets become disconnected? - find a way to improve inner hulls in 5-d and higher - - determine the best policy for facet visibility ('<a -href="qh-optc.htm#Vn">Vn</a>') + - determine the best policy for facet visibility ('<a href="qh-optc.htm#Vn">Vn</a>') - determine the limitations of '<a href="qh-optq.htm#Qg">Qg</a>' Precision improvements: diff --git a/html/qh-eg.htm b/html/qh-eg.htm index 7cf3d52..59e83fd 100644 --- a/html/qh-eg.htm +++ b/html/qh-eg.htm @@ -52,7 +52,7 @@ normalization option on the 'obscure' menu.</p> <hr> -<h2><a href="#TOP">»</a><a name="TOC">Qhull examples: Table of +<h2><a href="#TOP">»</a><a name="TOC">Qhull examples: Table of Contents </a></h2> <ul> @@ -67,7 +67,7 @@ Contents </a></h2> <hr> <ul> - <li><a href="#TOC">»</a><a name="2d">2-d and 3-d examples</a><ul> + <li><a href="#TOC">»</a><a name="2d">2-d and 3-d examples</a><ul> <li><a href="#01">eg.01.cube</a></li> <li><a href="#02">eg.02.diamond.cube</a></li> <li><a href="#03">eg.03.sphere</a></li> @@ -80,7 +80,7 @@ Contents </a></h2> <li><a href="#09">eg.09.lens</a></li> </ul> </li> - <li><a href="#TOC">»</a><a name="how">How Qhull adds a point</a><ul> + <li><a href="#TOC">»</a><a name="how">How Qhull adds a point</a><ul> <li><a href="#10a">eg.10a.sphere.visible</a></li> <li><a href="#10b">eg.10b.sphere.beyond</a></li> <li><a href="#10c">eg.10c.sphere.horizon</a></li> @@ -89,13 +89,13 @@ Contents </a></h2> <li><a href="#14">eg.14.sphere.corner</a></li> </ul> </li> - <li><a href="#TOC">»</a> <a name="joggle">Triangulated output or joggled input</a> + <li><a href="#TOC">»</a> <a name="joggle">Triangulated output or joggled input</a> <ul> <li><a href="#15a">eg.15a.surface</a></li> <li><a href="#15b">eg.15b.triangle</a></li> <li><a href="#15c">eg.15c.joggle</a></li> </ul> - <li><a href="#TOC">»</a><a name="delaunay"> Delaunay and + <li><a href="#TOC">»</a><a name="delaunay"> Delaunay and Voronoi diagrams</a><ul> <li><a href="#17a">eg.17a.delaunay.2</a></li> <li><a href="#17b">eg.17b.delaunay.2i</a></li> @@ -109,7 +109,7 @@ Contents </a></h2> <li><a href="#19">eg.19.voronoi.region.3</a></li> </ul> </li> - <li><a href="#TOC">»</a><a name="merge">Facet merging for + <li><a href="#TOC">»</a><a name="merge">Facet merging for imprecision </a><ul> <li><a href="#20">eg.20.cone</a></li> <li><a href="#21a">eg.21a.roundoff.errors</a></li> @@ -121,14 +121,14 @@ Contents </a></h2> <li><a href="#23">eg.23.merge.cube</a></li> </ul> </li> - <li><a href="#TOC">»</a><a name="4d">4-d objects</a><ul> + <li><a href="#TOC">»</a><a name="4d">4-d objects</a><ul> <li><a href="#24">eg.24.merge.cube.4d-in-3d</a></li> <li><a href="#30">eg.30.4d.merge.cube</a></li> <li><a href="#31">eg.31.4d.delaunay</a></li> <li><a href="#32">eg.32.4d.octant</a></li> </ul> </li> - <li><a href="#TOC">»</a><a name="half">Halfspace + <li><a href="#TOC">»</a><a name="half">Halfspace intersections</a><ul> <li><a href="#33a">eg.33a.cone</a></li> <li><a href="#33b">eg.33b.cone.dual</a></li> @@ -139,9 +139,9 @@ Contents </a></h2> <hr> -<h2><a href="#TOC">»</a>2-d and 3-d examples</h2> +<h2><a href="#TOC">»</a>2-d and 3-d examples</h2> -<h3><a href="#2d">»</a><a name="01">rbox c D3 | qconvex G +<h3><a href="#2d">»</a><a name="01">rbox c D3 | qconvex G >eg.01.cube </a></h3> <p>The first example is a cube in 3-d. The color of each facet @@ -153,14 +153,14 @@ href="qh-optt.htm#TFn">TFn</a>' to track qconvex's progress. Note that each facet is a square that qconvex merged from coplanar triangles.</p> -<h3><a href="#2d">»</a><a name="02">rbox c d G3.0 | qconvex G +<h3><a href="#2d">»</a><a name="02">rbox c d G3.0 | qconvex G >eg.02.diamond.cube </a></h3> <p>The second example is a cube plus a diamond ('d') scaled by <tt>rbox</tt>'s 'G' option. In higher dimensions, diamonds are much simpler than hypercubes. </p> -<h3><a href="#2d">»</a><a name="03">rbox s 100 D3 | qconvex G +<h3><a href="#2d">»</a><a name="03">rbox s 100 D3 | qconvex G >eg.03.sphere </a></h3> <p>The <tt>rbox s</tt> option generates random points and @@ -170,7 +170,7 @@ might expect. You can get a smoother distribution by merging facets and printing the vertices, e.g.,<i> rbox 1000 s | qconvex A-0.95 p | qconvex G >eg.99</i>.</p> -<h3><a href="#2d">»</a><a name="04">rbox s 100 D2 | qconvex G +<h3><a href="#2d">»</a><a name="04">rbox s 100 D2 | qconvex G >eg.04.circle </a></h3> <p>In 2-d, there are many ways to generate a convex hull. One of @@ -179,12 +179,12 @@ Quickhull algorithm [c.f., Preparata & Shamos <a href="index.htm#pre-sha85">'85</a>]. It was the model for Qhull.</p> -<h3><a href="#2d">»</a><a name="05">rbox 10 l | qconvex G +<h3><a href="#2d">»</a><a name="05">rbox 10 l | qconvex G >eg.05.spiral </a></h3> <p>One rotation of a spiral.</p> -<h3><a href="#2d">»</a><a name="06">rbox 1000 D2 | qconvex C-0.03 +<h3><a href="#2d">»</a><a name="06">rbox 1000 D2 | qconvex C-0.03 Qc Gapcv >eg.06.merge.square</a></h3> <p>This demonstrates how Qhull handles precision errors. Option '<a @@ -199,13 +199,13 @@ in the middle of each facet is the centrum. Each centrum is at least 0.03 below the planes of its neighbors. This guarantees that the facets are convex.</p> -<h3><a href="#2d">»</a><a name="07">rbox 1000 D3 | qconvex G +<h3><a href="#2d">»</a><a name="07">rbox 1000 D3 | qconvex G >eg.07.box </a></h3> <p>Here's the same distribution but in 3-d with Qhull handling machine roundoff errors. Note the large number of facets. </p> -<h3><a href="#2d">»</a><a name="08a">rbox c G0.4 s 500 | qconvex G +<h3><a href="#2d">»</a><a name="08a">rbox c G0.4 s 500 | qconvex G >eg.08a.cube.sphere </a></h3> <p>The sphere is just barely poking out of the cube. Try the same @@ -222,13 +222,13 @@ you increase the number of points. It is because the randomized algorithm builds most of the sphere before it adds the cube's vertices.</p> -<h3><a href="#2d">»</a><a name="08b">rbox d G0.6 s 500 | qconvex G +<h3><a href="#2d">»</a><a name="08b">rbox d G0.6 s 500 | qconvex G >eg.08b.diamond.sphere </a></h3> <p>This is a combination of the diamond distribution and the sphere.</p> -<h3><a href="#2d">»</a><a name="09">rbox 100 L3 G0.5 s | qconvex +<h3><a href="#2d">»</a><a name="09">rbox 100 L3 G0.5 s | qconvex G >eg.09.lens </a></h3> <p>Each half of the lens distribution lies on a sphere of radius @@ -246,9 +246,9 @@ lens, it partitions the remaining points with an exhaustive search instead of a directed search (see qh_findbestnew in <tt>geom2.c</tt>). </p> -<h2><a href="#TOC">»</a>How Qhull adds a point</h2> +<h2><a href="#TOC">»</a>How Qhull adds a point</h2> -<h3><a href="#how">»</a><a name="10a">rbox 100 s P0.5,0.5,0.5 | +<h3><a href="#how">»</a><a name="10a">rbox 100 s P0.5,0.5,0.5 | qconvex Ga QG0 >eg.10a.sphere.visible</a></h3> <p>The next 4 examples show how Qhull adds a point. The point @@ -257,20 +257,20 @@ point using the beneath-beyond algorithm. First Qhull finds all of the facets that are visible from the point. Qhull will replace these facets with new facets.</p> -<h3><a href="#how">»</a><a name="10b">rbox 100 s +<h3><a href="#how">»</a><a name="10b">rbox 100 s P0.5,0.5,0.5|qconvex Ga QG-0 >eg.10b.sphere.beyond </a></h3> <p>These are the facets that are not visible from the point. Qhull will keep these facets.</p> -<h3><a href="#how">»</a><a name="10c">rbox 100 s P0.5,0.5,0.5 | +<h3><a href="#how">»</a><a name="10c">rbox 100 s P0.5,0.5,0.5 | qconvex PG Ga QG0 >eg.10c.sphere.horizon </a></h3> <p>These facets are the horizon facets; they border the visible facets. The inside edges are the horizon ridges. Each horizon ridge will form the base for a new facet.</p> -<h3><a href="#how">»</a><a name="10d">rbox 100 s P0.5,0.5,0.5 | +<h3><a href="#how">»</a><a name="10d">rbox 100 s P0.5,0.5,0.5 | qconvex Ga QV0 PgG >eg.10d.sphere.cone </a></h3> <p>This is the cone of points from the new point to the horizon @@ -278,7 +278,7 @@ facets. Try combining this image with <tt>eg.10c.sphere.horizon</tt> and <tt>eg.10a.sphere.visible</tt>. </p> -<h3><a href="#how">»</a><a name="10e">rbox 100 s P0.5,0.5,0.5 | +<h3><a href="#how">»</a><a name="10e">rbox 100 s P0.5,0.5,0.5 | qconvex Ga >eg.10e.sphere.new</a></h3> <p>This is the convex hull after [0.5,0.5,0.5] has been added. @@ -287,7 +287,7 @@ happen. Unlike the randomized algorithms, Qhull always processes a point that is furthest in an outside set. A point like [0.5,0.5,0.5] would be one of the first points processed.</p> -<h3><a href="#how">»</a><a name="14">rbox 100 s P0.5,0.5,0.5 | +<h3><a href="#how">»</a><a name="14">rbox 100 s P0.5,0.5,0.5 | qhull Ga QV0g Q0 >eg.14.sphere.corner</a></h3> <p>The '<a href="qh-optq.htm#QVn">QVn</a>', '<a @@ -299,9 +299,9 @@ tells Qhull to only build facets that might be part of a good facet. This technique reduces output size in low dimensions. It does not work with facet merging.</p> -<h2><a href="#TOC">»</a>Triangulated output or joggled input</h2> +<h2><a href="#TOC">»</a>Triangulated output or joggled input</h2> -<h3><a href="#joggle">»</a><a name="15a">rbox 500 W0 | qconvex QR0 Qc Gvp >eg.15a.surface</a></h3> +<h3><a href="#joggle">»</a><a name="15a">rbox 500 W0 | qconvex QR0 Qc Gvp >eg.15a.surface</a></h3> <p>This is the convex hull of 500 points on the surface of a cube. Note the large, non-simplicial facet for each face. @@ -316,7 +316,7 @@ rbox 500 W0 | qhull QR0 Q0 </blockquote> <p> -<h3><a href="#joggle">»</a><a name="15b">rbox 500 W0 | qconvex QR0 Qt Qc Gvp >eg.15b.triangle</a></h3> +<h3><a href="#joggle">»</a><a name="15b">rbox 500 W0 | qconvex QR0 Qt Qc Gvp >eg.15b.triangle</a></h3> <p>Like the previous examples, this is the convex hull of 500 points on the surface of a cube. Option '<a href="qh-optq.htm#Qt">Qt</a>' triangulates the @@ -324,7 +324,7 @@ non-simplicial facets. Triangulated output is particularly helpful for Delaunay triangulations. <p> -<h3><a href="#joggle">»</a><a name="15c">rbox 500 W0 | qconvex QR0 QJ5e-2 Qc Gvp >eg.15c.joggle</a></h3> +<h3><a href="#joggle">»</a><a name="15c">rbox 500 W0 | qconvex QR0 QJ5e-2 Qc Gvp >eg.15c.joggle</a></h3> <p>This is the convex hull of 500 joggled points on the surface of a cube. The option '<a href="qh-optq.htm#QJn">QJ5e-2</a>' @@ -342,9 +342,9 @@ Joggled input is a simple solution to precision problems in computational geometry. Qhull can also merge facets to handle precision problems. See <a href="qh-impre.htm#joggle">Merged facets or joggled input</a>. -<h2><a href="#TOC">»</a>Delaunay and Voronoi diagrams</h2> +<h2><a href="#TOC">»</a>Delaunay and Voronoi diagrams</h2> -<h3><a href="#delaunay">»</a><a name="17a">qdelaunay Qt +<h3><a href="#delaunay">»</a><a name="17a">qdelaunay Qt <eg.data.17 GnraD2 >eg.17a.delaunay.2</a></h3> <p> @@ -358,13 +358,13 @@ includes six co-circular points. Every triangular subset of these points has the same circumcircle. Option '<a href="qh-optq.htm#Qt">Qt</a>' triangulates the co-circular facet.</p> -<h3><a href="#delaunay">»</a><a name="17b">qdelaunay <eg.data.17 +<h3><a href="#delaunay">»</a><a name="17b">qdelaunay <eg.data.17 GnraD2 >eg.17b.delaunay.2i</a></h3> <p>This is the same example without triangulated output ('<a href="qh-optq.htm#Qt">Qt</a>'). qdelaunay merges the non-unique Delaunay triangles into a hexagon.</p> -<h3><a href="#delaunay">»</a><a name="17c">qdelaunay <eg.data.17 +<h3><a href="#delaunay">»</a><a name="17c">qdelaunay <eg.data.17 Ga >eg.17c.delaunay.2-3 </a></h3> <p>This is how Qhull generated both diagrams. Use Geomview's @@ -378,7 +378,7 @@ of each coordinate. These are the light blue points. Then the convex hull is taken. That's what you see here. If you look up the Z-axis, you'll see that points and edges coincide.</p> -<h3><a href="#delaunay">»</a><a name="17d">qvoronoi QJ +<h3><a href="#delaunay">»</a><a name="17d">qvoronoi QJ <eg.data.17 Gna >eg.17d.voronoi.2</a></h3> <p>The Voronoi diagram is the dual of the Delaunay triangulation. @@ -397,7 +397,7 @@ of triangulated output ('<a href="qh-optq.htm#Qt">Qt</a>'), this example uses joggled input ('<a href="qh-optq.htm#QJn">QJ</a>'). Normally, you should use neither 'QJ' nor 'Qt' for Voronoi diagrams. -<h3><a href="#delaunay">»</a><a name="17e">qvoronoi <eg.data.17 +<h3><a href="#delaunay">»</a><a name="17e">qvoronoi <eg.data.17 Gna >eg.17e.voronoi.2i </a></h3> <p>This looks the same as the previous diagrams, but take a look @@ -416,7 +416,7 @@ input sites define one Voronoi vertex near the origin. </p> <p>Option 'Qt' would triangulate the corresponding Delaunay region into four triangles. Each triangle is assigned the same Voronoi vertex.</p> -<h3><a href="#delaunay">»</a><a name="17f"> rbox c G0.1 d | +<h3><a href="#delaunay">»</a><a name="17f"> rbox c G0.1 d | qdelaunay Gt Qz <eg.17f.delaunay.3 </a></h3> <p>This is the 3-d Delaunay triangulation of a small cube inside @@ -427,7 +427,7 @@ facet is a cube. Note the use of '<a href="qh-optq.htm#Qz">Qz</a>' to add a point "at infinity". This avoids a degenerate input due to cospherical points.</p> -<h3><a href="#delaunay">»</a><a name="18a">rbox 10 D2 d | qdelaunay +<h3><a href="#delaunay">»</a><a name="18a">rbox 10 D2 d | qdelaunay Qu G >eg.18a.furthest.2-3 </a></h3> <p>The furthest-site Voronoi diagram contains Voronoi regions for @@ -438,7 +438,7 @@ convex hull of the lifted points (<a href="#17c">eg.17c.delaunay.2-3</a>). The upper convex hull (blue) generates the furthest-site Delaunay triangulation. </p> -<h3><a href="#delaunay">»</a><a name="18b">rbox 10 D2 d | qdelaunay +<h3><a href="#delaunay">»</a><a name="18b">rbox 10 D2 d | qdelaunay Qu Pd2 G >eg.18b.furthest-up.2-3</a></h3> <p>This is the upper convex hull of the preceding example. The @@ -447,7 +447,7 @@ upper convex hull back to the input points. The furthest-site Voronoi vertices are the circumcenters of the furthest-site Delaunay triangles. </p> -<h3><a href="#delaunay">»</a><a name="18c">rbox 10 D2 d | qvoronoi +<h3><a href="#delaunay">»</a><a name="18c">rbox 10 D2 d | qvoronoi Qu Gv >eg.18c.furthest.2</a></h3> <p>This shows an incomplete furthest-site Voronoi diagram. It @@ -460,15 +460,15 @@ href="qh-opto.htm#o">o</a>'. </p> Geomview's 'cameras' menu to turn off perspective. Then load this with the upper convex hull.</p> -<h3><a href="#delaunay">»</a><a name="19">rbox 10 D3 | qvoronoi QV5 +<h3><a href="#delaunay">»</a><a name="19">rbox 10 D3 | qvoronoi QV5 p | qconvex G >eg.19.voronoi.region.3 </a></h3> <p>This shows the Voronoi region for input site 5 of a 3-d Voronoi diagram.</p> -<h2><a href="#TOC">»</a>Facet merging for imprecision</h2> +<h2><a href="#TOC">»</a>Facet merging for imprecision</h2> -<h3><a href="#merge">»</a><a name="20">rbox r s 20 Z1 G0.2 | +<h3><a href="#merge">»</a><a name="20">rbox r s 20 Z1 G0.2 | qconvex G >eg.20.cone </a></h3> <p>There are two things unusual about this <a @@ -481,7 +481,7 @@ generate the data. So the precise convex hull should have been triangles instead of rectangles. By requiring convexity, Qhull has recovered the original design.</p> -<h3><a href="#merge">»</a><a name="21a">rbox 200 s | qhull Q0 +<h3><a href="#merge">»</a><a name="21a">rbox 200 s | qhull Q0 R0.01 Gav Po >eg.21a.roundoff.errors </a></h3> <p>This is the convex hull of 200 cospherical points with @@ -503,7 +503,7 @@ points or the random perturbation ('<a href="qh-optc.htm#Rn">R0.01</a>'). If it did not report flipped facets, increase the number of points or perturbation.</p> -<h3><a href="#merge">»</a><a name="21b">rbox 200 s | qconvex Qc +<h3><a href="#merge">»</a><a name="21b">rbox 200 s | qconvex Qc R0.01 Gpav >eg.21b.roundoff.fixed </a></h3> <p>Qhull handles the random perturbations and returns an @@ -521,16 +521,16 @@ precision problems. You need to set <i>n</i> significantly larger than the random perturbation. For example, try 'rbox 200 s | qconvex Qc R1e-4 QJ1e-1'. -<h3><a href="#merge">»</a><a name="22a">rbox 1000 s| qconvex C0.01 +<h3><a href="#merge">»</a><a name="22a">rbox 1000 s| qconvex C0.01 Qc Gcrp >eg.22a.merge.sphere.01</a></h3> -<h3><a href="#merge">»</a><a name="22b">rbox 1000 s| qconvex +<h3><a href="#merge">»</a><a name="22b">rbox 1000 s| qconvex C-0.01 Qc Gcrp >eg.22b.merge.sphere.-01</a></h3> -<h3><a href="#merge">»</a><a name="22c">rbox 1000 s| qconvex C0.05 +<h3><a href="#merge">»</a><a name="22c">rbox 1000 s| qconvex C0.05 Qc Gcrpv >eg.22c.merge.sphere.05</a></h3> -<h3><a href="#merge">»</a><a name="22d">rbox 1000 s| qconvex +<h3><a href="#merge">»</a><a name="22d">rbox 1000 s| qconvex C-0.05 Qc Gcrpv >eg.22d.merge.sphere.-05</a></h3> <p>The next four examples compare post-merging and pre-merging ('<a @@ -553,7 +553,7 @@ the facets of the last example. This is becomes Geomview moves line segments forward toward the viewer. You can avoid the effect by setting 'lines closer' to '0' in Geomview's camera menu. -<h3><a href="#merge">»</a><a name="23">rbox 1000 | qconvex s +<h3><a href="#merge">»</a><a name="23">rbox 1000 | qconvex s Gcprvah C0.1 Qc >eg.23.merge.cube</a></h3> <p>Here's the 3-d imprecise cube with all of the Geomview @@ -563,13 +563,13 @@ centrums, and inner and outer planes. The radii are shorter than the spheres because this uses post-merging ('<a href="qh-optc.htm#Cn2">C0.1</a>') instead of pre-merging. -<h2><a href="#TOC">»</a>4-d objects</h2> +<h2><a href="#TOC">»</a>4-d objects</h2> <p>With Qhull and Geomview you can develop an intuitive sense of 4-d surfaces. When you get into trouble, think of viewing the surface of a 3-d sphere in a 2-d plane.</p> -<h3><a href="#4d">»</a><a name="24">rbox 5000 D4 | qconvex s GD0v +<h3><a href="#4d">»</a><a name="24">rbox 5000 D4 | qconvex s GD0v Pd0:0.5 C-0.02 C0.1 >eg.24.merge.cube.4d-in-3d</a></h3> <p>Here's one facet of the imprecise cube in 4-d. It's projected @@ -579,7 +579,7 @@ facet and the neighboring facet. In this case, Geomview displays the topological ridges, i.e., as triangles between three vertices. That is why the cube looks lopsided.</p> -<h3><a href="#4d">»</a><a name="30">rbox 5000 D4 | qconvex s +<h3><a href="#4d">»</a><a name="30">rbox 5000 D4 | qconvex s C-0.02 C0.1 Gh >eg.30.4d.merge.cube </a></h3> <p><a @@ -602,7 +602,7 @@ geometric intersections between adjacent facets. Note the strong convexity constraint for post-merging ('<a href="qh-optc.htm#Cn2">C0.1</a>'). It deletes the small facets.</p> -<h3><a href="#4d">»</a><a name="31">rbox 20 D3 | qdelaunay G +<h3><a href="#4d">»</a><a name="31">rbox 20 D3 | qdelaunay G >eg.31.4d.delaunay </a></h3> <p>The Delaunay triangulation of 3-d sites corresponds to a 4-d @@ -622,7 +622,7 @@ single set of facets and then slice along the x axis to look inside. Another interesting picture is to slice away the equator in the w dimension.</p> -<h3><a href="#4d">»</a><a name="32">rbox 30 s D4 | qconvex s G +<h3><a href="#4d">»</a><a name="32">rbox 30 s D4 | qconvex s G Pd0d1d2D3</a></h3> <p>This is the positive octant of the convex hull of 30 4-d @@ -633,15 +633,15 @@ you, then that facet looks exactly the same in 3-d as it looks in the space of a facet is rotated relative to its neighbors. Try Geomview's <tt>ndview</tt> on this example.</p> -<h2><a href="#TOC">»</a>Halfspace intersections</h2> +<h2><a href="#TOC">»</a>Halfspace intersections</h2> -<h3><a href="#half">»</a><a name="33a">rbox 10 r s Z1 G0.3 | +<h3><a href="#half">»</a><a name="33a">rbox 10 r s Z1 G0.3 | qconvex G >eg.33a.cone </a></h3> -<h3><a href="#half">»</a><a name="33b">rbox 10 r s Z1 G0.3 | +<h3><a href="#half">»</a><a name="33b">rbox 10 r s Z1 G0.3 | qconvex FV n | qhalf G >eg.33b.cone.dual</a></h3> -<h3><a href="#half">»</a><a name="33c">rbox 10 r s Z1 G0.3 | +<h3><a href="#half">»</a><a name="33c">rbox 10 r s Z1 G0.3 | qconvex FV n | qhalf Fp | qconvex G >eg.33c.cone.halfspace</a></h3> <p>These examples illustrate halfspace intersection. The first diff --git a/html/qh-faq.htm b/html/qh-faq.htm index 29f79af..8e4379d 100644 --- a/html/qh-faq.htm +++ b/html/qh-faq.htm @@ -77,7 +77,7 @@ using joggled input ('<A href="qh-optq.htm#QJn">QJ</A>'). <hr> -<h2><A href="#TOP">»</A><a name="TOC">FAQ: Table of Contents </a></h2> +<h2><A href="#TOP">»</A><a name="TOC">FAQ: Table of Contents </a></h2> <p>Within each category, the most recently asked questions are first. @@ -167,9 +167,9 @@ first. <hr> -<h2><A href="#TOC">»</A><a name="startup">Startup</a> questions</h2> +<h2><A href="#TOC">»</A><a name="startup">Startup</a> questions</h2> -<h4><A href="#TOC">»</A><a name="console">How</a> do I run Qhull +<h4><A href="#TOC">»</A><a name="console">How</a> do I run Qhull from Windows?</h4><blockquote> <p>Qhull is a console program. You will first need a DOS window @@ -199,7 +199,7 @@ and rbox. </p> the numbers and end with a ctrl-D. </li> </ul></blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="input">How</a> do I enter +</blockquote><h4><A href="#TOC">»</A><a name="input">How</a> do I enter points for Qhull?</h4><blockquote> <p>Qhull takes its data from standard input. For example, create @@ -232,7 +232,7 @@ and qhull together, e.g., </p> <p>computes the convex hull of a cube. </p> -</blockquote><h4><A href="#TOC">»</A><a name="learn">How</a> do I learn to +</blockquote><h4><A href="#TOC">»</A><a name="learn">How</a> do I learn to use Qhull?</h4><blockquote> <p>First read: </p> @@ -317,9 +317,9 @@ problems. It can triangulate the output ('<A </ul> </blockquote> -<h2><A href="#TOC">»</A><a name="convex">Convex hull questions</a></h2> +<h2><A href="#TOC">»</A><a name="convex">Convex hull questions</a></h2> -<h4><A href="#TOC">»</A><a name="area">How</a> do I report just the area +<h4><A href="#TOC">»</A><a name="area">How</a> do I report just the area and volume of a convex hull?</h4><blockquote> Use option 'FS'. For example, @@ -346,7 +346,7 @@ Statistics for: RBOX 10 | QCONVEX FA Total volume: 0.20278679 </pre></blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="extra">Why</a> are there extra +</blockquote><h4><A href="#TOC">»</A><a name="extra">Why</a> are there extra points in a 4-d or higher convex hull?</h4><blockquote> <p>You may see extra points if you use options '<A @@ -453,7 +453,7 @@ rbox c D4 | qconvex Pd0:0.5 Ft </pre> </blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="dup">How</a> do I report +</blockquote><h4><A href="#TOC">»</A><a name="dup">How</a> do I report duplicate vertices?</h4><blockquote> <p>There's no direct way. You can use option @@ -469,10 +469,10 @@ adding a small random quantity to each input coordinate, it prevents coincident input sites. </p> </blockquote> -<h2><A href="#TOC">»</A><a name="delaunay">Delaunay and Voronoi +<h2><A href="#TOC">»</A><a name="delaunay">Delaunay and Voronoi diagram questions</a></h2> -<h4><A href="#TOC">»</A><a name="maxsphere">How</a> do I get the radii of the empty +<h4><A href="#TOC">»</A><a name="maxsphere">How</a> do I get the radii of the empty spheres for each Voronoi vertex?</h4><blockquote> Use option '<A href="qh-optf.htm#Fi">Fi</A>' to list each bisector (i.e. Delaunay ridge). Then compute the @@ -481,7 +481,7 @@ minimum distance for each Voronoi vertex. <p>There's other ways to get the same information. Let me know if you find a better method. -<h4><A href="#TOC">»</A><a name="flat">How</a> do I get rid of +<h4><A href="#TOC">»</A><a name="flat">How</a> do I get rid of nearly flat Delaunay triangles?</h4><blockquote> <p>Nearly flat triangles occur when boundary points are nearly @@ -535,7 +535,7 @@ or triangulated output ('<A href="qh-optq.htm#Qt">Qt</A>'). </blockquote> -<h4><A href="#TOC">»</A><a name="square">What</a> is the Voronoi diagram +<h4><A href="#TOC">»</A><a name="square">What</a> is the Voronoi diagram of a square?</h4><blockquote> <p> @@ -674,7 +674,7 @@ C:\qhull>rbox c D2 | qvoronoi QJ Fv before plus a short edge between the two vertices.</p> -</blockquote><h4><A href="#TOC">»</A><a name="mesh">How</a> do I compute +</blockquote><h4><A href="#TOC">»</A><a name="mesh">How</a> do I compute the Delaunay triangulation of a non-convex object?</h4><blockquote> <p>A similar question is @@ -699,7 +699,7 @@ Research Corner</a> and <a href="http://www-users.informatik.rwth-aachen.de/~roberts/meshgeneration.html">Schneiders' Finite Element Mesh Generation page</a>.</p> -</blockquote><h4><A href="#TOC">»</A><a name="constrained">Can</a> Qhull +</blockquote><h4><A href="#TOC">»</A><a name="constrained">Can</a> Qhull produce a triangular mesh for an object?</h4><blockquote> <p>Yes for convex objects, no for non-convex objects. For @@ -707,7 +707,7 @@ non-convex objects, it triangulates the concavities. Unless the object has many points on its surface, triangles may cross the surface. </p> -</blockquote><h4><A href="#TOC">»</A><a name="dridges">For</a> 3-d Delaunay +</blockquote><h4><A href="#TOC">»</A><a name="dridges">For</a> 3-d Delaunay triangulations, how do I report the triangles of each tetrahedron?</h4><blockquote> @@ -751,7 +751,7 @@ tetrahedron 2 9 5 8. </p> See "<A href="#ridges2">How</A> do I visit the ridges of a Delaunay triangulation?"</p> -</blockquote><h4><A href="#TOC">»</A><a name="vsphere">How</a> do I construct +</blockquote><h4><A href="#TOC">»</A><a name="vsphere">How</a> do I construct the Voronoi diagram of cospherical points?</h4><blockquote> <p>Three-d terrain data can be approximated with cospherical @@ -850,7 +850,7 @@ rbox d G1 | qconvex i vertex 0 (i.e., [-0.577, 0.577, 0.577]) is the Voronoi vertex for input sites {3, 1, 4} (i.e., {[0,1,0], [0,0,1], [-1,0,0]}). </p> -</blockquote><h4><A href="#TOC">»</A><a name="3dd">How</a> do I construct a +</blockquote><h4><A href="#TOC">»</A><a name="3dd">How</a> do I construct a 3-d Delaunay triangulation?</h4><blockquote> <p>For 3-d Delaunay triangulations with cospherical input sites, @@ -954,7 +954,7 @@ rbox r y c G0.1 | qdelaunay Qt i </pre> </blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="2d">How</a> do I get the +</blockquote><h4><A href="#TOC">»</A><a name="2d">How</a> do I get the triangles for a 2-d Delaunay triangulation and the vertices of its Voronoi diagram?</h4><blockquote> @@ -1009,7 +1009,7 @@ or <p>rbox 10 D2 | qconvex Fx </p> </blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="rays">Can</a> Qhull compute the +</blockquote><h4><A href="#TOC">»</A><a name="rays">Can</a> Qhull compute the unbounded rays of the Voronoi diagram?</h4><blockquote> <p>Use '<A href="qh-optf.htm#Fo2">Fo</A>' to compute the separating @@ -1025,7 +1025,7 @@ option '<A href="qh-optf.htm#Fv2">Fv</A>. See <A href="qvoronoi.htm#graphics" >Voronoi graphics</A> and <A href="qvoronoi.htm#notes" >Voronoi notes</A>. </p> -</blockquote><h4><A href="#TOC">»</A><a name="big">Can </a>Qhull triangulate +</blockquote><h4><A href="#TOC">»</A><a name="big">Can </a>Qhull triangulate a hundred 16-d points?</h4><blockquote> <p>No. This is an immense structure. A triangulation of 19, 16-d @@ -1036,9 +1036,9 @@ megabytes of memory. When Qhull uses virtual memory, it becomes too slow to use. </p> </blockquote> -<h2><A href="#TOC">»</A>Approximation questions</h2> +<h2><A href="#TOC">»</A>Approximation questions</h2> -<h4><A href="#TOC">»</A><a name="simplex">How</a> do I +<h4><A href="#TOC">»</A><a name="simplex">How</a> do I approximate data with a simplex</h4><blockquote> <p>Qhull may be used to help select a simplex that approximates a @@ -1081,9 +1081,9 @@ rbox 1000 | qconvex W0.05 C0.05 PA6 Fo </blockquote> </blockquote> -<h2><A href="#TOC">»</A>Halfspace questions</h2> +<h2><A href="#TOC">»</A>Halfspace questions</h2> -<h4><A href="#TOC">»</A><a name="halfspace">How</a> do I compute the +<h4><A href="#TOC">»</A><a name="halfspace">How</a> do I compute the intersection of halfspaces with Qhull?</h4><blockquote> <p>Qhull computes the halfspace intersection about a point. The @@ -1100,10 +1100,10 @@ See the <A href="qhalf.htm#notes">manual</A>. You will need </blockquote> -<h2><A href="#TOC">»</A><a name="library">Qhull library +<h2><A href="#TOC">»</A><a name="library">Qhull library questions</a></h2> -<h4><A href="#TOC">»</A><a name="math">Is</a> Qhull available for Mathematica, Matlab, or Maple?</h4><blockquote> +<h4><A href="#TOC">»</A><a name="math">Is</a> Qhull available for Mathematica, Matlab, or Maple?</h4><blockquote> <p><b>MATLAB</b> @@ -1139,7 +1139,7 @@ href="qh-opto.htm#m">m</a>') and Maple ('<a href="qh-optf.htm#FM">FM</a>') output options. <p></p> -</blockquote><h4><A href="#TOC">»</A><a name="ridges">Why</a> are there too few ridges?</h4><blockquote> +</blockquote><h4><A href="#TOC">»</A><a name="ridges">Why</a> are there too few ridges?</h4><blockquote> The following sample code may produce fewer ridges than expected: @@ -1177,7 +1177,7 @@ each ridge once (instead of twice). For example, } </pre></blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="call">Can</a> Qhull use coordinates without placing +</blockquote><h4><A href="#TOC">»</A><a name="call">Can</a> Qhull use coordinates without placing them in a data file?</h4><blockquote> <p>Use qh_call_qhull(). See user_eg.c for an example. @@ -1187,14 +1187,14 @@ See the manual for an introduction to the Qhull library. answer.</p> -</blockquote><h4><A href="#TOC">»</A><a name="size">How</a> large are Qhull's data structures?</h4><blockquote> +</blockquote><h4><A href="#TOC">»</A><a name="size">How</a> large are Qhull's data structures?</h4><blockquote> <p>Qhull uses a general-dimension data structure. The size depends on the dimension. Use option 'Ts' to print out the memory statistics [e.g., 'rbox D2 10 | qconvex Ts']. -</blockquote><h4><A href="#TOC">»</A><a name="inc">Can</a> Qhull construct +</blockquote><h4><A href="#TOC">»</A><a name="inc">Can</a> Qhull construct convex hulls and Delaunay triangulations one point at a time?</h4><blockquote> <p>The Qhull library may be used to construct convex hulls and @@ -1224,7 +1224,7 @@ are not clearly convex with their neighbors. It appears to work most of the time, but fails for cases that Qhull normally handles well [see the test call to qh_triangulate in qh_addpoint]. -</blockquote><h4><A href="#TOC">»</A><a name="ridges2">How</a> do I visit the +</blockquote><h4><A href="#TOC">»</A><a name="ridges2">How</a> do I visit the ridges of a Delaunay triangulation?</h4><blockquote> <p>To visit the ridges of a Delaunay triangulation, visit each @@ -1272,7 +1272,7 @@ an API. It currently provides everything needed, but the programmer has to do a lot of work. Hopefully someone will write C++ wrapper classes or a Python module for Qhull. </p> -</blockquote><h4><A href="#TOC">»</A><a name="listd">How</a> do I visit the +</blockquote><h4><A href="#TOC">»</A><a name="listd">How</a> do I visit the Delaunay regions?</h4><blockquote> <p>Qhull constructs a Delaunay triangulation by lifting the @@ -1291,7 +1291,7 @@ visit each facet of the lower convex hull, use: </p> } </pre> -</blockquote><h4><A href="#TOC">»</A><a name="outside">When</a> is a point +</blockquote><h4><A href="#TOC">»</A><a name="outside">When</a> is a point outside or inside a facet?</h4><blockquote> <p>A point is outside of a facet if it is clearly outside the @@ -1333,7 +1333,7 @@ of the furthest point from a facet may be off by qh.DISTround and the computation of the current distance to the facet may be off by qh.DISTround. </p> -</blockquote><h4><A href="#TOC">»</A><a name="closest">How</a> do I find the +</blockquote><h4><A href="#TOC">»</A><a name="closest">How</a> do I find the facet that is closest to a point?</h4><blockquote> <p>Use qh_findbestfacet(). For example, </p> @@ -1363,7 +1363,7 @@ skipped for spherical distributions. </p> Delaunay triangle that is closest to a point?" </p> -</blockquote><h4><A href="#TOC">»</A><a name="vclosest">How</a> do I find the +</blockquote><h4><A href="#TOC">»</A><a name="vclosest">How</a> do I find the Delaunay triangle or Voronoi region that is closest to a point?</h4><blockquote> <p>A Delaunay triangulation subdivides the plane, or in general @@ -1437,7 +1437,7 @@ vertex of the closest Delaunay triangle. </p> input site is 'bestvertex->point' */ </pre> -</blockquote><h4><A href="#TOC">»</A><a name="vertices">How</a> do I list the +</blockquote><h4><A href="#TOC">»</A><a name="vertices">How</a> do I list the vertices?</h4><blockquote> <p>To list the vertices (i.e., extreme points) of the convex hull @@ -1456,7 +1456,7 @@ use </p> </pre> </blockquote> -</blockquote><h4><A href="#TOC">»</A><a name="test">How</a> do I test code +</blockquote><h4><A href="#TOC">»</A><a name="test">How</a> do I test code that uses the Qhull library?</h4><blockquote> <p>Compare the output from your program with the output from the @@ -1467,7 +1467,7 @@ Compare the trace outputs. If you do everything right, the two trace outputs should be almost the same. The trace output will also guide you to the functions that you need to review. </p> -</blockquote><h4><A href="#TOC">»</A><a name="orient">When</a> I compute a +</blockquote><h4><A href="#TOC">»</A><a name="orient">When</a> I compute a plane equation from a facet, I sometimes get an outward-pointing normal and sometimes an inward-pointing normal</h4><blockquote> diff --git a/html/qh-get.htm b/html/qh-get.htm index dbe0b77..21e428b 100644 --- a/html/qh-get.htm +++ b/html/qh-get.htm @@ -68,13 +68,15 @@ width="100" height="100"></a> Qhull Downloads</h1> See <a href=http://www.qhull.org/news/#bugs>Bugs</a> [Apr 2008]. </p> </li> + <li><a href="http://packages.debian.org/sid/libqhull5">Download: libqhull5 2009.1 for Debian Unix</a> (1.3M) + <p>Type: C source code for Unix systems</p> + <p>Qhull 2009.1 for Octave with Autoconf/Automake/Libtool + support [R. Laboissiere]. If using gcc 4.1, 4.2, or 4.3, please compile qset.c with + -fno-strict-aliasing (otherwise qhull segfaults) [Karas, Krishnaswami]. + See <a href=http://www.qhull.org/news/#bugs>Bugs</a> [Apr 2008]. + </p> + </li> - <!--- - - <li>B. Pearlmutter created a -<a href=http://packages.debian.org/stable/math/qhull-bin.html>Debian build</a> of Qhull 3.1 -and upgraded it to 2002.1. - </li> <li><a href="http://www.qhull.org/download/qhull-2003.1-1mdk.i686.rpm">Download: Qhull version 2003.1 i686 rpm</a> (670K) <p>Type: rpm build for Mandrake 9.2 and RedHat @@ -83,11 +85,6 @@ and upgraded it to 2002.1. <p>For other Linux systems, use the <a href="http://www.qhull.org/download/qhull-2003.1-1mdk.src.rpm">src rpm</a> [L. Mazet] </li> - <li><a href="http://packages.debian.org/search?keywords=qhull">Download: - Qhull 2003.1 for Debian</a> - <p>Type: Debian packages - <p>Includes documentation, source files, and previous distributions [R. Laboissiere].</p> - </li> --> <li><a href=http://www6.uniovi.es/ftp/pub/mirrors/geom.umn.edu/software/ghindex.html>Spanish diff --git a/html/qh-impre.htm b/html/qh-impre.htm index 1aa5d8a..b8312b3 100644 --- a/html/qh-impre.htm +++ b/html/qh-impre.htm @@ -50,7 +50,7 @@ precision errors while constructing the hull. </p> <hr> -<h2><a href="#TOP">»</a><a name="TOC">Qhull +<h2><a href="#TOP">»</a><a name="TOC">Qhull imprecision: Table of Contents </a></h2> <ul> @@ -68,7 +68,7 @@ imprecision: Table of Contents </a></h2> <hr> -<h2><a href="#TOC">»</a><a name="prec">Precision problems</a></h2> +<h2><a href="#TOC">»</a><a name="prec">Precision problems</a></h2> <p>Since Qhull uses floating point arithmetic, roundoff error occurs with each calculation. This causes problems for @@ -153,7 +153,7 @@ convex hull of the input set. Like Qhull, it is an incremental algorithm that processes points furthest from the intermediate result and ignores points that are close to the intermediate result. -<h2><a href="#TOC">»</a><a name="joggle">Merged facets or joggled input</a></h2> +<h2><a href="#TOC">»</a><a name="joggle">Merged facets or joggled input</a></h2> <p>This section discusses the choice between merged facets and joggled input. By default, Qhull uses merged facets to handle @@ -217,7 +217,7 @@ Since all precision problems in Qhull are associated with one or more facets, Qhull will either fix the problem or attempt to merge the last remaining facets. </p> -<h2><a href="#TOC">»</a><a name="delaunay">Delaunay +<h2><a href="#TOC">»</a><a name="delaunay">Delaunay triangulations </a></h2> <p>Programs that use Delaunay triangulations traditionally assume @@ -250,7 +250,7 @@ particularly interesting. It is similar to facet merging in Qhull. simplification with bounded error [<i>Computers and Graphics</i>, 22.5:565-585, 1998]. It remove nodes using front propagation and multiple remeshing. -<h2><a href="#TOC">»</a><a name="halfspace">Halfspace intersection</a></h2> +<h2><a href="#TOC">»</a><a name="halfspace">Halfspace intersection</a></h2> <p> The identity pipe for Qhull reveals some precision questions for @@ -268,7 +268,7 @@ For example, compare the first results with the later two results: [T. Abraham] </blockquote> -<h2><a href="#TOC">»</a><a name="imprecise">Merged facets </a></h2> +<h2><a href="#TOC">»</a><a name="imprecise">Merged facets </a></h2> <p>Qhull detects precision problems when computing distances. A precision problem occurs if @@ -325,7 +325,7 @@ below simplex <i>bcd </i>, and vertex <i>d</i> is clearly below simplex <i>abc</i>. When building the hull, Qhull tests vertices if the horizon is simplicial and no merges occur. </p> -<h2><a href="#TOC">»</a><a name="how">How Qhull merges facets</a></h2> +<h2><a href="#TOC">»</a><a name="how">How Qhull merges facets</a></h2> <p>If two facets are not clearly convex, then Qhull removes one or the other facet by merging the facet into a neighbor. It @@ -353,7 +353,7 @@ occurred (qh_WIDEcoplanar) and the number of extra vertices is smaller than a constant (qh_MAXnewcentrum).</p> -<h2><a href="#TOC">»</a><a name="limit">Limitations of merged +<h2><a href="#TOC">»</a><a name="limit">Limitations of merged facets</a></h2> <ul> @@ -541,7 +541,7 @@ try a strong convexity constraint: </ul> -<h2><a href="#TOC">»</a><a name="injoggle">Joggled input</a></h2> +<h2><a href="#TOC">»</a><a name="injoggle">Joggled input</a></h2> <p>Joggled input is a simple work-around for precision problems in computational geometry ["joggle: to shake or jar @@ -713,7 +713,7 @@ distance computation. This is about 2,000 times better than joggled input. Most applications though will not notice the difference. </p> -<h2><a href="#TOC">»</a><a name="exact">Exact arithmetic</a></h2> +<h2><a href="#TOC">»</a><a name="exact">Exact arithmetic</a></h2> <p>Exact arithmetic may be used instead of floating point. Singularities such as coplanar points can either be handled @@ -734,7 +734,7 @@ This reduces the number of nearly singular computations. When a determinant is nearly singular, he uses exact arithmetic to compute a precise result.</p> -<h2><a href="#TOC">»</a><a name="approximate">Approximating a +<h2><a href="#TOC">»</a><a name="approximate">Approximating a convex hull</a></h2> <p>Qhull may be used for approximating a convex hull. This is diff --git a/html/qh-optc.htm b/html/qh-optc.htm index 453b607..b27c79e 100644 --- a/html/qh-optc.htm +++ b/html/qh-optc.htm @@ -33,7 +33,7 @@ indicated by an upper-case letter followed by a number. <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="prec">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -95,7 +95,7 @@ href="qh-impre.htm">Imprecision in Qhull</a>.</p> <hr> -<h3><a href="#prec">»</a><a name="An">A-n - cosine of maximum +<h3><a href="#prec">»</a><a name="An">A-n - cosine of maximum angle for pre-merging.</a></h3> <p>Pre-merging occurs while Qhull constructs the hull. It is @@ -119,7 +119,7 @@ along with 'A-n'. It skips merges of coplanar facets until after the hull is constructed and before '<a href="#An2">An</a>' and '<a href="#Cn2">Cn</a>' are checked. </p> -<h3><a href="#prec">»</a><a name="An2">An - cosine of maximum angle for +<h3><a href="#prec">»</a><a name="An2">An - cosine of maximum angle for post-merging.</a></h3> <p>Post merging occurs after the hull is constructed. For @@ -130,7 +130,7 @@ maximum roundoff error.</p> <p>If 'An' is set without '<a href="#Cn2">Cn</a>', then '<a href="#Cn2">C0</a>' is automatically set. </p> -<h3><a href="#prec">»</a><a name="C0">C-0 - handle all precision +<h3><a href="#prec">»</a><a name="C0">C-0 - handle all precision errors </a></h3> <p>Qhull handles precision errors by merging facets. The 'C-0' @@ -150,7 +150,7 @@ processed points. The optimization may be turned off by setting a small value such as 'C-1e-30'. See <a href="qh-impre.htm">How Qhull handles imprecision</a>.</p> -<h3><a href="#prec">»</a><a name="Cn">C-n - centrum radius for +<h3><a href="#prec">»</a><a name="Cn">C-n - centrum radius for pre-merging</a></h3> <p>Pre-merging occurs while Qhull constructs the hull. It is @@ -176,7 +176,7 @@ along with 'C-n'. It skips merges of coplanar facets until after the hull is constructed and before '<a href="#An2">An</a>' and '<a href="#Cn2">Cn</a>' are checked. </p> -<h3><a href="#prec">»</a><a name="Cn2">Cn - centrum radius for +<h3><a href="#prec">»</a><a name="Cn2">Cn - centrum radius for post-merging</a></h3> <p>Post-merging occurs after Qhull constructs the hull. It is @@ -192,7 +192,7 @@ post-merging is used ('<a href="qh-optq.htm#Q0">Q0</a>' with 'Cn'), Qhull may fail to produce a hull due to precision errors during the hull's construction.</p> -<h3><a href="#prec">»</a><a name="En">En - max roundoff error +<h3><a href="#prec">»</a><a name="En">En - max roundoff error for distance computations</a></h3> <p>This allows the user to change the maximum roundoff error @@ -202,7 +202,7 @@ convex. The statistic "max. distance of a new vertex to a facet" (from option '<a href="qh-optt.htm#Ts">Ts</a>') is a reasonable upper bound for the actual roundoff error. </p> -<h3><a href="#prec">»</a><a name="Rn">Rn - randomly perturb +<h3><a href="#prec">»</a><a name="Rn">Rn - randomly perturb computations </a></h3> <p>This option perturbs every distance, hyperplane, and angle @@ -216,7 +216,7 @@ href="qh-eg.htm#merge">Examples </a>section for an example.</p> and '<a href="#Cn">C-2n</a>'. To use time as the random number seed, use option '<a href="qh-optq.htm#QRn">QR-1</a>'.</p> -<h3><a href="#prec">»</a><a name="Un">Un - max distance for a +<h3><a href="#prec">»</a><a name="Un">Un - max distance for a new, coplanar point </a></h3> <p>This allows the user to set coplanarity. When pre-merging ('<a @@ -224,7 +224,7 @@ href="#Cn">C-n </a>', '<a href="#An">A-n</a>' or '<a href="qh-optq.htm#Qx">Qx</a>'), Qhull merges a new point into any coplanar facets. The default value for 'Un' is '<a href="#Vn">Vn</a>'.</p> -<h3><a href="#prec">»</a><a name="Vn">Vn - min distance for a +<h3><a href="#prec">»</a><a name="Vn">Vn - min distance for a visible facet </a></h3> <p>This allows the user to set facet visibility. When adding a @@ -244,7 +244,7 @@ furthest outside ('<a href="qh-optq.htm#Qf">Qf</a>') is not selected; this combination usually results in flipped facets (i.e., reversed normals).</p> -<h3><a href="#prec">»</a><a name="Wn">Wn - min distance above +<h3><a href="#prec">»</a><a name="Wn">Wn - min distance above plane for outside points</a></h3> <p>Points are added to the convex hull only if they are clearly diff --git a/html/qh-optf.htm b/html/qh-optf.htm index 3da4f1e..7d293ea 100644 --- a/html/qh-optf.htm +++ b/html/qh-optf.htm @@ -34,7 +34,7 @@ options. </p> <hr> -<p><A href="index.htm#TOC">»</a> <A href="qh-quick.htm#programs">Programs</a> +<p><A href="index.htm#TOC">»</a> <A href="qh-quick.htm#programs">Programs</a> <a name="format">•</a> <A href="qh-quick.htm#options">Options</a> • <A href="qh-opto.htm#output">Output</a> • <A href="qh-optf.htm#format">Formats</a> @@ -130,7 +130,7 @@ may also be used.</p> <hr> -<h3><A href="#format">»</a><a name="Fa">Fa - print area for each +<h3><A href="#format">»</a><a name="Fa">Fa - print area for each facet </a></h3> <p>The first line is the number of facets. The remaining lines @@ -156,7 +156,7 @@ the corresponding triangles are ignored.</p> facet's hyperplane. If so, the approximation is less than the actual value and it may be significantly less. </p> -<h3><A href="#format">»</a><a name="FA">FA - compute total area +<h3><A href="#format">»</a><a name="FA">FA - compute total area and volume for option 's' </a></h3> <p>With option 'FA', Qhull includes the total area and volume in @@ -177,7 +177,7 @@ equals of the total area of the Delaunay triangulation. </p> <p>See '<A href="#Fa">Fa</a>' for further details. Option '<A href="#FS">FS</a>' also computes the total area and volume.</p> -<h3><A href="#format">»</a><a name="Fc">Fc - print coplanar +<h3><A href="#format">»</a><a name="Fc">Fc - print coplanar points for each facet </a></h3> <p>The output starts with the number of facets. Then each facet @@ -197,7 +197,7 @@ facet it is furthest above (resp., least below). </p> coplanar point coordinates. Use '<A href="qh-optf.htm#Fv">Fv</a>' to print vertices. </p> -<h3><A href="#format">»</a><a name="FC">FC - print centrum or +<h3><A href="#format">»</a><a name="FC">FC - print centrum or Voronoi vertex for each facet </a></h3> <p>The output starts with the dimension followed by the number of @@ -205,7 +205,7 @@ facets. Then each facet centrum is printed, one per line. For <A href="qvoronoi.htm">qvoronoi</a>, Voronoi vertices are printed instead. </p> -<h3><A href="#format">»</a><a name="Fd">Fd - use cdd format for +<h3><A href="#format">»</a><a name="Fd">Fd - use cdd format for input </a></h3> <p>The input starts with comments. The first comment is reported @@ -222,7 +222,7 @@ opposite of Qhull's convention. The first two lines of the input may be an interior point in '<A href="#FV">FV</a>' format.</p> -<h3><A href="#format">»</a><a name="FD">FD - use cdd format for +<h3><A href="#format">»</a><a name="FD">FD - use cdd format for normals </a></h3> <p>Option 'FD' prints normals ('<A href="qh-opto.htm#n">n</a>', '<A @@ -236,7 +236,7 @@ coefficients. The offset for points is 1.0. For normals, the offset and coefficients use the opposite sign from Qhull. The data ends with an "end" line.</p> -<h3><A href="#format">»</a><a name="FF">FF - print facets w/o +<h3><A href="#format">»</a><a name="FF">FF - print facets w/o ridges </a></h3> <p>Option 'FF' prints all fields of all facets (as in '<A @@ -245,7 +245,7 @@ useful in higher dimensions where a facet may have many ridges. For simplicial facets, options 'FF' and '<A href="qh-opto.htm#f">f </a>' are equivalent.</p> -<h3><A href="#format">»</a><a name="Fi">Fi - print inner planes +<h3><A href="#format">»</a><a name="Fi">Fi - print inner planes for each facet </a></h3> <p>The first line is the dimension plus one. The second line is @@ -260,7 +260,7 @@ roundoff error for computing the vertex distance.</p> href="qh-optg.htm#Gi" >Gi</a>') include an additional offset for vertex visualization and roundoff error. </p> -<h3><A href="#format">»</a><a name="Fi2">Fi - print separating +<h3><A href="#format">»</a><a name="Fi2">Fi - print separating hyperplanes for inner, bounded Voronoi regions</a></h3> <p>With <A href="qvoronoi.htm" >qvoronoi</a>, 'Fi' prints the @@ -289,7 +289,7 @@ non-zero. The deviations appear to be largest when the corresponding Delaunay triangles are large and thin; for example, the Voronoi diagram of nearly cospherical points. </p> -<h3><A href="#format">»</a><a name="FI">FI - print ID for each +<h3><A href="#format">»</a><a name="FI">FI - print ID for each facet </a></h3> <p>Print facet identifiers. These are used internally and listed @@ -297,7 +297,7 @@ with options '<A href="qh-opto.htm#f">f</a>' and '<A href="#FF">FF</a>'. Options '<A href="#Fn">Fn </a>' and '<A href="#FN">FN</a>' use facet identifiers for negative indices. </p> -<h3><A href="#format">»</a><a name="Fm">Fm - print merge count +<h3><A href="#format">»</a><a name="Fm">Fm - print merge count for each facet </a></h3> <p>The first line is the number of facets. The remainder is the @@ -305,7 +305,7 @@ number of merges for each facet, one per line. At most 511 merges are reported for a facet. See '<A href="qh-optp.htm#PMn">PMn</a>' for printing the facets with the most merges. </p> -<h3><a href="#format">»</a><a name="FM">FM - print Maple +<h3><a href="#format">»</a><a name="FM">FM - print Maple output </a></h3> <p>Qhull writes a Maple file for 2-d and 3-d convex hulls, @@ -365,7 +365,7 @@ convex hull. <p>See <a href="qh-faq.htm#math">Is Qhull available for Maple?</a> for other URLs. -<h3><A href="#format">»</a><a name="Fn">Fn - print neighboring +<h3><A href="#format">»</a><a name="Fn">Fn - print neighboring facets for each facet </a></h3> <p>The output starts with the number of facets. Then each facet @@ -380,7 +380,7 @@ is the negation of the facet's ID (option '<A href="#FI">FI</a>'). For example, negative indices are used for facets "at infinity" in the Delaunay triangulation.</p> -<h3><A href="#format">»</a><a name="FN">FN - print neighboring +<h3><A href="#format">»</a><a name="FN">FN - print neighboring facets for each point </a></h3> <p>The first line is the number of points. Then each point is @@ -419,7 +419,7 @@ and increment non-negative indices by one. </p> library</a> or <A href="qh-code.htm#cpp">C++ interface</a>, option 'FN' has the side effect of reordering the neighbors for a vertex </p> -<h3><A href="#format">»</a><a name="Fo">Fo - print outer planes +<h3><A href="#format">»</a><a name="Fo">Fo - print outer planes for each facet </a></h3> <p>The first line is the dimension plus one. The second line is @@ -441,7 +441,7 @@ outer planes.</p> href="qh-optg.htm#G" >G</a>') include an additional offset for vertex/point visualization, 'lines closer,' and roundoff error.</p> -<h3><A href="#format">»</a><a name="Fo2">Fo - print separating +<h3><A href="#format">»</a><a name="Fo2">Fo - print separating hyperplanes for outer, unbounded Voronoi regions</a></h3> <p>With <A href="qvoronoi.htm" >qvoronoi</a>, 'Fo' prints the @@ -465,13 +465,13 @@ and '<A href="qh-optf.htm#Fv2">Fv</a>' for the corresponding Voronoi vertices. Use '<A href="qh-optt.htm#Tv">Tv</a>' to verify that the corresponding Voronoi vertices lie on the hyperplane. </p> -<h3><A href="#format">»</a><a name="FO">FO - print list of +<h3><A href="#format">»</a><a name="FO">FO - print list of selected options </a></h3> <p>Lists selected options and default values to stderr. Additional 'FO's are printed to stdout. </p> -<h3><A href="#format">»</a><a name="Fp">Fp - print points at +<h3><A href="#format">»</a><a name="Fp">Fp - print points at halfspace intersections</a></h3> <p>The first line is the number of intersection points. The @@ -486,7 +486,7 @@ is its offset, the halfspace intersection occurs at [x/-b,y/-b,z/-b] plus the interior point. If <i>b>=0</i>, the halfspace intersection is unbounded. </p> -<h3><A href="#format">»</a><a name="FP">FP - print nearest +<h3><A href="#format">»</a><a name="FP">FP - print nearest vertex for coplanar points </a></h3> <p>The output starts with the number of coplanar points. Then @@ -515,13 +515,13 @@ facets are triangulated ('<A href="qh-optq.htm#Qt">Qt</a>'), option 'FP' may be inefficient. It redetermines the original vertex set for each coplanar point.</p> -<h3><A href="#format">»</a><a name="FQ">FQ - print command for +<h3><A href="#format">»</a><a name="FQ">FQ - print command for qhull and input </a></h3> <p>Prints qhull and input command, e.g., "rbox 10 s | qhull FQ". Option 'FQ' may be repeated multiple times.</p> -<h3><A href="#format">»</a><a name="Fs">Fs - print summary</a></h3> +<h3><A href="#format">»</a><a name="Fs">Fs - print summary</a></h3> <p>The first line consists of number of integers ("10") followed by the: @@ -556,7 +556,7 @@ deleted vertices; the input is nearly cospherical.</p> <P>Later versions of Qhull may produce additional integers or reals.</P> -<h3><A href="#format">»</a><a name="FS">FS - print sizes</a></h3> +<h3><A href="#format">»</a><a name="FS">FS - print sizes</a></h3> <p>The first line consists of the number of integers ("0"). The second line consists of the number of reals @@ -570,7 +570,7 @@ facet area. Both area and volume are approximations for non-simplicial facets. See option '<A href="#Fa">Fa </a>' for further notes. Option '<A href="#FA">FA </a>' also computes the total area and volume. </p> -<h3><A href="#format">»</a><a name="Ft">Ft - print triangulation</a></h3> +<h3><A href="#format">»</a><a name="Ft">Ft - print triangulation</a></h3> <p>Prints a triangulation with added points for non-simplicial facets. The output is </p> @@ -613,7 +613,7 @@ joggled input ('<A href="qh-optq.htm#QJn" >QJ</a>') or triangulated output ('<A it is printed after the input sites and before any centrums. It will not be used in a Delaunay facet.</p> -<h3><A href="#format">»</a><a name="Fv">Fv - print vertices for +<h3><A href="#format">»</a><a name="Fv">Fv - print vertices for each facet</a></h3> <p>The first line is the number of facets. Then each facet is @@ -622,7 +622,7 @@ followed by the corresponding point ids. Vertices are listed in the order they were added to the hull (the last one added is the first listed). Similar to option '<A href="qh-opto.htm#i">i</a>'.</p> -<h3><A href="#format">»</a><a name="Fv2">Fv - print Voronoi +<h3><A href="#format">»</a><a name="Fv2">Fv - print Voronoi diagram</a></h3> <p>With <A href="qvoronoi.htm" >qvoronoi</a>, 'Fv' prints the @@ -657,7 +657,7 @@ can formally describe these cases or write code to handle them, please send email to <A href="mailto:qhull@qhull.org" >qhull@qhull.org</a>. </p> -<h3><A href="#format">»</a><a name="FV">FV - print average +<h3><A href="#format">»</a><a name="FV">FV - print average vertex </a></h3> <p>The average vertex is the average of all vertex coordinates. @@ -673,7 +673,7 @@ coordinates. For example,</p> <p>prints the extreme points of the original point set (roundoff included). </p> -<h3><A href="#format">»</a><a name="Fx">Fx - print extreme +<h3><A href="#format">»</a><a name="Fx">Fx - print extreme points (vertices) of convex hulls and Delaunay triangulations</a></h3> <p>The first line is the number of points. The following lines diff --git a/html/qh-optg.htm b/html/qh-optg.htm index baeff1a..c2d34d9 100644 --- a/html/qh-optg.htm +++ b/html/qh-optg.htm @@ -37,7 +37,7 @@ and <a href="qh-optf.htm#format">Format</a> for other output options. <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="geomview">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -99,7 +99,7 @@ dual convex hull. </p> <hr> -<h3><a href="#geomview">»</a><a name="G">G - produce output for +<h3><a href="#geomview">»</a><a name="G">G - produce output for viewing with Geomview</a></h3> <p>By default, option 'G' displays edges in 2-d, outer planes in @@ -121,12 +121,12 @@ corresponding paraboloid. Geomview displays the 2-d Voronoi diagram. For halfspace intersections, it displays the dual convex hull. -<h3><a href="#geomview">»</a><a name="Ga">Ga - display all +<h3><a href="#geomview">»</a><a name="Ga">Ga - display all points as dots </a></h3> <p>Each input point is displayed as a green dot.</p> -<h3><a href="#geomview">»</a><a name="Gc">Gc - display centrums +<h3><a href="#geomview">»</a><a name="Gc">Gc - display centrums (3-d) </a></h3> <p>The centrum is defined by a green radius sitting on a blue @@ -136,7 +136,7 @@ neighboring centrums are below the facet. The radius is defined by '<a href="qh-optc.htm#Cn">C-n</a>' or '<a href="qh-optc.htm#Cn2">Cn</a>'.</p> -<h3><a href="#geomview">»</a><a name="GDn">GDn - drop dimension +<h3><a href="#geomview">»</a><a name="GDn">GDn - drop dimension n in 3-d and 4-d output </a></h3> <p>The result is a 2-d or 3-d object. In 4-d, this corresponds to @@ -161,7 +161,7 @@ can slice the object along any 4-d plane. You can also flip the halfspace that's deleted when slicing. By combining these features, you can get some interesting cross sections.</p> -<h3><a href="#geomview">»</a><a name="Gh">Gh - display +<h3><a href="#geomview">»</a><a name="Gh">Gh - display hyperplane intersections (3-d, 4-d)</a></h3> <p>In 3-d, the intersection is a black line. It lies on two @@ -171,7 +171,7 @@ projected to the intersection of both hyperplanes. If you turn on edges (Geomview's 'appearances' menu), each triangle corresponds to one ridge. The ridges may overlap each other.</p> -<h3><a href="#geomview">»</a><a name="Gi">Gi - display inner +<h3><a href="#geomview">»</a><a name="Gi">Gi - display inner planes only (2-d, 3-d)</a></h3> <p>The inner plane of a facet is below all of its vertices. It is @@ -179,7 +179,7 @@ parallel to the facet's hyperplane. The inner plane's color is the opposite of the outer plane's color, i.e., <i>[1-r,1-g,1-b] </i>. Its edges are determined by the vertices.</p> -<h3><a href="#geomview">»</a><a name="Gn">Gn - do not display +<h3><a href="#geomview">»</a><a name="Gn">Gn - do not display planes </a></h3> <p>By default, Geomview displays the precise plane (no merging) @@ -187,14 +187,14 @@ or both inner and output planes (if merging). If merging, Geomview does not display the inner plane if the the difference between inner and outer is too small.</p> -<h3><a href="#geomview">»</a><a name="Go">Go - display outer +<h3><a href="#geomview">»</a><a name="Go">Go - display outer planes only (2-d, 3-d)</a></h3> <p>The outer plane of a facet is above all input points. It is parallel to the facet's hyperplane. Its color is determined by the facet's normal, and its edges are determined by the vertices.</p> -<h3><a href="#geomview">»</a><a name="Gp">Gp - display coplanar +<h3><a href="#geomview">»</a><a name="Gp">Gp - display coplanar points and vertices as radii </a></h3> <p>Coplanar points ('<a href="qh-optq.htm#Qc">Qc</a>'), interior @@ -217,7 +217,7 @@ coplanar points while 'Qci Gpv' displays coplanar and interior points. Option 'Qc' is automatically selected if 'Qi' is not selected with options 'Gpv'. -<h3><a href="#geomview">»</a><a name="Gr">Gr - display ridges +<h3><a href="#geomview">»</a><a name="Gr">Gr - display ridges (3-d) </a></h3> <p>A ridge connects the two vertices that are shared by @@ -226,7 +226,7 @@ topological edge between two facets while the hyperplane intersection is the geometric edge between two facets. Ridges are always displayed in 4-d.</p> -<h3><a href="#geomview">»</a><a name="Gt">Gt - transparent 3-d +<h3><a href="#geomview">»</a><a name="Gt">Gt - transparent 3-d Delaunay </a></h3> <p>A 3-d Delaunay triangulation looks like a convex hull with @@ -235,7 +235,7 @@ the outermost facets. It automatically sets options '<a href="#Gr">Gr</a>' and '<a href="#GDn">GDn</a>'. See example <a href="qh-eg.htm#17f">eg.17f.delaunay.3</a>.</p> -<h3><a href="#geomview">»</a><a name="Gv">Gv - display vertices +<h3><a href="#geomview">»</a><a name="Gv">Gv - display vertices as spheres (2-d, 3-d)</a></h3> <p>The radius of the sphere corresponds to the imprecision of the diff --git a/html/qh-opto.htm b/html/qh-opto.htm index ba7eae5..d22d8bb 100644 --- a/html/qh-opto.htm +++ b/html/qh-opto.htm @@ -37,7 +37,7 @@ options. </p> <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="output">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -84,7 +84,7 @@ Other outputs may be specified as follows. </p> <hr> -<h3><a href="#output">»</a><a name="f">f - print all fields of +<h3><a href="#output">»</a><a name="f">f - print all fields of all facets </a></h3> <p>Print <a href=../src/libqhull.h#facetT>all fields</a> of all facets. @@ -101,7 +101,7 @@ href="qh-code.htm#cpp">C++ interface</a>.</p> <p>Use the '<a href="qh-optf.htm#FF">FF</a>' option to print the facets but not the ridges. </p> -<h3><a href="#output">»</a><a name="i">i - print vertices +<h3><a href="#output">»</a><a name="i">i - print vertices incident to each facet </a></h3> <p>The first line is the number of facets. The remaining lines @@ -127,7 +127,7 @@ of non-simplicial facets as is. Use option '<a href="qh-optf.htm#Ft">Ft</a>' to print the coordinates of the centrums as well as those of the input points. </p> -<h3><a href="#output">»</a><a name="m">m - print Mathematica +<h3><a href="#output">»</a><a name="m">m - print Mathematica output </a></h3> <p>Qhull writes a Mathematica file for 2-d and 3-d convex hulls, @@ -155,7 +155,7 @@ convex hull. <p>See <a href="qh-faq.htm#math">Is Qhull available for Mathematica?</a> for URLs. -<h3><a href="#output">»</a><a name="n">n - print hyperplane +<h3><a href="#output">»</a><a name="n">n - print hyperplane normals with offsets </a></h3> <p>The first line is the dimension plus one. The second line is @@ -175,7 +175,7 @@ negative offset precedes its normal coefficients (i.e., if the origin is an interior point, the offset is positive). Qhull ends the output with the keyword "end". </p> -<h3><a href="#output">»</a><a name="o">o - print OFF file format +<h3><a href="#output">»</a><a name="o">o - print OFF file format </a></h3> <p>The output is: </p> @@ -216,7 +216,7 @@ without listing Voronoi vertices.</p> <p>If you are using the Qhull library, options 'v o' have the side effect of reordering the neighbors for a vertex.</p> -<h3><a href="#output">»</a><a name="p">p - print vertex and +<h3><a href="#output">»</a><a name="p">p - print vertex and point coordinates </a></h3> <p>The first line is the dimension. The second line is the number @@ -249,7 +249,7 @@ number of vertices, the dimension plus one, and "real". The vertices follow with a leading "1". Output ends with "end". </p> -<h3><a href="#output">»</a><a name="s">s - print summary to +<h3><a href="#output">»</a><a name="s">s - print summary to stderr </a></h3> <p>The default output of Qhull is a summary to stderr. Options '<a diff --git a/html/qh-optp.htm b/html/qh-optp.htm index f9a3917..1138fa1 100644 --- a/html/qh-optp.htm +++ b/html/qh-optp.htm @@ -36,7 +36,7 @@ and <a href="qh-optf.htm#format">Format</a> for other output options. <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="print">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> • <a @@ -78,7 +78,7 @@ href="qh-optt.htm#trace">Trace</a></p> </blockquote> <hr> -<h3><a href="#print">»</a><a name="PAn">PAn - keep n largest +<h3><a href="#print">»</a><a name="PAn">PAn - keep n largest facets by area</a></h3> <p>The <i>n</i> largest facets are marked good for printing. This @@ -86,7 +86,7 @@ may be useful for <a href="qh-impre.htm#approximate">approximating a hull</a>. Unless '<a href="#PG">PG</a>' is set, '<a href="#Pg">Pg</a>' is automatically set. </p> -<h3><a href="#print">»</a><a name="Pdk">Pdk:n - print facet if +<h3><a href="#print">»</a><a name="Pdk">Pdk:n - print facet if normal[k] >= n </a></h3> <p>For a given output, print only those facets with <i>normal[k] >= n</i> @@ -100,7 +100,7 @@ On Windows 95, do not combine multiple options. A 'd' is considered part of a number. For example, use 'Pd0:0.5 Pd1:0.5' instead of 'Pd0:0.5d1:0.5'. -<h3><a href="#print">»</a><a name="PDk">PDk:n - print facet if +<h3><a href="#print">»</a><a name="PDk">PDk:n - print facet if normal[k] <= n</a></h3> <p>For a given output, print only those facets with <i>normal[k] <= n</i> @@ -118,7 +118,7 @@ of the corresponding paraboloid. </p> number. Some compilers treat the 'D' as a double precision exponent. </p> -<h3><a href="#print">»</a><a name="PFn">PFn - keep facets whose +<h3><a href="#print">»</a><a name="PFn">PFn - keep facets whose area is at least n</a></h3> <p>The facets with area at least <i>n</i> are marked good for @@ -127,7 +127,7 @@ href="qh-impre.htm#approximate">approximating a hull</a>. Unless '<a href="#PG">PG</a>' is set, '<a href="#Pg">Pg</a>' is automatically set. </p> -<h3><a href="#print">»</a><a name="Pg">Pg - print good facets </a></h3> +<h3><a href="#print">»</a><a name="Pg">Pg - print good facets </a></h3> <p>Qhull can mark facets as "good". This is used to</p> @@ -148,7 +148,7 @@ options. It is automatically set for options '<a href="#PAn">PAn</a>', '<a href="#PFn">PFn </a>', '<a href="qh-optq.htm#QGn">QGn</a>', and '<a href="qh-optq.htm#QVn">QVn</a>'.</p> -<h3><a href="#print">»</a><a name="PG">PG - print neighbors of +<h3><a href="#print">»</a><a name="PG">PG - print neighbors of good facets</a></h3> <p>Option 'PG' can be used with or without option '<a href="#Pg">Pg</a>' @@ -156,7 +156,7 @@ to print the neighbors of good facets. For example, options '<a href="qh-optq.htm#QGn">QGn</a>' and '<a href="qh-optq.htm#QVn">QVn</a>' print the horizon facets for point <i>n. </i></p> -<h3><a href="#print">»</a><a name="PMn">PMn - keep n facets with +<h3><a href="#print">»</a><a name="PMn">PMn - keep n facets with most merges</a></h3> <p>The n facets with the most merges are marked good for @@ -168,7 +168,7 @@ automatically set. </p> <p>Use option '<a href="qh-optf.htm#Fm">Fm</a>' to print merges per facet. -<h3><a href="#print">»</a><a name="Po">Po - force output despite +<h3><a href="#print">»</a><a name="Po">Po - force output despite precision problems</a></h3> <p>Use options 'Po' and '<a href="qh-optq.htm#Q0">Q0</a>' if you @@ -204,7 +204,7 @@ This can save a significant amount of time. delete flipped facets from the output. </li> </ul> -<h3><a href="#print">»</a><a name="Po2">Po - if error, output +<h3><a href="#print">»</a><a name="Po2">Po - if error, output neighborhood of facet</a></h3> <p>If an error occurs before the completion of Qhull and tracing @@ -214,7 +214,7 @@ facets (if any). It uses the current output options.</p> <p>See '<a href="qh-optp.htm#Po">Po</a>' - force output despite precision problems. -<h3><a href="#print">»</a><a name="Pp">Pp - do not report +<h3><a href="#print">»</a><a name="Pp">Pp - do not report precision problems </a></h3> <p>With option 'Pp', Qhull does not print statistics about diff --git a/html/qh-optq.htm b/html/qh-optq.htm index 9d4e517..54fad5a 100644 --- a/html/qh-optq.htm +++ b/html/qh-optq.htm @@ -33,7 +33,7 @@ options are indicated by 'Q' followed by a letter. </p> <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="qhull">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -133,7 +133,7 @@ options are indicated by 'Q' followed by a letter. </p> <hr> -<h3><a href="#qhull">»</a><a name="Qbb">Qbb - scale the last +<h3><a href="#qhull">»</a><a name="Qbb">Qbb - scale the last coordinate to [0,m] for Delaunay</a></h3> <p>After scaling with option 'Qbb', the lower bound of the last @@ -151,7 +151,7 @@ squares, it may be much larger than the other coordinates. For example, <tt>rbox 10000 D2 B1e8 | qhull d</tt> has precision problems while <tt>rbox 10000 D2 B1e8 | qhull d Qbb</tt> is OK. </p> -<h3><a href="#qhull">»</a><a name="QbB">QbB - scale the input to +<h3><a href="#qhull">»</a><a name="QbB">QbB - scale the input to fit the unit cube</a></h3> <p>After scaling with option 'QbB', the lower bound will be -0.5 @@ -164,19 +164,19 @@ projection to the paraboloid. Under precise arithmetic, scaling does not change the topology of the convex hull. Scaling may reduce precision errors if coordinate values vary widely.</p> -<h3><a href="#qhull">»</a><a name="Qbk">Qbk:n - scale coord[k] +<h3><a href="#qhull">»</a><a name="Qbk">Qbk:n - scale coord[k] to low bound</a></h3> <p>After scaling, the lower bound for dimension k of the input points will be n. 'Qbk' scales coord[k] to -0.5. </p> -<h3><a href="#qhull">»</a><a name="QBk">QBk:n - scale coord[k] +<h3><a href="#qhull">»</a><a name="QBk">QBk:n - scale coord[k] to upper bound </a></h3> <p>After scaling, the upper bound for dimension k of the input points will be n. 'QBk' scales coord[k] to 0.5. </p> -<h3><a href="#qhull">»</a><a name="Qb0">Qbk:0Bk:0 - drop +<h3><a href="#qhull">»</a><a name="Qb0">Qbk:0Bk:0 - drop dimension k from the input points</a></h3> <p>Drop dimension<em> k </em>from the input points. For example, @@ -186,7 +186,7 @@ It happens before the Delaunay and Voronoi transformation. It happens after the halfspace transformation for both the data and the feasible point.</p> -<h3><a href="#qhull">»</a><a name="Qc">Qc - keep coplanar points +<h3><a href="#qhull">»</a><a name="Qc">Qc - keep coplanar points with nearest facet </a></h3> <p>During construction of the hull, a point is coplanar if it is @@ -221,7 +221,7 @@ if options '<a href="#Q5">Q5</a> <a href="#Q8">Q8</a>' are set, a coplanar point may be missed in the output (see <a href="qh-impre.htm#limit">Qhull limitations</a>).</p> -<h3><a href="#qhull">»</a><a name="Qf">Qf - partition point to +<h3><a href="#qhull">»</a><a name="Qf">Qf - partition point to furthest outside facet </a></h3> <p>After adding a new point to the convex hull, Qhull partitions @@ -240,7 +240,7 @@ occur.</p> <p>Option '<a href="#Q9">Q9</a>' processes the furthest of all furthest points.</p> -<h3><a href="#qhull">»</a><a name="Qg">Qg - only build good +<h3><a href="#qhull">»</a><a name="Qg">Qg - only build good facets (needs 'QGn' 'QVn' or 'Pdk') </a></h3> <p>Qhull has several options for defining and printing good @@ -262,7 +262,7 @@ href="qh-optc.htm#Cn">C-n</a>') is not used and there are coplanar facets, then 'Qg Pg' may produce a different result than '<a href="qh-optp.htm#Pg">Pg</a>'. </p> -<h3><a href="#qhull">»</a><a name="QGn">QGn - good facet if +<h3><a href="#qhull">»</a><a name="QGn">QGn - good facet if visible from point n, -n for not visible </a></h3> <p>With option 'QGn', a facet is good (see '<a href="#Qg">Qg</a>' @@ -274,7 +274,7 @@ href="qh-optt.htm#TCn">TCn</a>' or '<a href="qh-optt.htm#TPn">TPn</a>').</p> <p>With <a href="rbox.htm">rbox</a>, use the 'Pn,m,r' option to define your point; it will be point 0 ('QG0'). </p> -<h3><a href="#qhull">»</a><a name="Qi">Qi - keep interior points +<h3><a href="#qhull">»</a><a name="Qi">Qi - keep interior points with nearest facet </a></h3> <p>Normally Qhull ignores points that are clearly interior to the @@ -295,7 +295,7 @@ reports the number of interior points (should always be zero).</p> '<a href="qh-optf.htm#Fc">Fc</a>', '<a href="qh-optf.htm#FN">FN</a>', and '<a href="qh-optf.htm#FP">FP</a>' include interior points. </p> -<h3><a href="#qhull">»</a><a name="QJ">QJ</a> or <a name="QJn">QJn</a> - joggled +<h3><a href="#qhull">»</a><a name="QJ">QJ</a> or <a name="QJn">QJn</a> - joggled input to avoid precision errors</a></h3> <p>Option 'QJ' or 'QJn' joggles each input coordinate by adding a @@ -351,7 +351,7 @@ seed. If Qhull restarts, it will redisplay the options. </p> <p>Use option '<a href="qh-optt.htm#TRn">TRn</a>' to estimate the probability that Qhull will fail for a given 'QJn'. -<h3><a href="#qhull">»</a><a name="Qm">Qm - only process points +<h3><a href="#qhull">»</a><a name="Qm">Qm - only process points that increase the maximum outer plane </a></h3> <p>Qhull reports the maximum outer plane in its summary ('<a @@ -362,7 +362,7 @@ This is equivalent to always adjusting '<a href="qh-optc.htm#Wn">Wn is ignored for points above the upper convex hull of a Delaunay triangulation. Option 'Qm' is no longer important for merging.</p> -<h3><a href="#qhull">»</a><a name="Qr">Qr - process random +<h3><a href="#qhull">»</a><a name="Qr">Qr - process random outside points instead of furthest ones </a></h3> <p>Normally, Qhull processes the furthest point of a facet's @@ -380,7 +380,7 @@ retained the previously constructed facets. </p> "distance tests". Qhull does not report CPU time because the randomization is inefficient. </p> -<h3><a href="#qhull">»</a><a name="QRn">QRn - random rotation </a></h3> +<h3><a href="#qhull">»</a><a name="QRn">QRn - random rotation </a></h3> <p>Option 'QRn' randomly rotates the input. For Delaunay triangulations (<a href=qdelaun.htm>qdelaunay</a> or <a href=qvoronoi.htm>qvoronoi</a>), @@ -392,7 +392,7 @@ use n as the random number seed. If <em>n=-1</em>, don't rotate but use time as the random number seed. If <em>n<-1</em>, don't rotate but use <em>n</em> as the random number seed. </p> -<h3><a href="#qhull">»</a><a name="Qs">Qs - search all points +<h3><a href="#qhull">»</a><a name="Qs">Qs - search all points for the initial simplex </a></h3> <p>Qhull constructs an initial simplex from <i>d+1</i> points. It @@ -409,7 +409,7 @@ or more dimensions should be removed ('<a href="#Qb0">Qbk:0Bk:0</a>'). If not, use option 'Qs'. It performs an exhaustive search for the best initial simplex. This is expensive is high dimensions. </p> -<h3><a href="#qhull">»</a><a name="Qt">Qt - triangulated output</a></h3> +<h3><a href="#qhull">»</a><a name="Qt">Qt - triangulated output</a></h3> <p>By default, qhull merges facets to handle precision errors. This produces non-simplicial facets (e.g., the convex hull of a cube has 6 square @@ -428,7 +428,7 @@ may be ignored due to precision errors. <p>With sufficient merging, the ridges of a non-simplicial facet may share more than two neighboring facets. If so, their triangulation ('<a href="#Qt">Qt</a>') will fail since two facets have the same vertex set. </p> -<h3><a href="#qhull">»</a><a name="Qu">Qu - compute upper hull +<h3><a href="#qhull">»</a><a name="Qu">Qu - compute upper hull for furthest-site Delaunay triangulation </a></h3> <p>When computing a Delaunay triangulation (<a href=qdelaun.htm>qdelaunay</a> @@ -448,7 +448,7 @@ point (e.g., '<a href="qh-optf.htm#FV">FV</a>', the average of <em>d</em> extreme points); 4) run 'qhull d Qbb Qu' or 'qhull v Qbb Qu' on these points.</p> -<h3><a href="#qhull">»</a><a name="Qv">Qv - test vertex +<h3><a href="#qhull">»</a><a name="Qv">Qv - test vertex neighbors for convexity </a></h3> <p>Normally, Qhull tests all facet neighbors for convexity. @@ -459,7 +459,7 @@ centrum of another facet. They should still be convex. Option of each vertex. The extra testing occurs after the hull is constructed.. </p> -<h3><a href="#qhull">»</a><a name="QVn">QVn - good facet if it +<h3><a href="#qhull">»</a><a name="QVn">QVn - good facet if it includes point n, -n if not </a></h3> <p>With option 'QVn', a facet is good ('<a href="#Qg">Qg</a>', @@ -480,7 +480,7 @@ either in the initial simplex or it is the first point added to the hull. Options 'QVn Qg' require either '<a href="#QJn">QJ</a>' or '<a href="#Q0">Q0</a>' (no merging).</p> -<h3><a href="#qhull">»</a><a name="Qx">Qx - exact pre-merges +<h3><a href="#qhull">»</a><a name="Qx">Qx - exact pre-merges (allows coplanar facets) </a></h3> <p>Option 'Qx' performs exact merges while building the hull. @@ -529,7 +529,7 @@ assigned to the wrong facet, qh_check_maxout may reach a local maximum instead of locating all coplanar facets. This appears to be unlikely.</p> -<h3><a href="#qhull">»</a><a name="Qz">Qz - add a +<h3><a href="#qhull">»</a><a name="Qz">Qz - add a point-at-infinity for Delaunay triangulations</a></h3> <p>Option 'Qz' adds a point above the paraboloid of lifted sites @@ -537,7 +537,7 @@ for a Delaunay triangulation. It allows the Delaunay triangulation of cospherical sites. It reduces precision errors for nearly cospherical sites.</p> -<h3><a href="#qhull">»</a><a name="Q0">Q0 - no merging with C-0 +<h3><a href="#qhull">»</a><a name="Q0">Q0 - no merging with C-0 and Qx</a></h3> <p>Turn off default merge options '<a href="qh-optc.htm#C0">C-0</a>' @@ -548,7 +548,7 @@ precision issues while constructing the convex hull. This may lead to precision errors. If so, a descriptive warning is generated. See <a href="qh-impre.htm">Precision issues</a>.</p> -<h3><a href="#qhull">»</a><a name="Q1">Q1 - sort merges by type +<h3><a href="#qhull">»</a><a name="Q1">Q1 - sort merges by type instead of angle </a></h3> <p>Qhull sorts the coplanar facets before picking a subset of the @@ -557,14 +557,14 @@ it merges facets that meet at a steep angle. With 'Q1', Qhull sorts merges by type (coplanar, angle coplanar, concave) instead of by angle. This may make the facets wider. </p> -<h3><a href="#qhull">»</a><a name="Q2">Q2 - merge all non-convex +<h3><a href="#qhull">»</a><a name="Q2">Q2 - merge all non-convex at once instead of independent sets </a></h3> <p>With 'Q2', Qhull merges all facets at once instead of performing merges in independent sets. This may make the facets wider. </p> -<h3><a href="#qhull">»</a><a name="Q3">Q3 - do not merge +<h3><a href="#qhull">»</a><a name="Q3">Q3 - do not merge redundant vertices </a></h3> <p>With 'Q3', Qhull does not remove redundant vertices. In 6-d @@ -573,14 +573,14 @@ vertices are highly interconnected). Option 'Q3' may be faster, but it may result in wider facets. Its effect is easiest to see in 3-d and 4-d.</p> -<h3><a href="#qhull">»</a><a name="Q4">Q4 - avoid merging </a>old +<h3><a href="#qhull">»</a><a name="Q4">Q4 - avoid merging </a>old facets into new facets</h3> <p>With 'Q4', Qhull avoids merges of an old facet into a new facet. This sometimes improves facet width and sometimes makes it worse. </p> -<h3><a href="#qhull">»</a><a name="Q5">Q5 - do not correct outer +<h3><a href="#qhull">»</a><a name="Q5">Q5 - do not correct outer planes at end of qhull </a></h3> <p>When merging facets or approximating a hull, Qhull tests @@ -602,14 +602,14 @@ href="qh-optg.htm#G">G</a>', '<a href="qh-optg.htm#Go">Go </a>', '<a href="qh-optf.htm#Fs">Fs</a>', '<a href="qh-optf.htm#Fo">Fo</a>', '<a href="qh-optf.htm#FF">FF</a>', and '<a href="qh-opto.htm#f">f</a>'.</p> -<h3><a href="#qhull">»</a><a name="Q6">Q6 - do not pre-merge +<h3><a href="#qhull">»</a><a name="Q6">Q6 - do not pre-merge concave or coplanar facets </a></h3> <p>With 'Q6', Qhull does not pre-merge concave or coplanar facets. This demonstrates the effect of "dents" when using '<a href="#Qx">Qx</a>'. </p> -<h3><a href="#qhull">»</a><a name="Q7">Q7 - depth-first +<h3><a href="#qhull">»</a><a name="Q7">Q7 - depth-first processing instead of breadth-first </a></h3> <p>With 'Q7', Qhull processes facets in depth-first order instead @@ -625,7 +625,7 @@ of its time waiting for I/O.</p> <p>Under 'Q7', Qhull runs slower and the facets may be wider. </p> -<h3><a href="#qhull">»</a><a name="Q8">Q8 - ignore near-interior +<h3><a href="#qhull">»</a><a name="Q8">Q8 - ignore near-interior points </a></h3> <p>With 'Q8' and merging, Qhull does not process interior points @@ -635,7 +635,7 @@ point when adjusting outer hulls in qh_check_maxout(). The best value for qh_RATIOnearInside is not known. Options 'Q8 <a href="#Qc">Qc</a>' may be sufficient. </p> -<h3><a href="#qhull">»</a><a name="Q9">Q9 - process furthest of +<h3><a href="#qhull">»</a><a name="Q9">Q9 - process furthest of furthest points </a></h3> <p>With 'Q9', Qhull processes the furthest point of all outside @@ -643,14 +643,14 @@ sets. This may reduce precision problems. The furthest point of all outside sets is not necessarily the furthest point from the convex hull.</p> -<h3><a href="#qhull">»</a><a name="Q10">Q10 - no special processing +<h3><a href="#qhull">»</a><a name="Q10">Q10 - no special processing for narrow distributions</a></h3> <p>With 'Q10', Qhull does not special-case narrow distributions. See <a href=qh-impre.htm#limit>Limitations of merged facets</a> for more information. -<h3><a href="#qhull">»</a><a name="Q11">Q11 - copy normals and recompute +<h3><a href="#qhull">»</a><a name="Q11">Q11 - copy normals and recompute centrums for tricoplanar facets</a></h3> diff --git a/html/qh-optt.htm b/html/qh-optt.htm index d6d5df9..bbca331 100644 --- a/html/qh-optt.htm +++ b/html/qh-optt.htm @@ -33,7 +33,7 @@ indicated by 'T' followed by a letter. <hr> -<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="index.htm#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> <a name="trace">•</a> <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -86,7 +86,7 @@ indicated by 'T' followed by a letter. <hr> -<h3><a href="#trace">»</a><a name="Tc">Tc - check frequently +<h3><a href="#trace">»</a><a name="Tc">Tc - check frequently during execution </a></h3> <p>Qhull includes frequent checks of its data structures. Option @@ -94,7 +94,7 @@ during execution </a></h3> not be used for production runs. Option '<a href="#Tv">Tv</a>' performs the same checks after the hull is constructed.</p> -<h3><a href="#trace">»</a><a name="TCn">TCn - stop qhull after +<h3><a href="#trace">»</a><a name="TCn">TCn - stop qhull after building cone for point n</a></h3> <p>Qhull builds a cone from the point to its horizon facets. @@ -102,7 +102,7 @@ Option 'TCn' stops Qhull just after building the cone. The output for '<a href="qh-opto.htm#f">f</a>' includes the cone and the old hull.'. </p> -<h3><a href="#trace">»</a><a name="TFn">TFn - report summary +<h3><a href="#trace">»</a><a name="TFn">TFn - report summary whenever n or more facets created </a></h3> <p>Option 'TFn' reports progress whenever more than n facets are @@ -110,19 +110,19 @@ created. The test occurs just before adding a new point to the hull. During post-merging, 'TFn' reports progress after more than <i>n/2</i> merges. </p> -<h3><a href="#trace">»</a><a name="TI">TI file - input data from file</a></h3> +<h3><a href="#trace">»</a><a name="TI">TI file - input data from file</a></h3> <p>Input data from 'file' instead of stdin. The filename may not contain spaces or use single quotes. You may use I/O redirection instead (e.g., 'rbox 10 | qdelaunay >results').</P> -<h3><a href="#trace">»</a><a name="TMn">TMn - turn on tracing at +<h3><a href="#trace">»</a><a name="TMn">TMn - turn on tracing at merge n </a></h3> <p>Turn on tracing at n'th merge. </p> -<h3><a href="#trace">»</a><a name="Tn">Tn - trace at level n</a></h3> +<h3><a href="#trace">»</a><a name="Tn">Tn - trace at level n</a></h3> <p>Qhull includes full execution tracing. 'T-1' traces events. 'T1' traces the overall execution of the program. 'T2' and 'T3' @@ -142,7 +142,7 @@ to match ridges of non-simplicial facets. For performance reasons, the hash computation uses memory addresses which may change across executions. -<h3><a href="#trace">»</a><a name="TO">TO file - output results to file</a></h3> +<h3><a href="#trace">»</a><a name="TO">TO file - output results to file</a></h3> <p>Redirect stdout to 'file'. The filename may be enclosed in single quotes. Unix and Windows NT users may use I/O redirection @@ -154,7 +154,7 @@ of double quotes because a missing double quote can freeze Windows95 (e.g., do not run, rbox 10 | qhull TO "x)</p> <p> -<h3><a href="#trace">»</a><a name="TPn">TPn - turn on tracing +<h3><a href="#trace">»</a><a name="TPn">TPn - turn on tracing when point n added to hull </a></h3> <p>Option 'TPn' turns on tracing when point n is added to @@ -172,7 +172,7 @@ Use options 'TPn TWn' to trace the addition of point n to the convex hull, partitions of point n, and wide merges.</p> -<h3><a href="#trace">»</a><a name="TRn">TRn - rerun qhull n times</a></h3> +<h3><a href="#trace">»</a><a name="TRn">TRn - rerun qhull n times</a></h3> <p>Option 'TRn' reruns Qhull n times. It is usually used with '<a href="qh-optq.htm#QJn">QJn</a>' to determine the probability @@ -187,13 +187,13 @@ run. An event trace, '<a href="#Tn">T-1</a>' reports events for all runs. is reported, the options list the run number as "_run". To trace this run, set 'TRn' to the same value.</p> -<h3><a href="#trace">»</a><a name="Ts">Ts - print statistics </a></h3> +<h3><a href="#trace">»</a><a name="Ts">Ts - print statistics </a></h3> <p>Option 'Ts' collects statistics and prints them to stderr. For Delaunay triangulations, the angle statistics are restricted to the lower or upper envelope.</p> -<h3><a href="#trace">»</a><a name="Tv">Tv - verify result: +<h3><a href="#trace">»</a><a name="Tv">Tv - verify result: structure, convexity, and point inclusion </a></h3> <p>Option 'Tv' checks the topological structure, convexity, and @@ -223,7 +223,7 @@ option 'Tv' collects statistics that verify all Voronoi vertices lie on the separating hyperplane, and for bounded regions, all separating hyperplanes are perpendicular bisectors. -<h3><a href="#trace">»</a><a name="TVn">TV-n - stop qhull before +<h3><a href="#trace">»</a><a name="TVn">TV-n - stop qhull before adding point n</a></h3> <p>Qhull adds one point at a time to the convex hull. See <a @@ -231,18 +231,18 @@ href="qh-eg.htm#how">how Qhull adds a point</a>. Option 'TV-n' stops Qhull just before adding a new point. Output shows the hull at this time.</p> -<h3><a href="#trace">»</a><a name="TVn2">TVn - stop qhull after +<h3><a href="#trace">»</a><a name="TVn2">TVn - stop qhull after adding point n</a></h3> <p>Option 'TVn' stops Qhull after it has added point n. Output shows the hull at this time.</p> -<h3><a href="#trace">»</a><a name="TWn">TWn - trace merge facets +<h3><a href="#trace">»</a><a name="TWn">TWn - trace merge facets when width > n </a></h3> <p>Along with TMn, this option allows the user to determine the cause of a wide merge.</p> -<h3><a href="#trace">»</a><a name="Tz">Tz - send all output to +<h3><a href="#trace">»</a><a name="Tz">Tz - send all output to stdout </a></h3> <p>Redirect stderr to stdout. </p> diff --git a/html/qh-quick.htm b/html/qh-quick.htm index fc424bb..8107d73 100644 --- a/html/qh-quick.htm +++ b/html/qh-quick.htm @@ -44,7 +44,7 @@ This section lists all programs and options in Qhull. <a name="programs"> </a> <hr> <b>Qhull programs</b> -<p><a href="#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> • <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> @@ -133,7 +133,7 @@ This section lists all programs and options in Qhull. <hr> <b>Qhull options</b> -<p><a href="#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> +<p><a href="#TOC">»</a> <a href="qh-quick.htm#programs">Programs</a> • <a href="qh-quick.htm#options">Options</a> • <a href="qh-opto.htm#output">Output</a> • <a href="qh-optf.htm#format">Formats</a> diff --git a/html/qhalf.htm b/html/qhalf.htm index b4c5b35..734902a 100644 --- a/html/qhalf.htm +++ b/html/qhalf.htm @@ -106,7 +106,7 @@ Qr QR Qv Qx Qz TR E V Fa FA FC FD FS Ft FV Gt Q0,etc</i>. <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<h3><a href="#TOP">»</a><a name="synopsis">qhalf synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">qhalf synopsis</a></h3> <pre> qhalf- halfspace intersection about a point. input (stdin): [dim, 1, interior point] @@ -139,7 +139,7 @@ examples: rbox c | qconvex FV n | qhalf s o </pre> -<h3><a href="#TOP">»</a><a name="input">qhalf input</a></h3> +<h3><a href="#TOP">»</a><a name="input">qhalf input</a></h3> <blockquote> <p>The input data on <tt>stdin</tt> consists of:</p> @@ -230,7 +230,7 @@ Statistics for: RBOX c | QCONVEX FQ FV n | QHALF s Fp </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="outputs">qhalf outputs</a></h3> +<h3><a href="#TOP">»</a><a name="outputs">qhalf outputs</a></h3> <blockquote> <p>The following options control the output for halfspace @@ -323,7 +323,7 @@ intersection.</p> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="controls">qhalf controls</a></h3> +<h3><a href="#TOP">»</a><a name="controls">qhalf controls</a></h3> <blockquote> <p>These options provide additional control:</p> @@ -371,7 +371,7 @@ best initial simplex. This is expensive is high dimensions.</dd> </blockquote> -<h3><a href="#TOP">»</a><a name="graphics">qhalf graphics</a></h3> +<h3><a href="#TOP">»</a><a name="graphics">qhalf graphics</a></h3> <blockquote> <p>To view the results with Geomview, compute the convex hull of @@ -379,7 +379,7 @@ the intersection points ('qhull FQ H0 Fp | qhull G'). See <a href="qh-eg.htm#half">Halfspace examples</a>.</p> </blockquote> -<h3><a href="#TOP">»</a><a name="notes">qhalf notes</a></h3> +<h3><a href="#TOP">»</a><a name="notes">qhalf notes</a></h3> <blockquote> <p>See <a href="qh-impre.htm#halfspace">halfspace intersection</a> for precision issues related to qhalf.</p> @@ -420,7 +420,7 @@ point [S. Spitz and S. Teller].</p> </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">qhalf +<h3><a href="#TOP">»</a><a name="conventions">qhalf conventions</a></h3> <blockquote> @@ -457,7 +457,7 @@ conventions</a> and <a href="index.htm#structure">Qhull's data structures</a>.</ </ul> </blockquote> -<h3><a href="#TOP">»</a><a name="options">qhalf options</a></h3> +<h3><a href="#TOP">»</a><a name="options">qhalf options</a></h3> <pre> qhalf- compute the intersection of halfspaces about a point diff --git a/html/qhull.htm b/html/qhull.htm index 1782a50..7a32fdc 100644 --- a/html/qhull.htm +++ b/html/qhull.htm @@ -120,7 +120,7 @@ are there extra points in a 4-d or higher convex hull?</a><br> <hr> -<h3><a href="#TOP">»</a><a name="synopsis">qhull synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">qhull synopsis</a></h3> <pre> qhull- compute convex hulls and related structures. input (stdin): dimension, n, point coordinates @@ -163,7 +163,7 @@ examples: rbox y 1000 W0 | qhull rbox 10 | qhull v QJ o Fv </pre> -<h3><a href="#TOP">»</a><a name="input">qhull input</a></h3> +<h3><a href="#TOP">»</a><a name="input">qhull input</a></h3> <blockquote> <p>The input data on <tt>stdin</tt> consists of:</p> @@ -229,7 +229,7 @@ Statistics for: RBOX c | QHULL s n </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="outputs">qhull outputs</a></h3> +<h3><a href="#TOP">»</a><a name="outputs">qhull outputs</a></h3> <blockquote> <p>These options control the output of qhull. They may be used @@ -270,7 +270,7 @@ individually or together.</p> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="controls">qhull controls</a></h3> +<h3><a href="#TOP">»</a><a name="controls">qhull controls</a></h3> <blockquote> <p>For a full list of control options see @@ -284,7 +284,7 @@ individually or together.</p> </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="options">qhull options</a></h3> +<h3><a href="#TOP">»</a><a name="options">qhull options</a></h3> <pre> qhull- compute convex hulls and related structures. diff --git a/html/qvoron_f.htm b/html/qvoron_f.htm index 2702727..529b34e 100644 --- a/html/qvoron_f.htm +++ b/html/qvoron_f.htm @@ -96,7 +96,7 @@ QB Qc Qf Qg Qi Qm Qr QR Qv Qx TR E V Fa FA FC Fp FS Ft FV Gt Q0,etc</i>. <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<h3><a href="#TOP">»</a><a name="synopsis">furthest-site qvoronoi synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">furthest-site qvoronoi synopsis</a></h3> <blockquote> See <a href="qvoronoi.htm#synopsis">qvoronoi synopsis</a>. The same @@ -105,7 +105,7 @@ for furthest-site Voronoi diagrams. </blockquote> -<h3><a href="#TOP">»</a><a name="input">furthest-site qvoronoi +<h3><a href="#TOP">»</a><a name="input">furthest-site qvoronoi input</a></h3> <blockquote> <p>The input data on <tt>stdin</tt> consists of:</p> @@ -165,7 +165,7 @@ Statistics for: RBOX c 4 D2 | QVORONOI Qu s Fo </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="outputs">furthest-site qvoronoi +<h3><a href="#TOP">»</a> <a name="outputs">furthest-site qvoronoi outputs</a></h3> <blockquote> @@ -260,7 +260,7 @@ vertices are listed in numeric order. In the points-in-square </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="controls">furthest-site qvoronoi +<h3><a href="#TOP">»</a> <a name="controls">furthest-site qvoronoi controls</a></h3> <blockquote> @@ -299,7 +299,7 @@ controls</a></h3> </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="graphics">furthest-site qvoronoi +<h3><a href="#TOP">»</a> <a name="graphics">furthest-site qvoronoi graphics</a></h3> <blockquote> <p>In 2-d, Geomview output ('<a href="qh-optg.htm#G">G</a>') @@ -315,14 +315,14 @@ Geomview's 'obscure' menu) when comparing the furthest-site Voronoi diagram with the corresponding Voronoi diagram. </p> </blockquote> -<h3><a href="#TOP">»</a><a name="notes">furthest-site qvoronoi +<h3><a href="#TOP">»</a><a name="notes">furthest-site qvoronoi notes</a></h3> <blockquote> <p>See <a href="qvoronoi.htm#notes">Voronoi notes</a>.</p> </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">furthest-site qvoronoi conventions</a></h3> +<h3><a href="#TOP">»</a><a name="conventions">furthest-site qvoronoi conventions</a></h3> <blockquote> <p>The following terminology is used for furthest-site Voronoi @@ -367,7 +367,7 @@ conventions</a>, and <a href="index.htm#structure">Qhull's data structures</a>.< </ul> </blockquote> -<h3><a href="#TOP">»</a><a name="options">furthest-site qvoronoi options</a></h3> +<h3><a href="#TOP">»</a><a name="options">furthest-site qvoronoi options</a></h3> <blockquote> See <a href="qvoronoi.htm#options">qvoronoi options</a>. The same diff --git a/html/qvoronoi.htm b/html/qvoronoi.htm index dd846e6..8c92120 100644 --- a/html/qvoronoi.htm +++ b/html/qvoronoi.htm @@ -120,7 +120,7 @@ Qr QR Qv Qx Qz TR E V Fa FA FC FD FS Ft FV Gt Q0,etc</i>. <p>Voronoi image by KOOK Architecture, Silvan Oesterle and Michael Knauss. <hr> -<h3><a href="#TOP">»</a><a name="synopsis">qvoronoi synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">qvoronoi synopsis</a></h3> <pre> qvoronoi- compute the Voronoi diagram. @@ -154,7 +154,7 @@ rbox c G1 d D2 | qvoronoi s p rbox c G1 d D2 | qvoronoi Qt s p rbox c P0 D2 | qvoronoi s Fv QV0 </pre> -<h3><a href="#TOP">»</a><a name="input">qvoronoi input</a></h3> +<h3><a href="#TOP">»</a><a name="input">qvoronoi input</a></h3> <blockquote> The input data on <tt>stdin</tt> consists of: <ul> @@ -220,7 +220,7 @@ Statistics for: RBOX s 4 W0 c D2 | QVORONOI s p </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="outputs">qvoronoi +<h3><a href="#TOP">»</a> <a name="outputs">qvoronoi outputs</a></h3> <blockquote> @@ -334,7 +334,7 @@ statistics to stderr,</dd> </dl> </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="controls">qvoronoi +<h3><a href="#TOP">»</a> <a name="controls">qvoronoi controls</a></h3> <blockquote> @@ -377,7 +377,7 @@ controls</a></h3> </blockquote> </blockquote> -<h3><a href="#TOP">»</a> <a name="graphics">qvoronoi +<h3><a href="#TOP">»</a> <a name="graphics">qvoronoi graphics</a></h3> <blockquote> @@ -407,7 +407,7 @@ Geomview's 'obscure' menu) when comparing the Voronoi diagram with the corresponding Delaunay triangulation. </p> </blockquote> -<h3><a href="#TOP">»</a><a name="notes">qvoronoi +<h3><a href="#TOP">»</a><a name="notes">qvoronoi notes</a></h3> <blockquote> @@ -495,7 +495,7 @@ midpoint. The corresponding separating planes ('Fo') follow each pair of coordinate axes. </p> </blockquote> -<h3><a href="#TOP">»</a><a name="conventions">qvoronoi conventions</a></h3> +<h3><a href="#TOP">»</a><a name="conventions">qvoronoi conventions</a></h3> <blockquote> <p>The following terminology is used for Voronoi diagrams in @@ -542,7 +542,7 @@ href="qdelaun.htm#conventions">Delaunay conventions</a>, and </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="options">qvoronoi options</a></h3> +<h3><a href="#TOP">»</a><a name="options">qvoronoi options</a></h3> <pre> qvoronoi- compute the Voronoi diagram diff --git a/html/rbox.htm b/html/rbox.htm index 80698e0..3e561fc 100644 --- a/html/rbox.htm +++ b/html/rbox.htm @@ -35,7 +35,7 @@ height="100"></a>rbox -- generate point distributions</h1> are given. </blockquote> -<h3><a href="#TOP">»</a><a name="synopsis">rbox synopsis</a></h3> +<h3><a href="#TOP">»</a><a name="synopsis">rbox synopsis</a></h3> <pre> rbox- generate various point distributions. Default is random in cube. @@ -67,7 +67,7 @@ args (any order, space separated): z print integer coordinates, default 'Bn' is 1e+06 </pre> -<h3><a href="#TOP">»</a><a name="outputs">rbox outputs</a></h3> +<h3><a href="#TOP">»</a><a name="outputs">rbox outputs</a></h3> <blockquote> The format of the output is the following: first line contains @@ -99,7 +99,7 @@ The format of the output is the following: first line contains </blockquote> </blockquote> -<h3><a href="#TOP">»</a><a name="examples">rbox examples</a></h3> +<h3><a href="#TOP">»</a><a name="examples">rbox examples</a></h3> <pre> rbox 10 @@ -163,12 +163,12 @@ The format of the output is the following: first line contains a narrow cone of points with many precision errors. </pre> -<h3><a href="#TOP">»</a><a name="notes">rbox notes</a></h3> +<h3><a href="#TOP">»</a><a name="notes">rbox notes</a></h3> <blockquote> Some combinations of arguments generate odd results. </blockquote> -<h3><a href="#TOP">»</a><a name="options">rbox options</a></h3> +<h3><a href="#TOP">»</a><a name="options">rbox options</a></h3> <pre> n number of points diff --git a/project/libqhull/libqhull.pro b/project/libqhull/libqhull.pro index 3c87f06..868a182 100644 --- a/project/libqhull/libqhull.pro +++ b/project/libqhull/libqhull.pro @@ -9,9 +9,9 @@ CONFIG += staticlib warn_on CONFIG -= app_bundle qt # Appears to be needed for gcc 4.1, 4.2, and 4.3 with -O2 #QMAKE_CFLAGS += -fno-strict-aliasing -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wstrict-aliasing -Wno-sign-conversion # Many size_t vs. int errors -#QMAKE_CFLAGS_DEBUG += -Wconversion # no workaround for bit-field conversion errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ TARGET = qhulld OBJECTS_DIR = ../../tmp/libqhull/Debug diff --git a/project/libqhullcpp/libqhullcpp.pro b/project/libqhullcpp/libqhullcpp.pro index 68364e1..19d1f81 100644 --- a/project/libqhullcpp/libqhullcpp.pro +++ b/project/libqhullcpp/libqhullcpp.pro @@ -23,9 +23,9 @@ QT -= gui MOC_DIR = ../../tmp/moc RCC_DIR = ../../tmp/rcc INCLUDEPATH = ../../cpp;../../cpp/road;../../tmp -QMAKE_CXXFLAGS_DEBUG += -Wall -Wextra -Wcast-qual -Wwrite-strings -QMAKE_CXXFLAGS_DEBUG += -Wno-sign-conversion # Many size_t vs. int errors -# QMAKE_CXXFLAGS_DEBUG += -Wconversion # no workaround for bit-field conversion errors +QMAKE_CXXFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wwrite-strings +QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CXXFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors VPATH = ../.. SOURCES += cpp/Coordinates.cpp diff --git a/project/libqhullp/libqhullp.pro b/project/libqhullp/libqhullp.pro index 8dc2335..6e5dac1 100644 --- a/project/libqhullp/libqhullp.pro +++ b/project/libqhullp/libqhullp.pro @@ -10,9 +10,9 @@ CONFIG -= app_bundle qt DEFINES += qh_QHpointer # Appears to be needed for gcc 4.1, 4.2, and 4.3 with -O2 #QMAKE_CFLAGS += -fno-strict-aliasing -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors -#QMAKE_CFLAGS_DEBUG += -Wconversion # no workaround for bit-field conversion errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ TARGET = qhullpd OBJECTS_DIR = ../../tmp/libqhullp/Debug diff --git a/project/qconvex/qconvex.pro b/project/qconvex/qconvex.pro index c87868e..1c8bbb8 100644 --- a/project/qconvex/qconvex.pro +++ b/project/qconvex/qconvex.pro @@ -8,8 +8,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/qdelaunay/qdelaunay.pro b/project/qdelaunay/qdelaunay.pro index 0f96156..e683ea1 100644 --- a/project/qdelaunay/qdelaunay.pro +++ b/project/qdelaunay/qdelaunay.pro @@ -8,8 +8,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/qhalf/qhalf.pro b/project/qhalf/qhalf.pro index 23aefc7..f5a6223 100644 --- a/project/qhalf/qhalf.pro +++ b/project/qhalf/qhalf.pro @@ -8,8 +8,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/qhull/qhull.pro b/project/qhull/qhull.pro index 4a6330a..e07f892 100644 --- a/project/qhull/qhull.pro +++ b/project/qhull/qhull.pro @@ -8,8 +8,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/qhulltest/qhulltest.pro b/project/qhulltest/qhulltest.pro index af1f98c..19ac3cd 100644 --- a/project/qhulltest/qhulltest.pro +++ b/project/qhulltest/qhulltest.pro @@ -9,6 +9,9 @@ CONFIG += console qtestlib warn_on CONFIG -= app_bundle LIBS += -L../.. DEFINES += qh_QHpointer +QMAKE_CXXFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wwrite-strings +QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CXXFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhullcppd PRE_TARGETDEPS += ../../libqhullcppd.a diff --git a/project/qvoronoi/qvoronoi.pro b/project/qvoronoi/qvoronoi.pro index ce49023..83721f8 100644 --- a/project/qvoronoi/qvoronoi.pro +++ b/project/qvoronoi/qvoronoi.pro @@ -8,8 +8,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/rbox/rbox.pro b/project/rbox/rbox.pro index ae18d90..c7ce876 100644 --- a/project/rbox/rbox.pro +++ b/project/rbox/rbox.pro @@ -6,8 +6,9 @@ DESTDIR = ../.. TEMPLATE = app CONFIG += console warn_on LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/user_eg/user_eg.pro b/project/user_eg/user_eg.pro index 2fcb8eb..a77b143 100644 --- a/project/user_eg/user_eg.pro +++ b/project/user_eg/user_eg.pro @@ -8,8 +8,9 @@ CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. DEFINES += qh_QHpointer -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhullpd PRE_TARGETDEPS += ../../libqhullpd.a diff --git a/project/user_eg2/user_eg2.pro b/project/user_eg2/user_eg2.pro index 3ae3d25..8752100 100644 --- a/project/user_eg2/user_eg2.pro +++ b/project/user_eg2/user_eg2.pro @@ -7,8 +7,9 @@ TEMPLATE = app CONFIG += console warn_on CONFIG -= app_bundle LIBS += -L../.. -QMAKE_CFLAGS += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -QMAKE_CFLAGS += -Wno-sign-conversion # Many size_t vs. int errors +QMAKE_CFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wshadow -Wwrite-strings +QMAKE_CFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhulld PRE_TARGETDEPS += ../../libqhulld.a diff --git a/project/user_eg3/user_eg3.pro b/project/user_eg3/user_eg3.pro index cbd457f..fb575f5 100644 --- a/project/user_eg3/user_eg3.pro +++ b/project/user_eg3/user_eg3.pro @@ -7,6 +7,9 @@ TEMPLATE = app CONFIG += console warn_on LIBS += -L../.. DEFINES += qh_QHpointer +QMAKE_CXXFLAGS_WARN_ON += -Werror -Wall -Wcast-qual -Wextra -Wwrite-strings +QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CXXFLAGS_WARN_ON += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ LIBS += libqhullcppd PRE_TARGETDEPS += ../../libqhullcppd.a diff --git a/src/Changes.txt b/src/Changes.txt index 7b70e72..067008e 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -1,99 +1,10 @@ .............This file lists all changes to qhull and rbox..................... -To do for documentation -- Qhull::addPoint(). Problems with qh_findbestfacet and otherpoints see - qh-code.htm#inc on-line construction with qh_addpoint() -- How to handle 64-bit possible loss of data. WARN64, ptr_intT, size_t/int -- Show custom of qh_fprintf -- grep 'qh_mem ' x | sort | awk '{ print $2; }' | uniq -c | grep -vE ' (2|4|6|8|10|12|14|16|20|64|162)[^0-9]' -- qtpro/qhulltest contains .pro and Makefile. Remove Makefiles by setting shadow directory to ../../tmp/projectname -- Rules for use of qh_qh and multi processes - UsingQhull - errorIfAnotherUser - ~QhullPoints() needs ownership of qh_qh - Does !qh_pointer work? - When is qh_qh required? Minimize the time. - qhmem, qhstat.ferr - qhull_inuse==1 when qhull globals active [not useful?] - rbox_inuse==1 when rbox globals active - - Multithreaded -- call largest dimension for infinityPoint() and origin() - - Better documentation for qhmem totshort, freesize, etc. - - Clean up qhull-news.html XML - - how to change .h, .c, and .cpp to text/html. OK in Opera - - Set up wiki for Qhull. Include error and warning codes (QHnnnn). - - QhullVertex.dimension() is not quite correct, epensive - - Check globalAngleEpsilon - - Deprecate save_qhull() - -To do for suggestions - C++ class for access to statistics, accumulate vs. add - Add dialog box to RoadError-- a virtual function? - - Gt does not make visible all facets of the mesh example, rbox 32 M1,0,1 | qhull d Gt - - Option to select bounded Voronoi regions [A. Uzunovic] - - Merge small volume boundary cells into unbounded regions [Dominik Szczerba] - - Postmerge with merge options - - Add const to C code - - Add modify operators and MutablePointCoordinateIterator to PointCoordinates - - Add Qtest::toString() functions for QhullPoint and others. QByteArray and qstrdup() - - Fix option Qt for conformant triangulations - - Fix doc comments - -Qhull cpp questions - - iterator Coordinates::operator++() { return iterator(++i); } - - //FIXUP QH10012 Should return reference, but get reference to temporary - - size() as size_t, size_type, or int - - Should all containers have a reserve()? - - Qhull.feasiblePoint interface - - How to avoid copy constructor while logging, maybeThrowQhullMessage() - - How to configure Qhull output. Trace and results should go to stdout/stderr - - Qhull and RboxPoints messaging. e.g., ~Qhull, hasQhullMessage() - - rename as QhullErrorMessage? How to add additional output, e.g., qh_setprint - - Is idx the best name for an index? It's rather cryptic, but BSD strings.h defines index(). - - Qhull::feasiblePoint Qhull::useOutputStream as field or getter? - - Define virtual functions for user customization of Qhull (e.g., qh_fprintf, qh_memfree,etc.) - - Figure out RoadError::global_log. clearQhullMessage currently clearGlobalLog - - Should the false QhullFacet be NULL or empty? e.g., QhullFacet::tricoplanarOwner() and QhullFacetSet::end() - - Should output format for floats be predefined (qh_REAL_1, 2.2g, 10.7g) or as currently set for stream - - Should cout << !point.defined() be blank or 'undefined' - - Interface for UsingLibQhull::globalAngleEpsilon(), globalDistanceEpsilon, etc. - - Interface for UsingLibQhull::globalDimension - - Infinite point as !defined() - - qlist and qlinkedlist define pointer, reference, size_type, difference_type, const_pointer, const_reference for the class but not for iterator and const_iterator - vector.h -- reference operator[](difference_type _Off) const - - Is Q_GLOBAL_STATIC non-threaded/threaded, needed for Qhull? - - When forwarding an implementation is base() an approriate name (e.g., Coordinates::iterator::base() as std::vector<coordT>::iterator). - - When forwarding an implementation, does not work "returning address of temporary" - - Also --, +=, and -= - iterator &operator++() { return iterator(i++); } - - if vector<coordT> inheritance is bad, is QhullVertexSet OK? - - Should QhullPointSet define pointer and reference data types? - - Allow UsingQhullLib to work with static allocation of qh_qh - To do - - Measure performance of Qhull, seconds per point by dimension - - Investigate flipped facet -- rbox 100 s D3 t1263080158 | qhull R1e-3 Tcv Qc - - qhulltest --all added to output - - Add test of user_eg3, etc. - - Check for wraparound of 64-bit ints -- e.g., a large set or points - - Add md5sum - - Set up globals for thread-private storage - - Generate vcproj from qtpro files - cd qtpro && qmake -spec win32-msvc2005 -tp vc -recursive - sed -i 's/C\:\/bash\/local\/qhull\/qtpro\///' qhull-all.sln - Change qhullcpp to libqhull.dll - Allow both builds on same host (keep /tmp separate) - - Make distribution -- remove tmp, news, .git, leftovers from project, change CRLF - - search for 2010.1, Dates - - update http://compgeom.cs.uiuc.edu/~jeffe/compgeom/code.html#topes - - update FAQ and date. - Notify Wolfram, geom discussion list - - Review Warn64 - - clean up warnings for libqhullcpp - - rereview -Wconversion - get copy of unused - Review email archives for doc changes - - Add libqhull5 to Readme, Announce, download - QtTestD4.dll did not include MSVCP80D.dll and MSVCR80D.dll ------------ @@ -108,19 +19,23 @@ Need help - Verify -fno-strict-aliasing needed for gcc 4.1, 4.2, and 4.3 (qset segfault) ------------ -Qhull done - +Qhull gitorious.org/qhull next - Add qt-qhull.cpp with Qt conditional code - Fix qhull.sln and project files for qh_QHpointer - Add libqhullp.proj +- Add libqhull5 to Readme, Announce, download - Reviewed #pragma - Reviewed FIXUP and assigned QH tags +- All projects compile with warnings enabled +- Replaced 'up' glyphs with » +- Moved cpp questions to http://www.qhull.org/html/qh-code.htm#questions-cpp +- Moved suggestions to http://www.qhull.org/html/qh-code.htm#enhance +- Moved documentation requests to http://www.qhull.org/html/qh-code.htm#enhance ------------ qhull 2010.1 2010/01/10 - Test for NULL fp in qh_eachvoronoi [D. Szczerba] ------------- qhull 2010.1 2010/01/09 Changes to build and distribution diff --git a/src/index.htm b/src/index.htm index 8948f9c..8bb12f0 100644 --- a/src/index.htm +++ b/src/index.htm @@ -90,7 +90,7 @@ to <a href="mailto:qhull-bug@qhull.org">qhull-bug@qhull.org</a>. <hr> -<h2><a href="#TOP">»</a><a name="TOC">Qhull files</a> </h2> +<h2><a href="#TOP">»</a><a name="TOC">Qhull files</a> </h2> <blockquote> <p>This sections lists the .c and .h files for Qhull. Please diff --git a/src/qh-geom.htm b/src/qh-geom.htm index f1c9f3e..c63d3ac 100644 --- a/src/qh-geom.htm +++ b/src/qh-geom.htm @@ -56,7 +56,7 @@ distance from vertices to the halfspace. </p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <b>Geom</b> +<p><a href="#TOP">»</a> <b>Geom</b> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> • @@ -79,7 +79,7 @@ distance from vertices to the halfspace. </p> <li><a href="#ground">geometric roundoff functions</a></li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gtype">geometric data types +<h3><a href="qh-geom.htm#TOC">»</a><a name="gtype">geometric data types and constants</a></h3> <ul> @@ -89,7 +89,7 @@ coefficients are stored as realT</li> of <tt>DIM3</tt> coordinates </li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gmacro">mathematical macros</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="gmacro">mathematical macros</a></h3> <ul> <li><a href="geom.h#fabs_">fabs_</a> returns the absolute @@ -110,7 +110,7 @@ determinate </li> between two coordinates </li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gmath">mathematical functions</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="gmath">mathematical functions</a></h3> <ul> <li><a href="geom.c#backnormal">qh_backnormal</a> solve for @@ -143,7 +143,7 @@ a random factor near 1.0 </li> generate a random dimXdim matrix in range (-1,1) </li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gcomp">computational geometry functions</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="gcomp">computational geometry functions</a></h3> <ul> <li><a href="geom2.c#detsimplex">qh_detsimplex</a> compute @@ -173,7 +173,7 @@ elimination </li> return Voronoi center for a set of points </li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gpoint">point array functions</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="gpoint">point array functions</a></h3> <ul> <li><a href="geom2.c#copypoints">qh_copypoints</a> return malloc'd copy of points</li> @@ -204,7 +204,7 @@ generate dual for halfspace intersection with interior point </li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="gfacet">geometric facet functions</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="gfacet">geometric facet functions</a></h3> <ul> <li><a href="geom.c#distplane">qh_distplane</a> return distance from point to facet </li> @@ -239,7 +239,7 @@ the hyperplane for a facet </li> if new facets contains a sharp corner</li> </ul> -<h3><a href="qh-geom.htm#TOC">»</a><a name="ground">geometric roundoff functions</a></h3> +<h3><a href="qh-geom.htm#TOC">»</a><a name="ground">geometric roundoff functions</a></h3> <ul> <li><a href="geom2.c#detjoggle">qh_detjoggle</a> determine default joggle for points and distance roundoff error</li> diff --git a/src/qh-globa.htm b/src/qh-globa.htm index 9ebf7c8..e406f71 100644 --- a/src/qh-globa.htm +++ b/src/qh-globa.htm @@ -44,7 +44,7 @@ dynamically allocated with malloc(). See </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <b>Global</b> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> • @@ -60,7 +60,7 @@ dynamically allocated with malloc(). See routines</a> </li> </ul> -<h3><a href="qh-globa.htm#TOC">»</a><a name="ovar">Qhull's global +<h3><a href="qh-globa.htm#TOC">»</a><a name="ovar">Qhull's global variables</a></h3> <ul> @@ -86,7 +86,7 @@ for matrix operations and input </li> static variables for individual functions </li> </ul> -<h3><a href="qh-globa.htm#TOC">»</a><a name="ofunc">Global variable and +<h3><a href="qh-globa.htm#TOC">»</a><a name="ofunc">Global variable and initialization routines</a></h3> <ul> diff --git a/src/qh-io.htm b/src/qh-io.htm index 2920fca..ffabfb8 100644 --- a/src/qh-io.htm +++ b/src/qh-io.htm @@ -55,7 +55,7 @@ qh_skipfacet() is tested. </p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <b>Io</b> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> • <a href="qh-qhull.htm#TOC">Qhull</a> • @@ -74,7 +74,7 @@ qh_skipfacet() is tested. </p> <li><a href="#iview">Geomview utility functions</a></li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="iconst">io.h constants and types</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="iconst">io.h constants and types</a></h3> <ul> <li><a href="io.h#qh_MAXfirst">qh_MAXfirst</a> maximum length @@ -85,7 +85,7 @@ values of white space </li> print results of qh_printvdiagram or qh_eachvoronoi</li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="ilevel">User level functions</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="ilevel">User level functions</a></h3> <ul> <li><a href="io.c#copyfilename">qh_copyfilename</a> @@ -114,7 +114,7 @@ interior point from qh feasible_string ('Hn,n,n')</li> skip filename in string </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="iprint">Print functions for all +<h3><a href="qh-io.htm#TOC">»</a><a name="iprint">Print functions for all output formats</a></h3> <ul> @@ -144,7 +144,7 @@ printing this facet ('Pdk:n', 'QVn', 'QGn')</li> vertices in a set of facets ('p')</li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="itext">Text output functions</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="itext">Text output functions</a></h3> <ul> <li><a href="io.c#eachvoronoi">qh_eachvoronoi</a> print or visit each Voronoi ridge for an input site of the Voronoi diagram @@ -188,7 +188,7 @@ print vertex neighbors of vertices ('FN')</li> voronoi diagram in 'o' or 'G' format</li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="iutil">Text utility functions</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="iutil">Text utility functions</a></h3> <ul> <li><a href="io.c#dfacet">dfacet</a> print facet by ID </li> <li><a href="io.c#dvertex">dvertex</a> print vertex by ID </li> @@ -225,7 +225,7 @@ ridge of the Voronoi diagram for a pair of input sites</li> 3-d or 4-d point to a 3-d point ('G')</li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="igeom">Geomview output functions</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="igeom">Geomview output functions</a></h3> <ul> <li><a href="io.c#printfacet2geom">qh_printfacet2geom</a> print facet as a 2-d VECT object </li> @@ -246,7 +246,7 @@ print hyperplane intersection as OFF or 4OFF </li> <li><a href="io.c#printvoronoi">qh_printvoronoi</a> print voronoi diagram in 'o' or 'G' format</li> </ul> -<h3><a href="qh-io.htm#TOC">»</a><a name="iview">Geomview utility functions</a></h3> +<h3><a href="qh-io.htm#TOC">»</a><a name="iview">Geomview utility functions</a></h3> <ul> <li><a href="io.c#geomplanes">qh_geomplanes</a> return outer and inner planes for Geomview</li> diff --git a/src/qh-mem.htm b/src/qh-mem.htm index 12928df..d917152 100644 --- a/src/qh-mem.htm +++ b/src/qh-mem.htm @@ -42,7 +42,7 @@ from a reserved buffer. </p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <b>Mem</b> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> @@ -56,7 +56,7 @@ from a reserved buffer. </p> <li><a href="#emacro">mem.h macros</a> </li> <li><a href="#efunc">User level functions</a> </li> </ul> -<h3><a href="qh-mem.htm#TOC">»</a><a name="etype">mem.h data types and constants</a></h3> +<h3><a href="qh-mem.htm#TOC">»</a><a name="etype">mem.h data types and constants</a></h3> <ul> <li><a href="mem.h#ptr_intT">ptr_intT</a> for casting a void* to an integer-type </li> @@ -64,14 +64,14 @@ a void* to an integer-type </li> structure for mem.c </li> <li><a href="mem.h#NOmem">qh_NOmem</a> disable memory allocation</li> </ul> -<h3><a href="qh-mem.htm#TOC">»</a><a name="emacro">mem.h macros</a></h3> +<h3><a href="qh-mem.htm#TOC">»</a><a name="emacro">mem.h macros</a></h3> <ul> <li><a href="mem.h#memalloc_">qh_memalloc_</a> allocate memory</li> <li><a href="mem.h#memfree_">qh_memfree_</a> free memory</li> </ul> -<h3><a href="qh-mem.htm#TOC">»</a><a name="efunc">User level +<h3><a href="qh-mem.htm#TOC">»</a><a name="efunc">User level functions</a></h3> <ul> <li><a href="mem.c#memalloc">qh_memalloc</a> allocate @@ -86,7 +86,7 @@ print memory statistics </li> <li><a href="mem.c#NOmem">qh_NOmem</a> allocation routines with malloc() and free() </ul> -<h3><a href="qh-mem.htm#TOC">»</a><a name="m">Initialization and +<h3><a href="qh-mem.htm#TOC">»</a><a name="m">Initialization and termination functions</a></h3> <ul> <li><a href="mem.c#intcompare">qh_intcompare</a> used by diff --git a/src/qh-merge.htm b/src/qh-merge.htm index ff420c0..92d85d9 100644 --- a/src/qh-merge.htm +++ b/src/qh-merge.htm @@ -100,7 +100,7 @@ structure.This is called a <em>redundant vertex</em>. </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <b>Merge</b> • <a href="qh-poly.htm#TOC">Poly</a> @@ -129,7 +129,7 @@ vertex</a> </li> vertices for renaming</a> </li> <li><a href="#mcheck">functions for check and trace</a> </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mtype">merge.h data +<h3><a href="qh-merge.htm#TOC">»</a><a name="mtype">merge.h data types, macros, and global sets</a></h3> <ul> <li><a href="merge.h#mergeT">mergeT</a> structure to @@ -141,7 +141,7 @@ qh.facet_mergeset contains non-convex merges while qh.degen_mergeset contains degenerate and redundant facets</li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mconst">merge.h +<h3><a href="qh-merge.htm#TOC">»</a><a name="mconst">merge.h constants</a></h3> <ul> <li><a href="libqhull.h#qh-prec">qh precision constants</a> @@ -159,7 +159,7 @@ mergeT->angle </li> flag for qh_mergefacet() to indicate an apex merge </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mtop">top-level merge +<h3><a href="qh-merge.htm#TOC">»</a><a name="mtop">top-level merge functions</a></h3> <ul> <li><a href="merge.c#all_merges">qh_all_merges</a> @@ -181,7 +181,7 @@ post-merge nonconvex facets as defined by maxcentrum/maxangle </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mset">functions for +<h3><a href="qh-merge.htm#TOC">»</a><a name="mset">functions for identifying merges</a></h3> <ul> <li><a href="merge.c#appendmergeset">qh_appendmergeset</a> @@ -211,7 +211,7 @@ qh.facet_mergeset if non-convex </li> test vertex neighbors for convexity </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mbest">functions for +<h3><a href="qh-merge.htm#TOC">»</a><a name="mbest">functions for determining the best merge</a></h3> <ul> <li><a href="merge.c#findbest_test">qh_findbest_test</a> @@ -221,7 +221,7 @@ finds best neighbor of a facet for merging (i.e., closest hyperplane) </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mmerge">functions for +<h3><a href="qh-merge.htm#TOC">»</a><a name="mmerge">functions for merging facets</a></h3> <ul> <li><a href="merge.c#copynonconvex">qh_copynonconvex</a> @@ -256,7 +256,7 @@ moves facet to qh.visible_list; sets replacement or NULL </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mcycle">functions for +<h3><a href="qh-merge.htm#TOC">»</a><a name="mcycle">functions for merging a cycle of facets</a></h3> <p>If a point is coplanar with an horizon facet, the corresponding new facets are linked together (a <em>samecycle</em>) @@ -278,7 +278,7 @@ merge ridge sets for samecycle </li> <li><a href="merge.c#mergecycle_vneighbors">qh_mergecycle_vneighbors</a> merge vertex neighbor sets for samecycle </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mrename">functions +<h3><a href="qh-merge.htm#TOC">»</a><a name="mrename">functions for renaming a vertex</a></h3> <ul> <li><a href="merge.c#comparevisit">qh_comparevisit</a> @@ -298,7 +298,7 @@ rename oldvertex to newvertex in ridges </li> remove extra vertices in non-simplicial facets </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mvertex">functions +<h3><a href="qh-merge.htm#TOC">»</a><a name="mvertex">functions for identifying vertices for renaming</a></h3> <ul> <li><a href="merge.c#find_newvertex">qh_find_newvertex</a> @@ -317,7 +317,7 @@ vertex </li> add adjacent ridges for a vertex in facet </li> </ul> -<h3><a href="qh-merge.htm#TOC">»</a><a name="mcheck">functions for check and +<h3><a href="qh-merge.htm#TOC">»</a><a name="mcheck">functions for check and trace</a></h3> <ul> <li><a href="merge.c#checkconnect">qh_checkconnect</a> diff --git a/src/qh-poly.htm b/src/qh-poly.htm index 1dfe7af..cbf234e 100644 --- a/src/qh-poly.htm +++ b/src/qh-poly.htm @@ -121,7 +121,7 @@ may have zero area or flipped orientation. </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <b>Poly</b> @@ -149,7 +149,7 @@ functions</a> </li> functions</a> </li> <li><a href="#pcheck">Check functions</a> </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="ptype">Data +<h3><a href="qh-poly.htm#TOC">»</a><a name="ptype">Data types and global lists for polyhedrons</a></h3> <ul> <li><a href="libqhull.h#facetT">facetT</a> defines a @@ -163,7 +163,7 @@ lists</a> lists of facets and vertices </li> <li><a href="libqhull.h#qh-set">qh global sets</a> global sets for merging, hashing, input, etc. </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pconst">poly.h constants</a></h3> +<h3><a href="qh-poly.htm#TOC">»</a><a name="pconst">poly.h constants</a></h3> <ul> <li><a href="poly.h#ALGORITHMfault">ALGORITHMfault</a> flag to not report errors in qh_checkconvex() </li> @@ -176,7 +176,7 @@ a duplicate ridge </li> special value for facet->neighbor to indicate a merged ridge </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pgall">Global FORALL +<h3><a href="qh-poly.htm#TOC">»</a><a name="pgall">Global FORALL macros</a></h3> <ul> <li><a href="libqhull.h#FORALLfacets">FORALLfacets</a> @@ -192,7 +192,7 @@ qh.num_points </li> <li><a href="libqhull.h#FORALLvertices">FORALLvertices</a> assign 'vertex' to each vertex in qh.vertex_list </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pall">FORALL macros</a></h3> +<h3><a href="qh-poly.htm#TOC">»</a><a name="pall">FORALL macros</a></h3> <ul> <li><a href="poly.h#FORALLfacet_">FORALLfacet_</a> assign 'facet' to each facet in facetlist </li> @@ -205,7 +205,7 @@ assign 'same' to each facet in samecycle</li> <li><a href="poly.h#FORALLvertex_">FORALLvertex_</a> assign 'vertex' to each vertex in vertexlist </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="peach">FOREACH macros</a></h3> +<h3><a href="qh-poly.htm#TOC">»</a><a name="peach">FOREACH macros</a></h3> <ul> <li><a href="libqhull.h#FOREACHfacet_">FOREACHfacet_</a> assign 'facet' to each facet in facets </li> @@ -225,7 +225,7 @@ assign 'vertexA' to each vertex in vertex set</li> <li><a href="poly.h#FOREACHvisible_">FOREACHvisible_</a> assign 'visible' to each facet in facet set </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pieach">Indexed +<h3><a href="qh-poly.htm#TOC">»</a><a name="pieach">Indexed FOREACH macros</a></h3> <ul> <li><a href="libqhull.h#FOREACHfacet_i_">FOREACHfacet_i_</a> @@ -247,14 +247,14 @@ vertices set </li> assign 'vertex' to each vertex in vertex set; reverse the order of first two vertices </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pmacro">Other macros for polyhedrons</a></h3> +<h3><a href="qh-poly.htm#TOC">»</a><a name="pmacro">Other macros for polyhedrons</a></h3> <ul> <li><a href="libqhull.h#getid_">getid_</a> return ID for a facet, ridge, or vertex </li> <li><a href="libqhull.h#otherfacet_">otherfacet_</a> return neighboring facet for a ridge in a facet </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="plist">Facetlist +<h3><a href="qh-poly.htm#TOC">»</a><a name="plist">Facetlist functions</a></h3> <ul> <li><a href="poly.c#appendfacet">qh_appendfacet</a> @@ -286,7 +286,7 @@ unlinks facet from qh.facet_list</li> reset qh.newvertex_list, qh.newfacet_list, and qh.visible_list </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pfacet">Facet +<h3><a href="qh-poly.htm#TOC">»</a><a name="pfacet">Facet functions</a></h3> <ul> <li><a href="poly2.c#createsimplex">qh_createsimplex</a> @@ -323,7 +323,7 @@ delete mirrored facets from qh_triangulate</li> <li><a href="poly2.c#triangulate_null">qh_triangulate_null</a> delete null facet from qh_triangulate</li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pvertex">Vertex, +<h3><a href="qh-poly.htm#TOC">»</a><a name="pvertex">Vertex, ridge, and point functions</a></h3> <ul> <li><a href="poly.c#appendvertex">qh_appendvertex</a> @@ -371,7 +371,7 @@ neighbors </li> returns True if vertexsetA is a subset of vertexsetB </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="phash">Hashtable functions</a></h3> +<h3><a href="qh-poly.htm#TOC">»</a><a name="phash">Hashtable functions</a></h3> <ul> <li><a href="poly2.c#addhash">qh_addhash</a> add hash element to linear hash table</li> @@ -392,7 +392,7 @@ allocate a new qh.hash_table </li> <li><a href="poly2.c#printhashtable">qh_printhashtable</a> print hash table </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pnew">Allocation and +<h3><a href="qh-poly.htm#TOC">»</a><a name="pnew">Allocation and deallocation functions</a></h3> <ul> <li><a href="poly2.c#clearcenters">qh_clearcenters</a> @@ -412,7 +412,7 @@ and allocate space for a ridge </li> <li><a href="poly2.c#newvertex">qh_newvertex</a> create and allocate space for a vertex </li> </ul> -<h3><a href="qh-poly.htm#TOC">»</a><a name="pcheck">Check +<h3><a href="qh-poly.htm#TOC">»</a><a name="pcheck">Check functions</a></h3> <ul> <li><a href="poly2.c#check_bestdist">qh_check_bestdist</a> diff --git a/src/qh-qhull.htm b/src/qh-qhull.htm index 391234e..f7177ce 100644 --- a/src/qh-qhull.htm +++ b/src/qh-qhull.htm @@ -43,7 +43,7 @@ contains prototypes for these functions.</p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> @@ -65,7 +65,7 @@ constants</a> </li> <li><a href="#qtest">Top-level routines for testing and debugging</a></li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qtype">libqhull.h and unix.c +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qtype">libqhull.h and unix.c data types and constants</a></h3> <ul> <li><a href="libqhull.h#flagT">flagT</a> Boolean flag as @@ -88,7 +88,7 @@ to distinguish error output from normal output [C++ only]</li> <li><a href="global.c#qh_version">qh_version</a> version stamp</li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qmacro">libqhull.h other +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qmacro">libqhull.h other macros</a></h3> <ul> <li><a href="qhull_a.h#traceN">traceN</a> print trace @@ -97,7 +97,7 @@ message if <em>qh.IStracing >= N</em>. </li> unused variable to avoid warnings. </li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qfunc">Quickhull +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qfunc">Quickhull routines in call order</a></h3> <ul> <li><a href="unix.c#main">main</a> processes the @@ -133,7 +133,7 @@ partition coplanar point into a facet </li> <li><a href="libqhull.c#precision">qh_precision</a> restart on precision errors if not merging and if 'QJn'</li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qinit">Top-level routines for initializing and terminating Qhull (in other modules)</a></h3> +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qinit">Top-level routines for initializing and terminating Qhull (in other modules)</a></h3> <ul> <li><a href="global.c#freebuild">qh_freebuild</a> free memory used by qh_initbuild and qh_buildhull @@ -159,7 +159,7 @@ define additional quick allocation sizes </li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qin">Top-level routines for reading and modifying the input (in other modules)</a></h3> +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qin">Top-level routines for reading and modifying the input (in other modules)</a></h3> <ul> <li><a href="geom2.c#gram_schmidt">qh_gram_schmidt</a> implements Gram-Schmidt orthogonalization by rows </li> @@ -181,7 +181,7 @@ generate dual for halfspace intersection with interior point </li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qcall">Top-level routines for calling Qhull (in other modules)</a></h3> +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qcall">Top-level routines for calling Qhull (in other modules)</a></h3> <ul> <li><a href="libqhull.c#addpoint">qh_addpoint</a> add point to convex hull </li> @@ -193,7 +193,7 @@ exhaustive search for facet below a point </li> the convex hull of a set of points </li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qout">Top-level routines for returning results (in other modules)</a></h3> +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qout">Top-level routines for returning results (in other modules)</a></h3> <ul> <li><a href="stat.c#collectstatistics">qh_collectstatistics</a> collect statistics for qh.facet_list </li> @@ -220,7 +220,7 @@ print the results of qh_qhull() </li> compute Voronoi centers for all facets </li> </ul> -<h3><a href="qh-qhull.htm#TOC">»</a><a name="qtest">Top-level routines for testing and debugging (in other modules)</a></h3> +<h3><a href="qh-qhull.htm#TOC">»</a><a name="qtest">Top-level routines for testing and debugging (in other modules)</a></h3> <ul> <li><a href="io.c#dfacet">dfacet</a> print facet by ID from debugger </li> diff --git a/src/qh-set.htm b/src/qh-set.htm index bdc2f43..aa82f7c 100644 --- a/src/qh-set.htm +++ b/src/qh-set.htm @@ -62,7 +62,7 @@ a larger array. </p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> @@ -87,7 +87,7 @@ a larger array. </p> <li><a href="#sdel">Delete functions</a> </li> <li><a href="#stemp">Temporary set functions</a> </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="stype">Data types and +<h3><a href="qh-set.htm#TOC">»</a><a name="stype">Data types and constants</a></h3> <ul> <li><a href="qset.h#SETelemsize">SETelemsize</a> size @@ -97,7 +97,7 @@ maximum size and a current size</li> <li><a href="libqhull.h#qh-set">qh global sets</a> global sets for temporary sets, etc. </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="seach">FOREACH macros</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="seach">FOREACH macros</a></h3> <ul> <li><a href="qset.h#FOREACHelem_">FOREACHelem_</a> assign 'elem' to each element in a set </li> @@ -113,7 +113,7 @@ define a reversed FOREACH iterator </li> define a FOREACH iterator with e[1] and e[0] reversed </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="saccess">Access and +<h3><a href="qh-set.htm#TOC">»</a><a name="saccess">Access and size macros</a></h3> <ul> <li><a href="qset.h#SETelem_">SETelem_</a> return the @@ -137,14 +137,14 @@ return second element of set as a type</li> <li><a href="qset.h#SETtruncate_">SETtruncate_</a> truncate set to size, i.e., qh_settruncate()</li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="sint">Internal macros</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="sint">Internal macros</a></h3> <ul> <li><a href="qset.c#SETsizeaddr_">SETsizeaddr_</a> return pointer to end element of a set (indicates current size) </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="saddr">address macros</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="saddr">address macros</a></h3> <ul> <li><a href="qset.h#SETaddr_">SETaddr_</a> return address of a set's elements </li> @@ -155,7 +155,7 @@ modifying the current element in a FOREACH iteration </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="snew">Allocation and +<h3><a href="qh-set.htm#TOC">»</a><a name="snew">Allocation and deallocation functions</a></h3> <ul> <li><a href="qset.c#setfree">qh_setfree</a> free the @@ -168,7 +168,7 @@ free a set only if it is in long memory </li> set </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="spred">Access and +<h3><a href="qh-set.htm#TOC">»</a><a name="spred">Access and predicate functions </a></h3> <ul> <li><a href="qset.c#setequal">qh_setequal</a> return 1 @@ -192,7 +192,7 @@ last element of a set</li> the size of a set </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="sadd">Add functions</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="sadd">Add functions</a></h3> <ul> <li><a href="qset.c#setaddnth">qh_setaddnth</a> add a element as n'th element of sorted or unsorted set @@ -214,7 +214,7 @@ replace one element with another in a set</li> element if it is not already in a set </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="scheck">Check and print functions</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="scheck">Check and print functions</a></h3> <ul> <li><a href="qset.c#setcheck">qh_setcheck</a> check a set for validity </li> @@ -222,7 +222,7 @@ set for validity </li> set's elements to fp </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="scopy">Copy, compact, and zero functions</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="scopy">Copy, compact, and zero functions</a></h3> <ul> <li><a href="qset.c#setcompact">qh_setcompact</a> compact NULLs from an unsorted set </li> @@ -236,7 +236,7 @@ truncate a set to size elements </li> remainder of a set </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="sdel">Delete functions</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="sdel">Delete functions</a></h3> <ul> <li><a href="qset.c#setdel">qh_setdel</a> delete an element from an unsorted set. </li> @@ -253,7 +253,7 @@ create a sorted set not containing the nth element </li> </ul> -<h3><a href="qh-set.htm#TOC">»</a><a name="stemp">Temporary set functions</a></h3> +<h3><a href="qh-set.htm#TOC">»</a><a name="stemp">Temporary set functions</a></h3> <ul> <li><a href="qset.c#settemp">qh_settemp</a> return a temporary set and append it qhmem.tempstack</li> diff --git a/src/qh-stat.htm b/src/qh-stat.htm index 7fcf7ba..7218d05 100644 --- a/src/qh-stat.htm +++ b/src/qh-stat.htm @@ -43,7 +43,7 @@ statistics are ignored.</p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> @@ -59,14 +59,14 @@ statistics are ignored.</p> <li><a href="#tfunc">stat.c functions</a> </li> </ul> -<h3><a href="qh-stat.htm#TOC">»</a><a name="ttype">stat.h types</a></h3> +<h3><a href="qh-stat.htm#TOC">»</a><a name="ttype">stat.h types</a></h3> <ul> <li><a href="stat.h#intrealT">intrealT</a> union of integer and real</li> <li><a href="stat.h#qhstat">qhstat</a> global data structure for statistics </li> </ul> -<h3><a href="qh-stat.htm#TOC">»</a><a name="tconst">stat.h +<h3><a href="qh-stat.htm#TOC">»</a><a name="tconst">stat.h constants</a></h3> <ul> <li><a href="stat.h#KEEPstatistics">qh_KEEPstatistics</a> 0 turns off most statistics</li> @@ -78,7 +78,7 @@ remain defined if qh_KEEPstatistics=0 <li><a href="stat.h#ztype">ztype</a> zdoc, zinc, etc. for definining statistics </li> </ul> -<h3><a href="qh-stat.htm#TOC">»</a><a name="tmacro">stat.h macros</a></h3> +<h3><a href="qh-stat.htm#TOC">»</a><a name="tmacro">stat.h macros</a></h3> <ul> <li><a href="stat.h#MAYdebugx">MAYdebugx</a> called frequently for error trapping </li> @@ -96,7 +96,7 @@ integer or real minimum statistic </li> return value of a statistic </li> </ul> -<h3><a href="qh-stat.htm#TOC">»</a><a name="tfunc">stat.c +<h3><a href="qh-stat.htm#TOC">»</a><a name="tfunc">stat.c functions</a></h3> <ul> <li><a href="stat.c#allstatA">qh_allstatA</a> define diff --git a/src/qh-user.htm b/src/qh-user.htm index 3e881a7..62750c1 100644 --- a/src/qh-user.htm +++ b/src/qh-user.htm @@ -37,7 +37,7 @@ user may want to change. </p> </blockquote> <p><b>Copyright © 1995-2010 C.B. Barber</b></p> <hr> -<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> +<p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • <a href="qh-io.htm#TOC">Io</a> • <a href="qh-mem.htm#TOC">Mem</a> • <a href="qh-merge.htm#TOC">Merge</a> • <a href="qh-poly.htm#TOC">Poly</a> @@ -59,7 +59,7 @@ configuration macros</a> </li> <li><a href="#u2func">user2.c functions</a> </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="qulllib">Qhull library constants</a></h3> +<h3><a href="qh-user.htm#TOC">»</a><a name="qulllib">Qhull library constants</a></h3> <ul> <li><a href="user.h#filenamelen">FILENAMElen</a> -- max length of TI or TO filename </li> <li><a href="user.h#msgcode">msgcode</a> -- unique message codes for qh_fprintf </li> @@ -67,7 +67,7 @@ configuration macros</a> </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="utype">user.h data +<h3><a href="qh-user.htm#TOC">»</a><a name="utype">user.h data types and configuration macros</a></h3> <ul> <li><a href="user.h#realT">realT, qh_REAL...</a> size @@ -79,7 +79,7 @@ Qhull </li> number generator </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="udef">definition constants</a></h3> +<h3><a href="qh-user.htm#TOC">»</a><a name="udef">definition constants</a></h3> <ul> <li><a href="user.h#DEFAULTbox">qh_DEFAULTbox</a> define default box size for rbox, 'Qbb', and 'QbB' (Geomview expects 0.5) </li> @@ -91,7 +91,7 @@ define convention for orienting facets</li> define facets that are ignored in Delaunay triangulations</li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="ujoggle">joggle constants</a></h3> +<h3><a href="qh-user.htm#TOC">»</a><a name="ujoggle">joggle constants</a></h3> <ul> <li><a href="user.h#JOGGLEagain">qh_JOGGLEagain</a> how often to retry before using qh_JOGGLEmaxincrease @@ -110,7 +110,7 @@ report error if this many retries </li> how often to retry before using qh_JOGGLEmax </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="uperform">performance +<h3><a href="qh-user.htm#TOC">»</a><a name="uperform">performance related constants</a></h3> <ul> <li><a href="user.h#HASHfactor">qh_HASHfactor</a> @@ -128,7 +128,7 @@ tracing </li> count is smaller </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="umemory">memory constants</a></h3> +<h3><a href="qh-user.htm#TOC">»</a><a name="umemory">memory constants</a></h3> <ul> <li><a href="user.h#MEMalign">qh_MEMalign</a> memory alignment for qh_meminitbuffers() in global.c </li> @@ -138,7 +138,7 @@ size of additional memory buffers </li> size of initial memory buffer </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="ucond">conditional compilation</a></h3> +<h3><a href="qh-user.htm#TOC">»</a><a name="ucond">conditional compilation</a></h3> <ul> <li><a href="user.h#compiler">compiler</a> defined symbols, e.g., _STDC_ and _cplusplus @@ -159,7 +159,7 @@ access global data with pointer or static structure use abbreviated help messages, e.g., for degenerate inputs </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="umerge">merge +<h3><a href="qh-user.htm#TOC">»</a><a name="umerge">merge constants</a></h3> <ul> <li><a href="user.h#BESTcentrum">qh_BESTcentrum</a> @@ -196,7 +196,7 @@ what is a WIDEfacet? </li> max. cosine to warn about qh.NARROWhull </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="ufunc">user.c +<h3><a href="qh-user.htm#TOC">»</a><a name="ufunc">user.c functions</a></h3> <ul> <li><a href="user.c#errexit">qh_errexit</a> report @@ -209,7 +209,7 @@ of points</li> print all fields of all facets </li> </ul> -<h3><a href="qh-user.htm#TOC">»</a><a name="u2func">user2.c +<h3><a href="qh-user.htm#TOC">»</a><a name="u2func">user2.c functions</a></h3> <ul> <li><a href="user2.c#qh_exit">qh_exit</a> exit program, same as exit().</li> -- GitLab