Skip to content
Qhull 2020.1 2020/05/29 (8.0.0)

Bugs fixed
- QhullLinkedList::const_iterator: Fixed operator->() for T*.  It returned &i [J. Mirabel 5/1/2020 #61]

API changes
- RoadError.cpp: stringGlobalLog returns std::string instead of const char* [M. Gehre #46]
- io_r.c/qh_order_vertexneighbors: order facet neighbors of a vertex by 2-d (orientation), 3-d (adjacency), n-d (f.visitid,id) [I. Gardner]
- poly2_r.c/qh_nextfacet2d: Return next facet and vertex in qh_ORIENTclock order [N. Katzakis #54]

C++ interface
- Qhull.cpp: Add isDelaunay().  True if computing Delaunay or Voronoi regions
  Add prepareVoronoi() for Voronoi output.  See user_eg3_r.cpp for examples
  ~Qhull: Change 'Qhull output at end' to 'Qhull messages at ~Qhull()'
- QhullFacet.cpp: Add visitId() for f.visitid.  Needed for Voronoi output
  Add nextFacet2d(): Iterate 2-d facets and vertices in counter-clockwise order [N. Katzakis #54]
  Add setFacetT()
- QhullRidge.cpp: Add setRidgeT() and qh()
- QhullUser.cpp: Add a user-modifiable interface to Qhull using a custom qh_fprintf
  Enhanced qh_fprintf with qhull-2019.1 updates to userprintf_r
     Option 'Ta' prefixes output with message code, [QHnnnn]
     Option 'Tf' flushes the output after each message, for tracing segfaults
     Errors and high-level trace messages prefixed with QHnnnn
     Debugging traps for qh.tracefacet, qh.traceridge, qh.tracevertex
- QhullVertex.cpp: Add setVertexT()
- QhullQh.cpp: moved qh_fprintf to QhullUser
- RoadLogEvent::toString: do not prepend QHnnnn if format_string starts with QHn or [QHn
- RboxPoints::appendPoints: use current dimension instead of throwing an error
- user_eg3 rbox: set dimension for multiple options (e.g., user_eg3 rbox D4 5 qhull)
- user_eg3 eg-convex: a 3-d convex hull using the C++ interface to Qhull [I. Voutchkov]
- user_eg3 eg-delaunay: a 2-d Delaunay triangulation using the C++ interface to Qhull
- user_eg3 eg-voronoi: a 2-d Voronoi diagram using the C++ interface to Qhull
- user_eg3 eg-fifo: hyperplanes separating Voronoi regions via QhullUser and qh_fprintf

Documentation
- index.htm: Add Teillaud's http://www.computational-geometry.org/
- index.htm: Add When to use Qhull and Performance of Qhull to the Qhull Manual
- html/qconvex.htm: Add orientation for options 'i', 'Fx', and 'o'
  qconvex .: keep the option prompt to five columns
- html/qdelaun.htm: qh_findbestfacet may return an adjacent facet for a point
- html/qhalf.htm,qh-optf.htm,qh-opto.htm: Added notes for options to halfspaces, e.g., 'Fp' and -10.101 [E. Huang #53]
- html/qhalf.htm,qhalf.c,qhalf_r.c,qh-optf.htm: Fix documentation for 'qhalf FN'.  The output includes all halfspaces.
- html/qvoronoi.htm,qvoron_f.htm: Fix link for control option, 'TI file'
- html/qvoronoi.htm,qvoron_f.htm, qh-optf: the hyperplanes for 'Fi' and 'Fo' include the first vertex
  Option 'Fo' uses the midpoint in place of the vertex at infinity.
- html/qh-optf.htm: Voronoi options 'Fi' and 'Fo' orient the hyperplane so that the site is below the hyperplane
- html/qh-optf.htm,qh-optt.htm: Voronoi option 'Fo' does not check the hyperplane with 'Tv'
  The hyperplane check for 'Fi Tv' uses the midpoint, which 'Fo' already used in place of infinity
- README.txt/Windows install: install Git for Windows in C:\Git\ instead of Program Files
  README.txt/Unix install: add options for 32-bit builds w/o -fpic
  README.txt,Makefile: link libqhullcpp before libqhull_r
- COPYING.txt: Add a note to COPYING.txt about C.B. Barber [M. Pryczek]
- libqhull/DEPRECATED.txt: Add link to qh-code.htm#convert
- Qhull::vertexList: ordered by qh.vertex_list, not by adjacency [N. Katzakis #54]
- QhullPoints.cpp/extraCoordinatesCount: must be less than point_dimension (-Wconversion)
- QhullPoints.cpp/indexOf: extra must be less than point_dimension (-Wconversion)
- io_r.c/qh_detvnorm: add note that qh_sethyperplane_gauss returns nearzero for axis-parallel hyperplanes
- user_r.h/qh_CPUclock: may be converted to approximate double (-Wconversion)
- Update copyright to 2020

Build
- Increase SOVERSION to 8.0 due to ABI breakage in 2019.1 [T. Roehling #58]
  Change SOVERSION to major.minor due to Qhull's global data structure qhT [T. Roehling #58]
  Add symbolic link from SONAME_EXT to libqhull_r [T. Roehling #58]
  Add SO and SONAME_EXT to 'make help'
- qhull.pc.in: Added for pkg-config support [T. Roehling #60]
- CMakeLists.txt: Add pkg-config support and change *_INSTALL_DIR to relative paths [T. Roehling #60]
  Change CMAKE_SOURCE_DIR to CMAKE_CURRENT_SOURCE_DIR to allow qhull as a subdirectory [Morwenn #53, A. De #59, A. Maloney, futex]
- Makefile:
  Add pkg-support [T. Roehling #63]
  Renamed $DESTDIR as $PREFIX to conform with GNU Makefile standards [T. Roehling #63]
  $DESTDIR is for staged installs as defined by GNU Makefile standards [T. Roehling #63]
  Commented out M32=-m32 despite memory savings. It caused build failures, e.g., Mac [J. Hollowed]
  '-fpic' is required for linking to shared libraries [T. Roehling #63]
  Replaced -fpic with FPIC=-fpic for gcc builds
  Added FPIC to CXX_OPTS1 (same as CMakeLists.txt for libqhullcpp)
  Use 'FPIC=' to disable -fpic (may be faster for 32-bit builds on 64-bit hosts)
  Extract qhull_VERSION and qhull_SOVERSION from CMakeLists.txt [T. Roehling #63]
  Move the -lm linker flag to the end of the linker command [T. Roehling #63]
  Add QhullVertexSet.h to LIBQHULLCPP_HDRS
  Invoke q_test via bash to avoid "eg not a valid command"
- Add build/*vcxproj to Unix distribution

Testing and other changes
- q_test: Add list of executables via 'which'
  Add tests of user_eg3 with each option and use case
  Add "Testing done" notification
  Add "set +v" for echoes
- qhull-zip.sh: Add early check for 32-bit release build and modified files
  Add link checks for options
  Add findf for identifying files for link checks
  Add prompts for web.archive and md5sum in qh-get.htm