Qhull Changelog

What's new in Qhull 2010.1

Jan 25, 2010
  • Fixed quote for #include in qhull.h [U.Hergenhahn, K.Roland]
  • Add qt-qhull.cpp with Qt conditional code
  • 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 qh-code.htm#questions-cpp
  • Moved suggestions to qh-code.htm#enhance
  • Moved documentation requests to qh-code.htm#enhance
  • Add md5sum file to distributions
  • Switched to DevStudio builds to avoid dependent libraries, 10% slower
  • Removed user_eg3.exe and qhullcpp.dll from Windows build
  • Fix qhull.sln and project files for qh_QHpointer
  • Add eg/qhull-zip.sh to build qhull distribution files
  • Changes to build and distribution:
  • Use qh_QHpointer=0 for libqhull.a, qhull, rbox, etc.
  • Use -Dqh_QHpointer for libqhullp.a, qhullcpp.dll, etc.
  • qh_QHpointer costs: [2010, gcc] 4% time 4% space, [2003, msvc] 8% time 2% space
  • Add config/ and project/debian/ for Autoconf build [R. Laboissiere]
  • from debian branch in git and http://savannah.nongnu.org/cvs/?group=qhull
  • Add CMakeLists.txt [kwilliams]
  • Fix tabs in Makefile.txt [mschamschula]
  • Add -fno-strict-aliasing to Makefile for gcc 4.1, 4.2, and 4.3 qset segfault
  • Remove user_eg.exe and user_eg2.exe from Windows distribution
  • Order object files by frequency of execution for better locality.
  • Changes to source:
  • Remove ptr_intT from qh_matchvertices. It was int since the beginning.
  • user.h requires for CLOCKS_PER_SEC
  • Move ostream

New in Qhull 2010.0.3 (Jan 25, 2010)

  • Fixed bugs:
  • 'QJn' (joggle): Fix qh.STOPcone in qh_build_withrestart(). It was not cleared.
  • qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished, otherwise set if needed.

New in Qhull 2010.0.2 (Jan 25, 2010)

  • Fixed bugs:
  • qh_gethash [poly.c]: fix sign conversion.
  • Previously, the result may be negative, leading to a segfault.
  • The bug is more likely with large address spaces
  • Reviewed all uses of %(modulo) for remainder with negative arguments
  • Reviewed output of q_test and compared to results from 2003.1
  • Breaking code changes:
  • Return type of qh_gethash changed from unsigned to int. Matches 'size'
  • addhash takes a signed hash
  • qh_addhash( newelem, hashtable, hashsize, hash )
  • Code changes:
  • Test for qh_qh in qh_printf
  • Makefile.txt corrected for libqhull build [amorilia]
  • Renamed index to idx to avoid shadowing BSD strings.h [kwilliams]

