Skip to content

Tags: dooxe/qhull

Tags

2019.1

Toggle 2019.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2019.1 2019/06/21 (7.3.2) released

Qhull 2019.1 contains bug fixes and improvements to logging, error reporting, and merging.
- Fixed fifty bugs, including initialization bugs and memory corruption bugs
  in qh_readpoints and qh_option. See Bugs and Changes.txt.

- New option 'TAn' stops Qhull after adding n points.
- New option 'Tf' flushes qh_fprintf. Use 'Tf' when debugging segfaults.
- New options '--help', '-?', and '--' display a short help message.
  Under Git for Windows or MSYS2, 'qhull' waits for stdin.

- Option 'TP-1' turns on tracing after qh_buildhull and qh_postmerge complete.
  It traces qh_check_maxout, qh_prepare_output, qh_triangulate, and qh_voronoi_center
- Options 'TI' and 'TO' do not require a space before the filename.

- An unknown Qhull option is an error. It was a warning. Override with option 'Qw'.
- Short or long input to Qhull is an error. It was a warning. Override with option 'Qa'.

- Documentation encourages the use of joggled input. Joggled input is less precise than facet merging, but it cannot incur merge errors for degenerate input.
- Documentation refers to 'dupridge' instead of 'duplicate ridge'. A dupridge is an erroneous ridge between four or more facets.
- Fixed documentation for qh_findbestfacet.
  Delaunay triangulations may return an adjacent triangle [F. Drielsma].

- CMake: export QhullTargets for config.cmake.in and find_package [tamasmeszaros]
- The C++ interface includes new methods, hasNext() and hasPrevious(), for QhullFacet and QhullVertex.
- Test scripts qtest.sh and q_benchmark help with logging and optimizing Qhull,
  particularly for intermittent errors and bad cases for Qhull.

Fixed bugs in Qhull 2015.2 (see Changes.txt for the full list)
- qh_buildcone_onlygood ('Qg') corrupted memory if it called qh_delfacet.
- qh_check_maxout did not include qh.DISTround when checking f.maxoutside
- qh_distround did not acount for 'Rn' (random roundoff) in option 'QJn'
- qh_findbestfacet should document that it may return an adjacent triangle for Delaunay triangulations [F. Drielsma]
- qh_findfacet_all should not search visible facets or f.upperdelaunay facets [P. Virtanen, S. Dominguez, J.Arkin]
- qh_findgood may report a bad facet for qh.GOODvertex ('QVn'). Restrict the search to good facets.
- qh_freebuild deleted unattached ridges, leading to a double delete
- qh_initial_hull tested 'maybe flipped' instead of 'clearly flipped'. As a result facets could be incorrectly oriented, leading immediately to 'Only 4 facets remain' [S. Caron, P. Virtanen, D. Sterratt, others]
- qh_initstatistics was missing initialization. As a result, the final qh_checkoutput may be skipped.
- qh_initstatistics cannot use qh_fprintf to report errors. Use qh_fprintf_stderr
- qh_maxsimplex did not detect nearly flat simplices except for the last vertex. It assumed the max coordinate was approximately 1. As a result, Qhull reported false narrow hulls or false low dimensional inputs. [J.R. Roussel, D. Sterratt]
- qh_option could overflow the qh.qhull_options buffer
- qh_partitionpoint could leave an outside point before qh.next_facet, leading to a skipped point.
- qh_stddev was incorrect. It should be sqrt of absolute value.

- 'Qbb' scaled the last coordinate to qh.MAXwidth causing loss of precision. It should be qh.MAXabs_coord.
- 'rbox' and 'user_eg3' returned non-zero exit status for their help prompt. Should be 0.
- 'rbox Cn,r,m' does not produce points for 'rbox r'
- An error in qh_initqhull_start2 could loop forever. Need to set qh.NOerrexit
- Do not call qh_check_points ('Tv') if reporting an error and qh.FORCEoutput ('Po')
- If 'd' or 'v' was used with 'H', memory corruption occurred. Should be disallowed.
- Improved searching of coplanar facets by qh_findbesthorizon.
- Options 'Pdk' and 'Pdk' always returned the closest facet. This should only occur with option 'Pg'.
- PointCoordinates::appendPoints should not require whitespace after a point
- Setting qh.MINoutside could lead to verification ('Tv') failures. Fixed by setting qh.KEEPnearinside and calling qh_partitionpoint in qh_partitionall

v7.3.2

Toggle v7.3.2's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2019.1 2019/06/21 (7.3.2) released

