diff --git a/src/Changes.txt b/src/Changes.txt index cad1e28..3a62b45 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -1,1944 +1,1948 @@ $Id: //main/2011/qhull/src/Changes.txt#82 $ .............This file lists all changes to qhull and rbox..................... ------------ Need help - Qhull needs RPM and Debian builds (CMake's CPackRMP and CPackDeb). - Qhull needs a mirror/archive site for old and new builds - Constrained delaunay triangulation via Shewchuk's algorithm (ACM Symp. Comp. Geo., 1998) - The C++ interface needs work. Give it a try and make it better. http://gitorious.org/qhull/ - Produce conformant triangulations for merged facets using option 'Qt' - Write an incremental addPoint using bucketed inputs and facet location search - Compute hyperplanes in parallel (cf. qh_setfactplane) - Create Voronoi volumes and topology using a parallel implementation ------------ To do for a future verson of Qhull - Rescale output to match 'QbB' on input [J. Metz, 1/30/2014 12:21p] - Run through valgrind - Notes to compgeom on conformant triangulation and Voronoi volume - Git: Create signed tags for Qhull versions - Can countT be defined as 'int', 'unsigned int', or 64-bit int? countT is currently defined as 'int' in qset_r.h Vertex ID and ridge ID perhaps should be countT Check use of 'int' vs. countT in all cpp code Check use of 'int' vs. countT in all c code qset_r.h defines countT -- duplicates code in user_r.h -- need to add to qset.h/user.h countT -1 used as a flag in Coordinates.mid(), QhullFacet->id() Also QhullPoints indexOf and lastIndexOf Also QhullPointSet indexOf and lastIndexOf Coordinates.indexOf assumes countT is signed (from end) Coordinates.lastIndexOf assumes countT is signed (from end) All error messages with countT are wrong, convert to int? RboxPoints.qh_fprintf_rbox, etc. message 9393 assumes countT but may be int, va_arg(args, countT); Need to split ------------ To do for a furture version of the C++ interface - Document C++ using Doxygen conventions (//! and //!<) - Create a shared library for libqhullcpp. It must include all uses of QH_TRY and setjmp(). - Should Qhull manage the output formats for doubles? QH11010 user_r.h defines qh_REAL_1 as %6.8g - Allocate memory for QhullSet using Qhull.qhmem. Create default constructors for QhullVertexSet etc. Also mid() etc. - Add interior point for automatic translation? - Add hasNext() to all next() iterators (e.g., QhullVertex) - Add defineAs to each object - Write a program with concurrent Qhull - Write QhullStat and QhullStat_test - Add QList and vector instance of facetT*, etc. - Generalize QhullPointSetIterator +----------- +To Do + - vertex_id should be 'countT' + ------------ Qhull 2015.0.2 Source code changes - Increased size of vertexT.id and ridgeT.id to 2^32 Reworded the warning message for ridgeT.id overflow. It does not affect Qhull output - Add qh_lib_check to check for a compatible Qhull library. Programs should call QHULL_LIB_CHECK before calling Qhull. - Include headers prefixed with libqhull/, libqhull_r/, or libqhullcpp/ - Renamed debugging routines dfacet/dvertex to qh_dfacet/qh_dvertex - Rewrote user_eg, user_eg2, and user_eg3 as reentrant code - Renamed 'qh_rand_seed' to 'qh_last_random'. Declare it as DATA - qh_initqhull_start2 sets qh->NOerrexit on initialization User must clear NOerrexit after setjmp() Other source code changes - Define ptr_intT as 'long long' for __MINGW64__ [A. Voskov] - Removed vertexT.dim and MAX_vdim. It is not used by reentrant Qhull. - Removed qhull_inuse. Not used by C++ - Removed old __MWERKS__/__POWERPC__ code that speed up SIOUX I/O - Moved #include libqhull/... before system includes (e.g., - Comment-out _isatty declaration. Avoids "C4273 ... inconsistent dll linkage" - Add random.h/random_r.h as an include file to random.c/random_r.c - Rename rbox routines to qh_roundi/qh_out1/qh_out2n/qh_out3n - Rename dfacet and dvertex to qh_dfacet and qh_dvertex - Replace 'qhmem .zzz' with 'qhmem.zzz' - Removed spaces between function name and parentheses - Rename 'enum statistics' to 'enum qh_statistics' - Declare rbox as DATA in qhull-exports.def and qhull_p-exports.def - In comments, use 'qh.zzz' to reference qhT fields - In qh_fprintf, use qhmem.ferr to report errors - qh_fprintf may be called for errors in qh_initstatistics and qh_meminit - qh_pointid returns qh_IDnone, qh_IDinterior, qh_IDunknown in place of -3, -2, -1 resp. - getid_() returns qh_IDunknown in place of -1 - After qh_meminit, qhmem.ferr is non-zero (stderr is the default) - Update qh_MEMalign in testqset.c to user.h (with realT and void*) - Split rboxT into a header file - Add rboxlib.h to libqhull_a.h - Rename PI to qh_PI and extend to 30 digits - Rename MAXdim to qh_MAXdim - Change spacing for type annotations '*' and '&' in C++ header files - Test for !rbox_output/cpp_object in qh_fprintf_rbox - Remove 'inline' annotation from explicit inline declarations - Column 25 formatting for iterators, etc. - Use '#//!\name' for section headers - QhullFacet.cpp: zinc_(Zdistio); - Clear qhT.ALLOWrestart in qh_errexit - Replace longjmp with qh_errexit_rbox in qh_rboxpoints - Add jmpExtra after rbox_errexit to protect against compiler errors - Add qh.ISqhullQh to indicate initialization by QhullQh() - Add library warnings to 'rbox D4', user_eg, user_eg2, user_eg3 - Add headers to q_eg, q_egtest, and q_test - Check that qh.NOerrexit is cleared before call to qh_initflags Qhull documentation - README.txt: Added references to qh-code.htm - README.txt: Added section 'Calling Qhull from C programs' - qh-code.htm: Moved Performance after C++ and C interface - qh-code.htm: Moved Cpp Questions to end of the C++ section - qh-code.htm: Fixed documentation for 'include' path. It should be include/libqhull - qconvex.htm: Fixed documentation for 'i'. It triangulates in 4-d and higher [ref] - Clarified qhalf space documentation for the interior point [J. Santos] - rbox.c: Version is same date as qh_version in global.c - gobal_r.c: Version includes a '.r' suffix to indicate 'reentrant' Qhull builds - Exchanged make targets for testing. 'make test' is a quick test of qhull programs. 'make testall' is a thorough test - Added 'make help' and 'make test' to libqhull and libqhull_r Makefiles - CMakeLists.txt: Remove libqhull, libqhull_r, and libqhullcpp from include_directories - CMakeLists.txt: Add qhull_SHAREDR for qhull_r - CMakeLists.txt: Retain qhull_SHARED and qhull_SHAREDP (qh_QHpointer) - CMakeLists.txt: Move qhull_SHARED and qhull_SHAREDP (qh_QHpointer) to qhull_TARGETS_OLD Drop qhull_STATICP (use qhull_SHAREDP or qhull_STATIC) Set SOVERSION and VERSION for shared libraries - Move qhull_p-exports.def back to libqhull - Switched to mingw-w64-install for gcc - Improved prompts for 'make' - qhull-all.pro: Remove user_eg3.cpp from OTHER_FILES - libqhull.pro: Ordered object files by frequency of execution, as done before - Add the folder name to C++ includes and remove libqhullcpp from INCLUDEPATH - Changed CONFIG+=qtestlib to QT+=testlib - Changed Makefile to gcc -O3 (was -O2) - Changed libqhull/libqhull_r Makefiles to both produce rbox, qhull, ..., user_eg, and user_eg2 - Removed Debian 'config/...'. It was needed for Qhull 2012. libqhull_r (reentrant Qhull) - Replaced qh_qh with a parameter to each procedure No more globally defined data structures in Qhull Simplified multithreading and C++ user interface All functions are reentrant (Qt: "A reentrant function can ... be called simultaneously from multiple threads, but only if each invocation uses its own data.") No more qh_QHpointer. See user_eg3 and qhulltest New libraries libqhull_r -- Shared library with reentrant sources (e.g., poly_r.h and poly_r.c which replace libqhull's poly.h and poly.c) libqhullstatic_r -- Static library with the same sources as libqhull_r libqhullcpp -- The C++ interface using libqhullstatic_r (further notes below) New executables testqset_r -- Test qset_r.c (the reentrant version of qset.c Source code changes for libqhull_r - Add qh_zero() to initialize and zero memory for qh_new_qhull - Remove qh_save_qhull(), qh_restore_qhull(), and qh.old_qhstat from global_r.c - Remove qh_freeqhull2() (global_r.c) - Remove qh_freestatistics() (stat_r.c) - Remove qh_compare_vertexpoint (qhT is not available, unused code) - Remove conditional code for __POWERPC__ from unix_r.c and rbox_r.c - Move qh_last_random into qh->last_random (random_r.c) - Rename sources files with a '_r' suffix. qhull_a.h becomes qhull_ra.h - Replace 'qh' macro with 'qh->' - Replace global qhT with parameter-0 - Add qhmemT to beginning of qhT. It may not be used standalone. - Add qhstatT to end of qhT - Remove qhull_inuse - Change qhmem.zzz to qh->qhmem.zzz - Replace qh_qhstat with qh->qhstat - Remove qh_freestatistics - Replace qh_last_random with qh->last_random - Replace rboxT with qh->rbox_errexit, rbox_isinteger, rbox_out_offset - Replace rbox.ferr/fout with qh->ferr/fout - No qh for qh_exit, qh_free, qh_malloc, qh_strtod, qh_strtol, qh_stddev - New qmake include files qhull-app-c_r.pri, qhull-app-shared_r.pri, qhull-libqhull-src_r.pri - Replace 'int' with 'countT' and 'COUNTmax' for large counts and identifiers - qhset converted to countT - Removed vertexT.dim -- No longer needed by cpp Removed MAX_vdim - Guarantee that qh->run_id!=0. Old code assumed that qh_RANDOMint was 31 bits Changes to libqhullcpp - Removed qhull_interface.cpp -- better to use Qhull.cpp. If math.h breaks '#include qhull_a.h', preceed it with '#include math.h' - Added QhullVertexSet.h to libqhullcpp.pro and libqhullpcpp.pro - QhullVertexSet: error if qhsettemp_defined at copy constructor/assignment (otherwise double free) - Enable QhullSet.operator=. Copy constructor and assignment only copies pointers - Changed QhullPoint.operator==() to sqrt(distanceEpsilon) - Added assignment of base class QhullPoints to PointCoordinates.operator= - Enable QhullPoints.operator= - Rename PointCoordinates.point_comment to describe_points - Add 'typename T' to definition of QhullSet::value() C++ interface - Reimplemented C++ interface on reentrant libqhull_r instead of libqhull - Prepend include files with libqhullcpp/ - Replaced UsingLibQhull with QhullQh and macro QH_TRY Removed UsingLibQhull.currentAngleEpsilon and related routines Removed UsingLibQhull_test.cpp Replaced globalDistanceEpsilon with QhullQh.distanceEpsilon Replaced globalAngleEpsilon with QhullQh.angleEpsilon Moved UsingQhullLib.checkQhullMemoryEmpty to QhullQh.checkAndFreeQhullMemory Replaced FACTORepsilon=10 with QhullQh.factor_epsilon=1.0 - To avoid -Wshadow for QhullQh*, use 'qqh' for parameters and 'qh()' for methods - Moved messaging from Qhull to QhullQh - Add check of RboxPoints* in qh_fprintf_rbox - Renamed Qhull.initializeQhull to Qhull.allocateQhullQh Added qh_freeqhull(!qh_ALL) as done by unix.c and other programs - Moved QhullPoints.extraCoordinatesCount into QhullPoints.cpp - Replaced section tags with '#//!\name ...' - Removed qhRunId from print() to ostream. - Removed print() to ostream. Use '<< qhullPoint' or '<< qhullPoint.print("message")' C++ interface for most classes - Remove qhRunId - Add QhullQh *qh_qh to all types Pointer comparisons of facetT,etc. do not test corresponding qh_qh Added to end of type for debugging information, unless wasteful alignment - Add QhullQh * to all constructors - All constructors may use Qhull & instead of QhullQh * - For inherited QhullQh types, change to 'protected' - Renamed 'o' to 'other' except where used extensively in iterators - Except for conditional code, merged the Conversion section into GetSet - Removed empty(). Use isEmpty() instead - Add operator= instead of keeping it private - print_message=0 not allowed. Use "" instead. - Rename isDefined() to isValid() to match Qt conventions C++ interface by class - Coordinates Removed empty(). Use isEmpty() instead Added append(dim, coordT*) Reformated the iterators Convert to countT - PointCoordinates Added constructors for Qhull or QhullQh* (provides access to QhullPoint.operator==) Removed PointCoordinates(int pointDimension) since PointCoordinates should have a comment. Also, it is ambiguous with PointCoordinates(QhullQh*) Renamed point_comment to describe_points Convert to countT - Qhull Remove qhull_run_i Remove qh_active Replace property feasiblePoint with field feasible_point and methods setFeasiblePoint/feasiblePoint Returns qh.feasible_point if defined Moved useOutputStream to QhullQh use_output_stream Renamed useOutputStream() to hasOutputStream() Replaced qhull_dimension with qh->input_dim //! Dimension of result (qh.hull_dim or one less for Delaunay/Voronoi) Removed global s_qhull_output= 0; Move qhull_status, qhull_message, error_stream, output_stream to QhullQh Renamed qhullQh() to qh() Added check of base address to allocateQhullQh(), Was not needed for qhullpcpp - QhullFacet Constructor requires Qhull or QhullQh* pointer Convert to countT Dropped implicit conversion from facetT Dropped runId Add print("message") to replace print() - QhullFacetList Constructor requires Qhull or QhullQh* pointer Convert to countT Dropped runId - QhullFacetSet Removed empty(). Use isEmpty() instead Constructor requires Qhull or QhullQh* pointer Convert to countT Dropped runId Add operator= Implement print("message") - QhullHyperplane Add hyperplaneAngle() method Rewrite operator== to use hyperplaneAngle() Reorganize fields to keep pointers aligned Except for default constructor requires Qhull or QhullQh* pointer Enable copy assignment Reorganized header - QhullLinkedList Add operator= Removed empty(). Use isEmpty() instead Convert to countT iterator(T) made iterator(const T &) const_iterator(T) made const_iterator(const T &) const_iterator(iterator) made const_iterator(const iterator &) - QhullPoint Add constructors for Qhull or QhullQh* pointer (for id() and operator==) Add defineAs(coordT*) Add getBaseT() and base_type for QhullSet Added checks for point_coordinates==0 Removed static QhullPoint::id(), use QhullPoint.id() instead distance() throws an error if dimension doesn't agree or if a point is undefined Convert to countT If !qh_qh, operator==() requires equal coordinates Use cout<