New in Qhull 2010.0.1 (Jan 25, 2010)

  • New Features:
  • Added option 'Ta' to annotate output with message codes
  • Preliminary C++ support:
  • C++ declarations may change without warning
  • Preliminary documentation for Qhull's C++ interface [qh-code.htm#cpp, qhull-cpp.xml]
  • Added user_eg3 as an example of Qhull.cpp
  • Removed qhull_interface.cpp
  • Changes to qhull options and results:
  • Allow 'd' and 'v' as the filename for 'TO ..' and 'TI ...' in qdelaunay [M. Jambon]
  • 'rbox tN' requires an integer (previously allowed floats)
  • Allow quoted filenames for 'TO ...' and 'TI ...'
  • Prefix error messages and warnings with a message code (e.g., QH6012)
  • Fixed rbox ignoring flags that were not separated by spaces
  • Report all hidden options before exiting in qh_checkflags()
  • Defined qh_OPTIONline [user.h] as max length of option line ('FO')
  • Report error if negative arguments to rbox 'G', 'L', 'Z'
  • Unknown rbox flag changed from a warning to an error
  • Set error status 4 qh_ERRmem if rbox runs out of memory
  • Removed extra spaces at end of line
  • Breaking Code Changes:
  • Renamed qh.coplanarset to coplanarfacetset. Avoids conflict with facetT.coplanarset
  • qh_restore_qhull() zeroes out qh.old_qhstat and qh.old_tempstack.
  • Ownership moved.
  • Rewrote save_qhull/restore_qhull
  • Add Ztotcheck to zzdef_ [R. Gardener]
  • Changed qh_malloc to size_t (was unsigned long)
  • Declare qh_PRINT instead of int [kwilliams]
  • In qh_printafacet(), changed error output to 'qh ferr'
  • Bug fixes to C code:
  • Use gcc 4.4.0 or later. gcc 4.2.1, 4.2.2, and 4.3.2 -O2 segfaults in qset.c . gcc 4.1.1 was OK
  • See bug report http://gcc.gnu.org/ml/gcc-bugs/2007-09/msg00474.html
  • Rewrite qh_setappend to avoid g++ 4.1, 4.2, and 4.3 strict_aliasing error.
  • Orion Poplawski ([email protected])
  • http://www.rpmfind.net/linux/RPM/fedora/12/ppc/qhull-devel-2003.1-13.fc12.ppc64.html
  • Fixed qh_findfacet_all(), "REALmin" should be "-REALmax" [L.A. Taylor].
  • Effects library users for convex hulls and halfspace intersections.
  • qh_printfacet [io.c] Removed extra space for neighboring facets
  • Report error if d points, Delaunay, and not Qz
  • Fixed double-free of facet->centrum for triangulated facets
  • Fixed mindist initialization if !testcentrum in io.c findbest_test [Ratcliff]
  • Fixed parentheses around warning for missing 'Qc' [qh_initqhull_outputflags]
  • Fixed rbox buffer overflow of 'command' when appending seedbuf
  • Fixed option string for 'rbox t t999'. Although seed was correctly set to 999, a random seed was appended to the rbox comment (e.g., 'rbox t t999 t32343')
  • Fixed upper bound of sanity check for qh_RANDOMmax in qh_initqhull_globals()
  • Changes to C code:
  • Reordered #include from specific to general. Move up .h for module.
  • Removed qh.old_stat -- never used
  • Removed qh_clearcenters from qh_freeqhull. Duplicated by qh_delfacet
  • qh_printcenter [io.c] removed unreachable fprintf argument
  • qh_getarea() [geom2.c] ignored on multiple calls (qh.hasAreaVolume)
  • qh_getarea() [geom2.c] checks facet->isarea. Set by QhullFacet.facetArea()
  • qh_triangulate() [poly2.c] ignored on multiple calls (qh.hasTriangulation)
  • Add statistics for vertex_visit and visit_id to buildtracing
  • Defined scale and offset parameters for qh_randomfactor
  • Bug fixes and changes to mem.c/mem.h:
  • Fixed qhmem.totshort (total short memory in use)
  • Memory tracing (T5) redone for sort order by object
  • Added full tracing for short memory allocations.
  • Added qhmem.totfree (total short memory on freelists)
  • Increases size of qh_memalloc_ and qh_memfree_
  • Added qhmem.totdropped (leftover freesize at end of each short buffer)
  • Added qhmem.totunused (short size - request size)
  • Added qhmem.totbuffer (total short memory buffer w/o links)
  • Added memory statistics to qh_NOmem;
  • Added qh_memtotal to track allocated memory
  • Renamed qh_memfree parameter to 'insize' for consistency with qh_memalloc
  • Removed qhmem.curlong. qa_memfreeshort computes curlong from cntlong and cntfree
  • In mem.h, changed ptr_intT to long. qh_meminit() checks that it holds a 'void*'
  • Fixed g++ and devstudio warnings:
  • Except for bit field conversions, compiles cleanly with
  • Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -Wno-sign-conversion -Wconversion
  • Fixed warnings at VC8, level 4
  • Fix data types to remove conversion warnings [kwilliams]
  • Use size_t for calls to malloc,etc [kwilliams]
  • Retained int sizes for qset.h and mem.h. Follows Qt convention
  • and is easier to work with. int can be 64-bits if 2 billion facets
  • Change literal strings to const char* [kwilliams]
  • Added type casts to SETfirst and SETsecond [amorilia+alphax]
  • getid_() returns an int [kwilliams]
  • Add missing const annotations [kwilliams]
  • Fixed 64-bit warnings (marked with "WARN64")
  • Convert sizeof to (int) for int parameters
  • In libqhull.c, added explicit casts from long to float, Avoids warning
  • In global.c, cast time() to int for QRandom-seed. Avoids warning
  • Changes to C code for C++ support:
  • Add sln, vcproj, and qtpro files for building Qhull -- add to README notes
  • Added dim to vertexT for cpp interface. Reduced size of qh.vertex_visit
  • qh_produce_output [io.c] may be called multiple times (C++ interface)
  • Moved SETsizeaddr_() to qset.h for use by QhullSet.cpp
  • Option 'Tz' sets flag qh.USEstdout for QhullPoints.cpp
  • Added support for multiple output runs from QhullPoints.outputQhull
  • qh_clear_outputflags() resets the output flags
  • qh_initqhull_outputflags split from qh_initqhull_globals
  • Added qh.run_id, a random identifier for this instance of Qhull (QhullPoints)
  • For qh.run_id, initqhull_start initializes qh_RANDOMseed to time instead of 1
  • Extracted qh_argv_to_command (random.c) from qh_init_qhull_command and fixed a buffer overflow
  • Moved qh_strtod/qh_strtol from global.c to random.c for use in rboxlib.c
  • Split out random functions into random.c
  • Added message codes to qh_fprintf(). See its definition in user.c
  • Replaced exit, malloc, free, fprintf, and fputs with qh_malloc,...[J.W. Ratcliff]
  • Added qh_fprintf, qh_malloc, qh_free, ph_printhelp_narrowhull to user.c
  • Moved qh_printhelp_degenerate and qh_printhelp_singular from io.c to user.c
  • Clear qh.ERREXITcalled at end of qh_errexit().
  • Documentation:
  • Fixed out-of-date CiteSeer references
  • Renamed html/qh-in.htm to html/qh-code.htm
  • Add reference to 'Qt' to 'i'
  • Add reference to 'FS' to 'FA'
  • qh-impre.htm discusses precision issues for halfspace intersection
  • Add cross references between options 'FA' and 'FS'
  • Added link to Wolfram Research's MathWorld site
  • Updated Fukuda's links
  • Changed copyright to C.B. Barber for C++, documentation, and merge.c
  • Updated Qhull citation with page numbers.
  • Proposed project: constructing Voronoi diagram
  • Proposed project: computing Voronoi volumes
  • Replaced tabs with spaces in qhull.txt and rbox.txt