Qhull 2019.1 contains bug fixes and improvements to logging, error reporting, and merging.
- Fixed fifty bugs, including initialization bugs and memory corruption bugs
  in qh_readpoints and qh_option. See Bugs and Changes.txt.

- New option 'TAn' stops Qhull after adding n points.
- New option 'Tf' flushes qh_fprintf. Use 'Tf' when debugging segfaults.
- New options '--help', '-?', and '--' display a short help message.
  Under Git for Windows or MSYS2, 'qhull' waits for stdin.

- Option 'TP-1' turns on tracing after qh_buildhull and qh_postmerge complete.
  It traces qh_check_maxout, qh_prepare_output, qh_triangulate, and qh_voronoi_center
- Options 'TI' and 'TO' do not require a space before the filename.

- An unknown Qhull option is an error. It was a warning. Override with option 'Qw'.
- Short or long input to Qhull is an error. It was a warning. Override with option 'Qa'.

- Documentation encourages the use of joggled input. Joggled input is less precise than facet merging, but it cannot incur merge errors for degenerate input.
- Documentation refers to 'dupridge' instead of 'duplicate ridge'. A dupridge is an erroneous ridge between four or more facets.
- Fixed documentation for qh_findbestfacet.
  Delaunay triangulations may return an adjacent triangle [F. Drielsma].

- CMake: export QhullTargets for config.cmake.in and find_package [tamasmeszaros]
- The C++ interface includes new methods, hasNext() and hasPrevious(), for QhullFacet and QhullVertex.
- Test scripts qtest.sh and q_benchmark help with logging and optimizing Qhull,
  particularly for intermittent errors and bad cases for Qhull.

Fixed bugs in Qhull 2015.2 (see Changes.txt for the full list)
- qh_buildcone_onlygood ('Qg') corrupted memory if it called qh_delfacet.
- qh_check_maxout did not include qh.DISTround when checking f.maxoutside
- qh_distround did not acount for 'Rn' (random roundoff) in option 'QJn'
- qh_findbestfacet should document that it may return an adjacent triangle for Delaunay triangulations [F. Drielsma]
- qh_findfacet_all should not search visible facets or f.upperdelaunay facets [P. Virtanen, S. Dominguez, J.Arkin]
- qh_findgood may report a bad facet for qh.GOODvertex ('QVn'). Restrict the search to good facets.
- qh_freebuild deleted unattached ridges, leading to a double delete
- qh_initial_hull tested 'maybe flipped' instead of 'clearly flipped'. As a result facets could be incorrectly oriented, leading immediately to 'Only 4 facets remain' [S. Caron, P. Virtanen, D. Sterratt, others]
- qh_initstatistics was missing initialization. As a result, the final qh_checkoutput may be skipped.
- qh_initstatistics cannot use qh_fprintf to report errors. Use qh_fprintf_stderr
- qh_maxsimplex did not detect nearly flat simplices except for the last vertex. It assumed the max coordinate was approximately 1. As a result, Qhull reported false narrow hulls or false low dimensional inputs. [J.R. Roussel, D. Sterratt]
- qh_option could overflow the qh.qhull_options buffer
- qh_partitionpoint could leave an outside point before qh.next_facet, leading to a skipped point.
- qh_stddev was incorrect. It should be sqrt of absolute value.

- 'Qbb' scaled the last coordinate to qh.MAXwidth causing loss of precision. It should be qh.MAXabs_coord.
- 'rbox' and 'user_eg3' returned non-zero exit status for their help prompt. Should be 0.
- 'rbox Cn,r,m' does not produce points for 'rbox r'
- An error in qh_initqhull_start2 could loop forever. Need to set qh.NOerrexit
- Do not call qh_check_points ('Tv') if reporting an error and qh.FORCEoutput ('Po')
- If 'd' or 'v' was used with 'H', memory corruption occurred. Should be disallowed.
- Improved searching of coplanar facets by qh_findbesthorizon.
- Options 'Pdk' and 'Pdk' always returned the closest facet. This should only occur with option 'Pg'.
- PointCoordinates::appendPoints should not require whitespace after a point
- Setting qh.MINoutside could lead to verification ('Tv') failures. Fixed by setting qh.KEEPnearinside and calling qh_partitionpoint in qh_partitionall

v7.3.1

Toggle v7.3.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2019.0.1 2019/05/24 (7.3.1)