[R. Richter, S. Pasko] - Remove deprecated libqhull/qhull.h Use libqhull/libqhull.h instead. Avoids confusion with libqhullcpp/Qhull.h - Makefile: Add LIBDIR, INCDIR, and DESTDIR to install [L.H. de Mello] Separate MAN install from DOC install Create install directories Installs headers to include/libqhull, include/libqhullcpp, include/road - CMakeLists.txt: Add MAN_INSTALL_DIR for qhull.1 and rbox.1 man pages Add RoadTest.h to include/road for Qt users (road_HEADERS) - Renamed md5sum files to avoid two extensions - qh-get.htm: Add Readme links and 2009.1 note. - qh-optf.htm: Fix link - index.htm: Updated Google Scholar link - qhull-zip.sh: Improved error message. ------------ Qhull 2011.1 2011/04/17 6.2.0.1373 Changes to deliverables - qvoronoi: Deprecated 'Qt' and 'QJn'. Removed from documentation and prompts. These options produced duplicate Voronoi vertices for cospherical data. - Removed doskey from Qhull-go.bat. It is incompatible with Windows 7 - Added 'facets' argument to user_eg3.cpp - user_eg links with shared library - qhulltest.cpp: Add closing prompt. Changes to build system - Reorganized source directories - Moved executables to bin directory - Add CMake build for all targets (CMakeFiles.txt) [M. Moll assisted] - Add gcc build for all targets (Makefile) - Fixed location of qhull.man and rbox.man [M. Moll] - Add DevStudio builds for all targets (build/*.vcproj) - Added shared library (lib/qhull6.dll) Added qh_QHpointer_dllimport to work around problems with MSVC - Added static libraries with and without qh_QHpointer (lib/qhullstatic.lib) - Added eg/make-vcproj.sh to create vcproj/sln files from cmake and qmake - Document location of qh_QHpointer - Use shadow build directory - Made -fno-strict-aliasing conditional on gcc version - Added src/qhull-app-cpp.pri, src/qhull-app-c.pri, etc. for common settings - Add .gitignore with ignored files and directories. - Use .git/info/exclude for locally excluded files. - Fixed MBorland for new directory structure - cleanall (Makefile): Delete 'linked' programs due to libqhull_r and libqhull/Makefile Changes to documentation - qvoronoi.htm: Remove quotes from qvoronoi example - qhull-cpp.xml: Add naming conventions - index.htm: Add Google Scholar references - qh-optf.htm: Add note about order of 'Fn' matching 'Fv' order [Q. Pan] - Add patch for old builds in qh-get.htm - Added C++ compiling instructions to README.txt - Add instructions for fixing the DOS window - Changed DOS window to command window - Fixed html links - qh-get.htm: Dropped the Spanish mirror site. It was disabled. Changes to C code - mem.h: Define ptr_intT as 'long long' for Microsoft Windows _win64 builds. On Linux and Mac, 'long' is 64-bits on a 64-bit host - Added qh_QHpointer_dllimport to work around MSVC problem - qconvex.c,etc.: Define prototype for _isatty - Define MSG_QHULL_ERROR in user.h - Move MSG_FIXUP to 11000 and updated FIXUP QH11... Changes to test code - Add note to q_test than R1e-3 may error (qh-code.htm, Enhancements) - Add test for executables to q_eg, etc. - Fixed Qhull-go.bat. QHULL-GO invokes it with command.com, Changes to C++ interface - QhullFacet: Added isSimplicial, isTopOrient, isTriCoplanar, isUpperDelaunay - Added Qhull::defineVertexFacetNeighbors() for facetNeighbors of vertices. Automatically called for facet merging and Voronoi diagrams Do not print QhullVertex::facetNeighbors is !facetNeighborsDefined() - Add Fixup identifiers - QhullError: Add copy constructor, assignment operator, and destructor - Add throw() specifiers to RoadError and QhullError - Renamed RoadError::defined() to RoadError::isDefined() - Add #error to Qhull.h if qh_QHpointer is not defined Changes to C++ code - Fixed bug reported by renangms. Vertex output throws error QH10034 and defineVertexNeighbors() does not exist. - Define QHULL_USES_QT for qt-qhull.cpp [renangms] - Reviewed all copy constructors and copy assignments. Updated comments. Defined Qhull copy constructor and copy assignment [G. Rivet-Sabourin] Disabled UsingQhullLib default constructor, copy construct, and copy assign - Merged changes from J. Obermayr in gitorious/jobermayrs-qhull:next - Fix strncat limit in rboxlib.c and global.c - Changes to CMakeLists.txt for openSUSE - Fixed additional uses of strncat - Fixed QhullFacet::PrintRidges to check hasNextRidge3d() - Removed gcc warnings for shadowing from code (src/qhull-warn.pri) - Removed semicolon after extern "C" {...} - Removed experimental QhullEvent/QhullLog - Use fabs() instead of abs() to avoid accidental conversions to int - Fixed type of vertex->neighbors in qh_printvoronoi [no effect on results] - Removed unnecessary if statement in qh_printvoronoi ------------ qhull 2010.1 2010/01/14 - 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 ------------ 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 - Use qh_QHpointer=0 for libqhull.a, qhull, rbox, etc. Use -Dqh_QHpointer for libqhullp.a, qhullcpp.dll, etc. qh_QHpointer [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<