New in Qhull 2009.1 (Jan 25, 2010)

  • src/rbox.c (main): Avoid problems of evaluation order when pre-incrementing arguments of strtod
  • src/io.c (qh_produce_output), src/stat.c (qh_initstatistics): Use %lu instead of %d in the format string for arguments of type size_t
  • html/qhull.man, html/rbox.man: Fix several syntax, macros, and hyphen problems in man pages
  • The Autotools files have been generated with modern version of autoconf 2.63)
  • automake/aclocal (1.10.2), and libtool (2.2.6)
  • Some character issues in the man pages are fixed

New in Qhull 2003.1 (Feb 22, 2007)

  • Add Maple output ('FM') for 2-d and 3-d convex hulls [T. Abraham]
  • Fixed qh_findbest() for upperdelaunay facets w/o better, lower neighbors for library users and some qhull users [A. Cutti, E. Milloti, K. Sun]
  • Preserved qhmem.ferr in qh_memfreeshort() for library users
  • Removed 'static' from qh_compare... for io.h and merge.h [V. Brumberg]
  • Add warning to findDelaunay() and qh_in.htm about tricoplanar facets
  • Noted Edelsbrunner's Geometry & Topology for Mesh Generation [qh-impre.htm]
  • Noted Gartner's Miniball algorithm [qh_impre.htm]
  • Noted Veron and Leon's shape preserving simplification [qh_impre.htm]