Qhull options
- Disallow unknown options and other option errors, allow option warnings with 'Qw'
- New option 'Qallow-short': allow input with fewer or more points than coordinates
- New option 'Qwarn-allow': allow option warnings
- New option 'TAn': stop after adding n vertices
- New option 'Tf': flush after qh_fprintf for debugging segfaults
- New experimental option 'Q14-merge-pinched-vertices': merge pinched vertices due to dupridge
  Excessive merging leads to additional topological and wide facet errors
- New experimental option 'Q15-check-duplicates': check for duplicate ridges with the same vertices
- Option 'Q1' merges by mergetype/angle instead of mergetype/distance, coplanar merges first
  In 2015.2 by default, Qhull merged by mergetype/angle with lower angles first
- Option 'TP-1' turns on tracing after qh_buildhull and qh_postmerge
  It traces qh_check_maxout, qh_prepare_output, qh_triangulate, qh_voronoi_center
- Options '--help', '-?', and '--' display a short help message
  Qhull does not support '--' options.  Git for Windows v2.21.0 does not support isatty ('winpty qhull' is OK)
- Allow Qhull extra options Q12 and Q14 for qconvex/qdelaunay/qhalf/qvoronoi
- Allow option 'QRn' (random rotate) for qdelaunay/qhalf/qvoronoi
- Alphabetize short prompts (qhull .)
- Alphabetize long prompts w/ normal options first (qhull -)
- Alphabetize option help by option code
- Add 'Number of merged pinched vertices' to summary ('s')
- Add 'TI file' to help message for qconvex/qdelaunay/qhalf/qvoronoi
- Dropped experimental option 'Q16-simplex-merge'.   Centrums are required for convexity
- Error if 'd', 'v', or 'Hn,n,n' are used together
- Ignore missing space after 'TI' or 'TO'.  Allow 'TIinputfile' and 'TOoutputfile'
- Prefix option errors and warnings with 'qhull option error:' or 'qhull option warning:'
- Remove hidden option 'normals' from help prompts for qdelaunay, qhalf, qvoronoi
- Reword short prompts to 'Pdrop-d0:0D0', 'QbBound-0:0.5', and 'off_format'
- Updated qh-quick.htm, 'qhull -', and 'qhull .' for 'T...' and 'Q...' options.
  Separate help prompts for 'T options' and 'Trace options'
- Use '-' instead of '_' for word delimiter in option names

Qhull builds, scripts, and debugging
- Add qh.traceridge, qh.traceridge_id, and qh_delridge for debugging by ridge in qh_fprintf
- Check for qhull with 'which qhull' instead of 'qhull', avoids hangs in git bash
- Makefile/CC_WARNINGS: Add instructions for collecting and testing gcc warnings
- Makefile/benchmark: Add q_benchmark, 10 runs of each
- Makefile/clean: Delete linked files from src/libqhull and src/libqhull_r, as in their Makefiles
- Makefile/help: Add 'make all' to 'make help' prompts
- Makefile/qhullx: Add test of testqset and testqset_r
- Makefile/qhullx: Create bin/ directory if missing
- Makefile/test: Add user_eg3 help prompt
- Makefile/testall: Add q_benchmark, 1 run of each
- eg/make-vcproj.sh/qhullx: Build bin/qhullx from src/qhullx/ for comparison
- eg/q_benchmark: new script for measuring Qhull precision and performance with qtest.sh
- eg/q_test: update error messages for missing bin/ and bin/libqhull_r.dll
- eg/q_test: tests of Tf and TAn
- eg/qhull-zip.sh: add note that it requires road-script.sh from http://www.qhull.org/road/
- eg/qhull-zip.sh: check source depencencies for prompts
- eg/qtest.sh: new script for testing Qhull and summarizing its trace files
- libqhull_r/Makefile: install target creates $INCDIR/libqhull_r and $LIBDIR
- libqhull_r.h/qh_ERRdebug: define error status for debugging exits

Qhull fixed bugs
- html/qh-optp.htm: options 'PDk' and 'Pdk' require option 'Pg' to return the closest facet
- Makefile/qhullx: fixed qhullx compile of testqset and testqset_r
- PointCoordinates.cpp/appendPoints: read 'in >> p' instead of 'in >> p >> ws'
  otherwise istream fails if file does not end with whitespace
- geom_r.c/qh_findbesthorizon: fix test for Zfindjump (bestdist jumps by searchdist)
- geom_r.c/qh_findbesthorizon: increased minsearch of coplanar facets if ischeckmax and more than 100 neighbors
- geom_r.c/qh_sethyperplane_det: dropped precision statistic Znearlysingular (it's Zminnorm)
- geom2_r.c/qh_detjoggle: use 'En' (roundoff) if specified by options
- geom2_r.c/qh_distround: move adjustment for 'Rn' into qh_distround.  'QJn' did not account for 'Rn'
- global_r.c/qh_checkflags: handle two-digit Q options in hiddenflags
- global_r.c/qh_freebuild: do not delete unattached ridges, otherwise a double delete.  Should not occur
- global_r.c/qh_option: fix potential overflow of qh.qhull_options
- global_r.c/qh_initflags: fixed incorrect indentation for option 'TO file'
- global_r.c/qh_initqhull_start2: set qh.NOerrexit True
- io_r.c/qh_eachvoronoi: allow fp==NULL for QhullQh::qh_fprintf to appendQhullMessage
- io_r.c/qh_readpoints: error if 'd' or 'v' with 'H', otherwise memory corruption
- libqhull_r.h/qh.MERGEvertices: fixed comment, 'Q3' disables this feature
- libqhull_r.c/qh_buildcone_onlygood: cannot qh_delfacet inside FORALLnew_facets
- libqhull_r.c/qh_partitionpoint: if qh.NARROWhull and bestdist>qh.MINoutside and isnewoutside,
  may need to move facet to qh.newfacet_list for qh.next_facet
- libqhull_r.c/qh_printsummary: Zdistconvex is for checking convexity instead of testing convexity
- libqhull_r.c/qh_findhorizon: coplanar horizon if apex >= -qh.MAXcoplanar, instead of > -qh.MAXcoplanar
- mem_r.c/qh_memcheck: define null qh_memcheck if qh_NOmem
- merge_r.c/qh_mergecycle_all: turn on tracing, 'TMn', for coplanar horizon merge of one facet
- merge_r.c/qh_mergefacet2d: do not create ridges for neighborB.  The opposite neighbor may be tested
- merge_r.c/qh_test_centrum_merge: coplanar if centrum >= -qh.centrum_radius, instead of > -qh.centrum_radius
- merge_r.c/qh_test_nonsimplicial_merge: coplanar if centrum >= -qh.centrum_radius, instead of > -qh.centrum_radius
- merge_r.c/qh_tracemerging: fixed "qhull has merged" prompt
- merge_r.c/qh_willdelete: empty f.neighbors and f.ridges, references are no longer valid, will be deleted
- poly_r.c/qh_checkflipped: flipped if qh.interior_point >= -qh.DISTround, instead of > -qh.DISTround
- poly2_r.c/qh_addfacetvertex: initialize vertex_i in case f.vertices is empty
- poly2_r.c/qh_check_maxout: need to include qh.DISTround when checking f.maxoutside with qh.maxoutside
- poly2_r.c/qh_checkconvex: fix documentation for qh_DATAfault.  It is restricted to qh_initialhull with qh.ZEROcentrum
- poly2_r.c/qh_checkconvex: coplanar if >= -qh.DISTround, instead of > -qh.DISTround
- poly2_r.c/qh_checkconvex: check simplicial ridges if !qh.MERGING && qh.ZEROcentrum (unlikely or not-possible)
- poly2_r.c/qh_findgood: restrict qh.GOODvertex ('QVn') to good facets
- poly2_r.c/qh_findgood_all: unless 'Pg', ignore qh.GOODclosest for nearest facet to thresholds.
     'PdD' reports 0 good facets
- poly2_r.c/qh_replacefacetvertex: initialize vertex_n in case f.vertices is empty
- qconvex.c,qdelaunay.c,etc.: remove automatic 'Qx' for 5-d and higher.  Set by default in qh_initqhull_globals
- qvoronoi_r.c/qh_prompt: remove disabled option 'TRn' from help prompt
- random_r.c/qh_argv_to_command: fixed missing braces, same behavior as before
- rbox_r.c: return 0 exit status on prompt
- rboxlib.c/qh_rboxpoints: use qh_fprintf_stderr instead of qh_fprintf_rbox.  Avoid qh_errexit_rbox
- rboxlib.c/qh_rboxpoints2: clear rbox_inuse on exit, as in error exit
- rboxlib_r.c/qh_rboxpoints2: incorrect string arg to 'rbox error: unknown flag'
- rboxlib_r.c/qh_rboxpoints2: remove superfluous qh_free(*simplex)
- stat_r.c/qh_initstatistics: due to NOerrors cannot use qh_fprintf, use qh_fprintf_stderr instead
- stat_r.c/qh_stddev: return sqrt of absolute value
- testqset_r.c: if qh_NOmem, do not call qh_memfreeshort
- user_eg_r.c,user_eg2_r.c: if qh_NOmem, call qh_freeqhull(qh, qh_ALL) instead of qh_memfreeshort
- user_eg3_r.cpp: return 0 exit status on prompt

Qhull fixed bugs introduced by 2018.0
- libqhull_r.c/qh_addpoint: clear qh.retry_addpoint on success
- libqhull_r.c/qh_buildcone_mergepinched: cannot qh_delfacet inside FORALLnew_facets
- libqhull_r.c/qh_partitioncoplanar: clear qh.repart_id on exit for infinite recursion detect
- geom2_4.c/qh_detmaxoutside: move qh_option call to qh_errexit
- merge_r.c/mergetypes[]: fixed order by mergeT
- merge_r.c/qh_all_vertexmerges: fix retryfacet for repeated calls
- merge_r.c/qh_forcedmerge: f.dupridge retained after MRGdupridge
  hides MRGdegenerate in qh_test_degen_neighbors and qh_test_redundant_neighbors
- merge_r.c/qh_postmerge: call qh_freemergesets
- merge_r.c/qh_test_nonsimplicial_merge: clear iscoplanar if isconcave and any vertex is not coplanar
- poly2_r.c/qh_triangulate: move reset of f.degenerate into delete facet loop

Qhull C++
- QhullFacet.cpp: add hasNext() and hasPrevious()
- QhullVertex.cpp: add hasNext() and hasPrevious()
- qhulltest-64/QhullFacet_test.cpp,QhullVertex_test.cpp: test hasNext, hasPrevious, and hasPrevious iterator
- user_eg3.cpp: use 'qhull-cout' for option 'Tz' (trace to cout)

Qhull errors, warnings, and tracing
- Error messages rewritten and error codes changed (see qh_fprintf)
  Renumbered Qhull warnings as 'QH7xxx' if needed (e.g., QH9375)
  Reused unused error and message codes ("def counters" in user_r.h/msgcode)
  Please check your code if it depends on error and message codes
- Initialize variables to avoid potential uninitialized warnings
- Use qh_ERRqhull for Qhull internal errors, "qhull internal error (qh_...): ..."
- Use 'defined()' for qh_QHpointer_dllimport and qh_dllimport (-Wundef)
- Use 'defined()' for __cplusplus, _MSC_VER, __MWERKS__, and __POWERPC__ (-Wundef)
- Use 'Early exit' instead of 'At a premature exit'
- libqhull_r.h/qh_ERRother: define error status for non-internal errors
- libqhull_r.h/qh_ERRtopology: define error status for qhull topology errors
- libqhull_r.h/qh_ERRwide: define error status for wide facets due to qhull precision error
- geom_r.c/qh_setfacetplane: add qh_printfacet if qh.tracefacet for qh.tracefacet_id
- global_r.c/qh_freebuild: record previousfacet/ridge/vertex in case a memory fault occurs
- global_r.c/qh_init_flags: improved error message for 'cannot open file' for 'TO f'
- global_r.c/qh_init_flags: improved warning message for 'unknown option'
- global_r.c/qh_initbuild: add trace options to "Trace level ..."
- global_r.c/qh_initqhull_globals: error if qh.VORONOI without qh.DELAUNAY
- global_r.c/qh_initqhull_globals: error if numpoints is <1 or >qh_POINTSmax (INT_MAX-16)
- global_r.c/qh_lib_check: use C-style comment for _CrtSetBreakAlloc
- io_r.c/qh_printfacetheader: add "max" if f.merges==qh_MAXnummerge (511)
- io_r.c/qh_readpoints: error if numinput is <1 or >qh_POINTSmax (INT_MAX-16)
- io_r.c/qh_readpoints: moved up 'chop' of qh.rbox_command to report short input errors
- io_r.c/qh_readpoints: replace warning QH7073 with error message. Override with Qallow-short
- libqhull_r.c/qh_addpoint: if 'T4', check qh.visible_list before qh_partitionvisible
- libqhull_r.c/qh_buildtracing: add delta cpu/facets/hyperplanes to QH1049 'qh_addpoint: add p%d...'
- merge_r.c/qh_findbest_pinchedvertex: replaced assert with a 'qhull internal error'
- merge_r.c/qh_check_dupridge: drop advice about reporting wide merges for error QH6271
- merge_r.c/qh_mark_dupridges: topological error if multiple dupridges for one facet, not handled
- merge_r.c/qh_test_nonsimplicial_merge: if Qx and many merges, replace centrum_radius with maxoutside
- poly_r.c/qh_matchneighbor: drop extra warnings for duplicate facet (QH7084)
- poly_r.c/qh_matchnewfacets: check for simplicial facets on qh.newfacet_list, otherwise memory overwrite by qh_matchneighbor
- poly2_r.c/qh_checkconvex: identify simplicial checking of vertices (qh.ZEROcentrum, default)
- poly2_r.c/qh_checkconvex: distinguish above from coplanar for non-convex initial simplex
- poly2_r.c/qh_checkconvex: "non-convex initial simplex" for qh_joggle_restart
- poly2_r.c/qh_checkfacet: check f.id and f.vertex_visit
- poly2_r.c/qh_checklists: check and repair facet and vertex lists for infinite loops or overwritten facets/vertices
- poly2_r.c/qh_checkpolygon: if qh.NEWfacets, check visible facets for empty f.neighbors and f.ridges
- poly2_r.c/qh_checkpolygon: add qh_checkvertex
- poly2_r.c/qh_checkpolygon: check f.previous and v.previous links (for C++)
- poly2_r.c/qh_checkvertex: add parameters for allchecks and waserror (like qh_checkfacet)
- poly2_r.c/qh_checkvertex: check v.id and v.vertex_visit
- qvoronoi.c/hidden_options: hide option 'FM'. Maple output is not available
- rboxlib_r.c/qh_rboxpoints: use QH6... for error codes instead of QH7070 and QH7071
- stat_r.c/qh_stddev: check for division by 0
- testqset_r.c: send all messages, except 'OK' to stderr
- testqset_r.c: reassign unique QH8nnn codes, 8001/etc in use by libqhull_r
- user_r.c/qh_printhelp_internal: add descriptive message for a Qhull internal error
- user_r.c/qh_printhelp_narrowhull: add option 'Qs' (search all points)
- user_r.c/qh_printhelp_topology: add descriptive message for a Qhull topology error
- user_r.c/qh_printhelp_wide: add descriptive message for a wide merge error
- user_eg_r.c: add fflush and '=======' markers to interleave stdout with stderr (MSYS2)
- user_eg2_r.c: add fflush and '=======' markers to interleave stdout with stderr (MSYS2)
- user_eg2_r.c: add warning about calling qh_addpoint after qh_qhull with 'QJ' (joggle)

Qhull documentation and statistics
- Add Index to README.txt
- Add links to Wiki, http://github.com/qhull/qhull/wiki
- Add links to local home page (index.htm)
- Add GitHub, Scholar, and Code to navigation bar on home page
- Change numbered fixups to 'QH110nn FIX:'
- Chrome and Internet Explorer load '.c' and '.h' files as text/html from the Web
  These browsers along with Firefox do not read disk files as text/html
  Changed 'Functions' link from a local link to "http://www.qhull.org/src/libqhull_r/index.htm"
- Document implicit parameters at end of parameter list with '/* qh. ... */'
- Limit maximum length of literals to 1800 characters
- Move 'called by' comments to start of 'notes:'
- Option 'QRn' appends the actual QRn to the summary line ('s')
- Remove references to 'Qx' in 5-d and higher.  It is automatically set by default.
- Replace references to 'src/libqhull/*.htm' with reentrant 'src/libqhull_r/*_r.htm'
- Retitle 'Qhull internals' as 'Qhull code'
- Use 'nearly adjacent vertices' instead of 'nearly coincident points'
- Use 'dupridge' instead of 'duplicate ridge' for ridges with more than two neighbors.
  Reserve 'duplicate ridge' for two ridges with the same vertices.
- Various edits to documentation (*.htm)
- Update copyright to 2019
- eg/q_test: Add examples to q_test "front ends"
- html/index.htm: Add 'Limitations of merged facets' to the Qhull manual
- html/index.htm: Add links to qdelaun_f.htm and qvoroin_f.htm (furthest-site)
- html/qconvex.htm,etc: update synopsis and options
- html/qh-code.htm: Add 'qh_addpoint' trace to 'Performance of Qhull'
- html/qh-code.htm: Add a section on 'Debugging Qhull' with subsections for error codes,
  infinite loops, trace options, core dumps, segfaults, qtest.sh, and memory errors.
- html/qh-impre.htm: Add 'Topological error' to 'Precision problems'
- html/qh-impre.htm: Add 'Topological errors' to 'Limitations of merged facets'
- html/qh-impre.htm: Add "narrow range of values" to 'Uneven dimensions'
- html/qh-optq.htm: Add note to 'QJ' (joggle) about calls to qh_addpoint
- html/qh-optt.htm#'Tc': 'T4' makes additional checks beyond check-frequently
- html/qhalf.htm: Split the first example to clarify the "feasible point" for qhalf
- html/qhalf.htm: Use 'feasible point' instead of 'interior point' for halfspace intersection
  Same as Qhull::feasiblePoint and distinguished from qh.interior_point
- html/qhull.man,qhull.txt: updated man page
- libqhull_r.h: update documentation for PRINTgood, GOODpoint, GOODvertex
- qhull_ra.h: include '<limits.h>'.  Used for INT_MAX,etc.
- stat.h: add zretryadd stats for qh_merge_pinchedvertices
- stat.h: add zvertextests for distance tests of vertices for merging
- libqhull_r/*: document global variables as 'qh.'
- libqhull_r/*: fix libqhull/... links
- libqhull_r.c/qh_partitioncoplanar: reword Zpartflip as Zpartcorner with updated messages
- merge_r.c/qh_merge_degenredundant: rename statistic Zneighbor to Zredundant
- stat_r.c: new or reworded statistics for Zpartcorner, Zparthidden, Zparttwisted, Zpinchduplicate, Zpinchedvertex
- stat_r.c: rename 'renamed vertex statistics' to 'statistics for vertex merges'
- stat_r.c: add merge statistics for MRGconcavecoplanar
- stat_r.c/qh_allstat: add ' ' before parens in statistics
- user_eg_r.c,user_eg2_r.c: rewrote prompt

Qhull changes
- For simple initializers, remove spaces (e.g., 'for (i=0; ...')
- Normalize spacing for libqhull
- Normalize spacing as 'for (i=0; ...' for simple initializers
- Review use of '>' for comparison to negative quantities.  Usually should be '>=', e.g., for coplanar tests
- Reassigned 8xxx and 9xxx codes as trace codes if traced at T3 or lower
- Remove unused variables
- Test floating point values with 0.0 instead of 0 (qh.premerge_centrum,lower_bound,upper_bound)
- Use SETsecondt_() and SETelemt_() instead of SETelem_() when assigning to a specific type
- Use '(type *)' for pointer casts.  It makes the cast more visible.
- Use void for empty parameter lists
- geom_r.c/qh_findbesthorizon: mark startfacet visited, avoids unnecessary visit
- geom2_r.c/qh_detmaxoutside: determine precision target qh.MAXoutside (option _maxoutside at error exit)
  replaces 'maxoutside' computation
- geom2_r.c/qh_maxsimplex: add ratio test for false narrow hull with search for prevdet
- global_r.c/qh_freebuild: free global sets first instead of last, otherwise dangling references
- io_r.c/qh_compare_nummerge: renamed qh_compare_facetmerge due to conflict with merge_r.h
- io_r.c/qh_compare_vertexpoint: remove this routine.  Not usable in libqhull_r due to 'qh'
- io_r.c/qh_printfacetridges: do not print ridge if already printed (e.g., duplicate neighbors for merge of simplicial facets)
- io_r.c/qh_produce_output2: fflush of qh.fout to show statistics and verification after output (MSYS2)
- libqhull_r.h/qh.ALLOWwide: rename qh.NOwide to qh.ALLOWwide for 'Q12-allow-wide'
- libqhull_r.h/qh.IGNOREpinched: replaced qh.MERGEpinched with reversed meaning
- libqhull_r.c/qh_addpoint: 'TVn' stops after qh_all_vertexmerges, not before qh_resetlists.  Matches documentation
- merge_r.h/MRGdupridge: renamed MRGridge
- merge_r.h/qh_ANGLEconcave,etc.: replace mergetype indicators with qh_ANGLEnone and m.mergetype
- merge_r.c/qh_all_vertexmerges: replace qh_getmergeset_initial with qh_getmergeset.  No facets created
- merge_r.c/qh_all_vertexmerges: move while loop into qh_all_vertexmerges
- merge_r.c/qh_append_mergeset: ignore merges into a MRGdegen facet (f.degenerate)
- merge_r.c/qh_buildcone_mergepinched: clean up code and design documentation
- merge_r.c/qh_compare_anglemerge: renamed qh_compareangle and sort by mergetype as well as angle
- merge_r.c/qh_compare_facetmerge: merge MRGcoplanar before MRGconcave, opposite order from 2015.2
                                   sort MRGanglecoplanar by angle
- merge_r.c/qh_degen_redundant_facet,qh_test_degen_neighbors: moved into qh_mergefacet due to qh_willdelete
- merge_r.c/qh_getmergeset,qh_getmergeset_initial: set f.tested after testing ridges, not before
- merge_r.c/qh_next_facetmerge: split out next merge from qh_all_merges and replace qsort
- merge_r.c/qh_findbest_pinchedvertex,qh_findbest_ridgevertex: dropped selecting merge direction via qh_vertex_isbelow.  Expensive and evidence mixed
- merge_r.c/qh_freemergesets,qh_initmergesets: pair qh_initmergesets with qh_freemergesets
- merge_r.c/qh_freemergesets,qh_initmergesets: drop the 'all' parameter
- merge_r.c/qh_mergecycle_all: move qh_merge_degenredundant, etc. to end from qh_premerge
- merge_r.c/qh_mergesimplex: delete facet1 from facet2.neighbors at end, not at ridge
- merge_r.c/qh_post_merges,qh_all_merges: remove setting of v.delridge on all vertices, not needed
- merge_r.c/qh_premerge: replace parameter 'apex' with 'apexpointid'.  Only used for logging
- merge_r.c/qh_premerge: add qh.newfacet_list as an implicit parameter
- merge_r.c/qh_test_degen_neighbors: split from qh_degen_redundant_neighbors and qh_mergefacet
- merge_r.c/qh_test_redundant_neighbors: split from qh_degen_redundant_neighbors and qh_mergefacet
- poly_r.c/qh_attachnewfacets: clear f.neighbors and f.ridges for visible facets, will be deleted
- poly_r.c/qh_matchnewfacets: remove call to qh_checkflipped_all for qh.FORCEoutput, checked by qh_setfacetplane
- poly_r.c/qh_update_vertexneighbors: renamed qh_updatevertices. A future version will optimize
  qh_update_vertexneighbors_cone: optimization for cone of new facets
- poly2_r.c/qh_checkconvex: immediate skip of f.tricoplanar facets.  Tricoplanar facets not tested.  Called before qh_triangulate
- poly2_r.c/qh_initbuild: move 'create sentinels' before qh_createsimplex so that qh.vertex_tail is v0 like f0
- poly2_r.c/qh_initialvertices: cleaned up code for qh_INITIALmax (8-d)
- poly2_r.c/qh_makenewfacets: clear f.neighbors and f.ridges for visible facets, will be deleted
- poly2_r.c/qh_matchdupridge: optimize dupridge for flipped->!flipped, good merge, not !flipped->flipped
- poly2_r.c/qh_matchdupridge_coplanarhorizon: dropped routine.  Results same or slightly worse.  Complex addition, rarely used
- poly2_r.c/qh_triangulate: rename facet and vertex lists as triangulated_facet_list,etc.
  qh_triangulate does not maintain qh.newfacet_list or qh.visible_list
- poly2_r.c/qh_triangulate: ignore qh.NEWfacets. qh_checkpolygon is not valid inside qh_triangulate
- rboxlib_r.c/qh_rboxpoints2: split function from qh_rboxpoints to avoid -Wclobbered
- stat_r.c/qh_printstatlevel: remove unused NULLfield

Qhull C++ changes
- Use NULL instead of 0 for pointers
- Remove old style casts such as '(size_t)...'
- Define initializers for default constructors even if explicitly assigned
- Update static initializer list for s_empty_facet, s_empty_ridge, s_empty_vertex
- Coordinates.h: default constructor clears coordinate_array
- Coordinates.h: default iterator constructor clears i
- RboxPoints.cpp/qh_fprintf_rbox: add empty default to switch statement

v7.2.1

Toggle v7.2.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Last commit to master prior to Qhull 2018.0.1 (v7.3.0).

  [2018/12/28] 0db5f89  Merge pull request qhull#33 from anntzer/Wmisleading-indentation

v7.2.1 should be used instead of 'head'

v7.3.0

Toggle v7.3.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2018.0.1 2018/12/28 (7.3.0)

2015.2

Toggle 2015.2's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2015.2 2016/01/18 v7.2.0

v7.2.0

Toggle v7.2.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2015.2 2016/01/18 v7.2.0

2015.1

Toggle 2015.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2015.1 2016/01/03 v7.1.0

v7.1.0

Toggle v7.1.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2015.1 2016/01/03 v7.1.0

2012.1

Toggle 2012.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
cbbarber bradb
Qhull 2012.1 2012/02/18 v6.3.1.1494