From baddaf818443caf69e9d2490b9fa4403377b2741 Mon Sep 17 00:00:00 2001 From: Brad Barber <bradb@shore.net> Date: Sat, 2 Jan 2010 22:35:56 -0500 Subject: [PATCH] First tracked release, 2010.0.1 Organized src/Changes.txt Updated copyright dates Fixed warnings from Kent William Reviewing FIXUP Add qhull-all.pro to build projects in order Passed 127 tests. --- Announce.txt | 4 +- README.txt | 69 +- cpp/Coordinates.cpp | 8 +- cpp/Coordinates.h | 8 +- cpp/PointCoordinates.cpp | 23 +- cpp/PointCoordinates.h | 10 +- cpp/Qhull.cpp | 45 +- cpp/Qhull.h | 25 +- cpp/QhullError.cpp | 2 +- cpp/QhullError.h | 16 +- cpp/QhullEvent.cpp | 2 +- cpp/QhullEvent.h | 6 +- cpp/QhullFacet.cpp | 152 +-- cpp/QhullFacet.h | 10 +- cpp/QhullFacetList.cpp | 16 +- cpp/QhullFacetList.h | 8 +- cpp/QhullFacetSet.cpp | 20 +- cpp/QhullFacetSet.h | 8 +- cpp/QhullHyperplane.cpp | 16 +- cpp/QhullHyperplane.h | 6 +- cpp/QhullIterator.h | 6 +- cpp/QhullLinkedList.h | 8 +- cpp/QhullLog.cpp | 6 +- cpp/QhullLog.h | 6 +- cpp/QhullPoint.cpp | 20 +- cpp/QhullPoint.h | 8 +- cpp/QhullPointSet.cpp | 20 +- cpp/QhullPointSet.h | 6 +- cpp/QhullPoints.cpp | 14 +- cpp/QhullPoints.h | 6 +- cpp/QhullQh.cpp | 54 +- cpp/QhullQh.h | 12 +- cpp/QhullRidge.cpp | 20 +- cpp/QhullRidge.h | 8 +- cpp/QhullSet.cpp | 6 +- cpp/QhullSet.h | 8 +- cpp/QhullSets.h | 6 +- cpp/QhullStat.cpp | 6 +- cpp/QhullStat.h | 6 +- cpp/QhullVertex.cpp | 24 +- cpp/QhullVertex.h | 8 +- cpp/QhullVertexSet.cpp | 16 +- cpp/QhullVertexSet.h | 8 +- cpp/RboxPoints.cpp | 18 +- cpp/RboxPoints.h | 6 +- cpp/UsingLibQhull.cpp | 25 +- cpp/UsingLibQhull.h | 7 +- cpp/functionObjects.h | 9 +- cpp/qhulltest/Coordinates_test.cpp | 10 +- cpp/qhulltest/PointCoordinates_test.cpp | 14 +- cpp/qhulltest/Point_test.cpp | 6 +- cpp/qhulltest/QhullFacetList_test.cpp | 8 +- cpp/qhulltest/QhullFacetSet_test.cpp | 8 +- cpp/qhulltest/QhullFacet_test.cpp | 21 +- cpp/qhulltest/QhullHyperplane_test.cpp | 10 +- cpp/qhulltest/QhullLinkedList_test.cpp | 10 +- cpp/qhulltest/QhullPointSet_test.cpp | 14 +- cpp/qhulltest/QhullPoint_test.cpp | 10 +- cpp/qhulltest/QhullPoints_test.cpp | 20 +- cpp/qhulltest/QhullRidge_test.cpp | 14 +- cpp/qhulltest/QhullSet_test.cpp | 10 +- cpp/qhulltest/QhullVertexSet_test.cpp | 6 +- cpp/qhulltest/QhullVertex_test.cpp | 18 +- cpp/qhulltest/Qhull_test.cpp | 42 +- cpp/qhulltest/RboxPoints_test.cpp | 14 +- cpp/qhulltest/UsingLibQhull_test.cpp | 18 +- cpp/qhulltest/qhulltest.cpp | 14 +- cpp/road/RoadError.cpp | 6 +- cpp/road/RoadError.h | 8 +- cpp/road/RoadLogEvent.cpp | 38 +- cpp/road/RoadLogEvent.h | 6 +- cpp/road/RoadTest.cpp | 16 +- cpp/road/RoadTest.h | 6 +- cpp/user_eg3.cpp | 8 +- html/index.htm | 15 +- html/qconvex.htm | 2 +- html/qdelau_f.htm | 2 +- html/qdelaun.htm | 2 +- html/qh-code.htm | 4 +- html/qh-eg.htm | 2 +- html/qh-faq.htm | 2 +- html/qh-impre.htm | 2 +- html/qh-optc.htm | 2 +- html/qh-optf.htm | 2 +- html/qh-optg.htm | 2 +- html/qh-opto.htm | 2 +- html/qh-optp.htm | 2 +- html/qh-optq.htm | 2 +- html/qh-optt.htm | 2 +- html/qh-quick.htm | 2 +- html/qhalf.htm | 2 +- html/qhull-cpp.xml | 6 +- html/qhull.htm | 2 +- html/qhull.man | 265 +++-- html/qhull.txt | 1416 +++++++++++------------ html/qvoron_f.htm | 2 +- html/qvoronoi.htm | 2 +- html/rbox.man | 73 +- html/rbox.txt | 117 +- index.htm | 4 +- qhull.ilk | Bin 0 -> 485320 bytes qtpro/libqhull/libqhull.pro | 42 +- qtpro/libqhullcpp/libqhullcpp.pro | 12 +- qtpro/qhull-all.pro | 13 + qtpro/qhull/qhull.pro | 9 +- qtpro/qhulltest/qhulltest.pro | 9 +- qtpro/rbox/rbox.pro | 5 +- qtpro/user_eg3/user_eg3.pro | 5 +- rbox.ilk | Bin 0 -> 484968 bytes src/Changes.txt | 225 ++-- src/geom.c | 12 +- src/geom.h | 10 +- src/geom2.c | 26 +- src/global.c | 45 +- src/index.htm | 2 +- src/io.c | 139 +-- src/io.h | 56 +- src/libqhull.c | 24 +- src/libqhull.h | 46 +- src/mem.c | 53 +- src/mem.h | 10 +- src/merge.c | 48 +- src/merge.h | 8 +- src/poly.c | 41 +- src/poly.h | 6 +- src/poly2.c | 36 +- src/qh-geom.htm | 2 +- src/qh-globa.htm | 2 +- src/qh-io.htm | 2 +- src/qh-mem.htm | 2 +- src/qh-merge.htm | 2 +- src/qh-poly.htm | 2 +- src/qh-qhull.htm | 4 +- src/qh-set.htm | 2 +- src/qh-stat.htm | 2 +- src/qh-user.htm | 2 +- src/qhull.h | 6 +- src/qhull_a.h | 27 +- src/qset.c | 28 +- src/qset.h | 12 +- src/random.h | 6 +- src/rbox.c | 2 +- src/rboxlib.c | 28 +- src/stat.c | 14 +- src/stat.h | 12 +- src/unix.c | 6 +- src/user.c | 4 +- src/user.h | 2 +- src/user_eg2.c | 2 +- src/usermem.c | 8 +- user_eg3.ilk | Bin 0 -> 982096 bytes 151 files changed, 2105 insertions(+), 2048 deletions(-) create mode 100644 qhull.ilk create mode 100644 qtpro/qhull-all.pro create mode 100644 rbox.ilk create mode 100644 user_eg3.ilk diff --git a/Announce.txt b/Announce.txt index 7433d4a..9154b41 100644 --- a/Announce.txt +++ b/Announce.txt @@ -2,6 +2,7 @@ Qhull 2003.1 2003/12/30 http://www.qhull.org + git@gitorious.org:qhull/qhull.git http://savannah.nongnu.org/projects/qhull/ http://www6.uniovi.es/ftp/pub/mirrors/geom.umn.edu/software/ghindex.html http://www.geomview.org @@ -20,6 +21,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://savannah.nongnu.org/files/?group=qhull Download qhull-96.ps for: @@ -28,7 +30,7 @@ Download qhull-96.ps for: Quickhull Algorithm for Convex Hulls," ACM Trans. on Mathematical Software, 22(4):469-483, Dec. 1996. http://www.acm.org/pubs/citations/journals/toms/1996-22-4/p469-barber/ - http://citeseer.nj.nec.com/83502.html + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345 Abstract: diff --git a/README.txt b/README.txt index a7aba9b..daccfae 100644 --- a/README.txt +++ b/README.txt @@ -6,10 +6,12 @@ Convex hull, Delaunay triangulation, Voronoi diagrams, Halfspace intersection Documentation: html/index.htm + http://www.qhull.org/html Available from: <http://www.qhull.org> - <http://savannah.nongnu.org/projects/qhull> + git@gitorious.org:qhull/qhull.git + <http://savannah.nongnu.org/projects/qhull> Version 1 (simplicial only): <http://www.qhull.org/download/qhull-1.0.tar.gz> @@ -17,7 +19,7 @@ Convex hull, Delaunay triangulation, Voronoi diagrams, Halfspace intersection News and a paper: <http://www.qhull.org/news> - <http://citeseer.nj.nec.com/83502.html> + <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345> Purpose @@ -133,7 +135,7 @@ Compiling the source distribution - if the code compiles, the qhull test case will automatically execute - if an error occurs, there's an incompatibility between machines - For gcc-2.95.1, you need to set flag -fno-strict-aliasing. - It is set by default for other versions of gcc [Karas, Krishnaswami] + It is set by default for other versions of gcc [Karas, Krishnaswami] - If you can, try a different compiler - You can turn off the Qhull memory manager with qh_NOmem in mem.h - You can turn off compiler optimization (-O2 in Makefile) @@ -152,45 +154,45 @@ Compiling on Windows 95, 98, NT, 2000, XP Visual C++ quickstart for qhull.exe only: - create a "Win32 console application" called "qhull" - - add the following files: - geom.c geom2.c global.c io.c mem.c merge.c poly.c poly2.c qhulllib.c - qset.c stat.c unix.c user.c + - add the following files: + geom.c geom2.c global.c io.c mem.c merge.c poly.c poly2.c qhulllib.c + qset.c stat.c unix.c user.c - create a "Win32 console application" called "rbox" - - add rbox.c + - add rbox.c Visual C++ quickstart for qhull library, qhull.exe, qconvex.exe, etc. - To simplify setting up lots of projects, - - create a temporary "Win32 console application" called "source" - - add all .c files from .../src/... - - In Tools::Options::Tab - Set tab size to 8 and indent size to 2 + - create a temporary "Win32 console application" called "source" + - add all .c files from .../src/... + - In Tools::Options::Tab + Set tab size to 8 and indent size to 2 - create a "Win32 console application" called "rbox" - - move rbox.c from "qhull source" - - for Project:Settings..., Link - you only need the default libraries - - build the project + - move rbox.c from "qhull source" + - for Project:Settings..., Link + you only need the default libraries + - build the project - create a "Win32 static library" called "library" - - move these files from "qhull source" - geom.c geom2.c global.c io.c mem.c merge.c poly.c poly2.c qhulllib.c - qset.c stat.c user.c - - set the library file (use the same for debug and release) - - build the project + - move these files from "qhull source" + geom.c geom2.c global.c io.c mem.c merge.c poly.c poly2.c qhulllib.c + qset.c stat.c user.c + - set the library file (use the same for debug and release) + - build the project - create a "Win32 console application" called "qhull" - - Move unix.c from "qhull source" - - Add the library file created by "library" - - Qhull does not use other libraries + - Move unix.c from "qhull source" + - Add the library file created by "library" + - Qhull does not use other libraries - create a "Win32 console application" called "qconvex" - - Move qconvex.c from "qhull source" - - Copy the library file from "qhull" + - Move qconvex.c from "qhull source" + - Copy the library file from "qhull" - do the same for qdelaun.c, qhalf, qvoronoi.c, user_eg.c, user_eg2.c - - delete "qhull sources" since it is no longer needed - - use Project:Settings to make any changes - - use batch build to rebuild everything + - delete "qhull sources" since it is no longer needed + - use Project:Settings to make any changes + - use batch build to rebuild everything Qhull compiles with Borland C++ 5.0 bcc32. A Makefile is included. Execute 'make -f Mborland'. If you use the Borland IDE, set the ANSI @@ -237,10 +239,10 @@ Distributed files README.txt // instructions for installing Qhull REGISTER.txt // Qhull registration COPYING.txt // copyright notice - QHULL-GO.pif // Windows icon for qhull-go.bat + QHULL-GO.pif // Windows icon for qhull-go.bat Announce.txt // announcement Changes.txt // change history for Qhull and rbox - File_id.diz // package descriptor + File_id.diz // package descriptor index.htm // Home page html/qh-faq.htm // Frequently asked questions html/qh-get.htm // Download page @@ -299,7 +301,7 @@ src/ qhull_a.h // include file for *.c geom.c // geometric routines geom2.c - geom.h + geom.h global.c // global variables io.c // input-output routines io.h @@ -318,10 +320,7 @@ src/ Authors: C. Bradford Barber Hannu Huhdanpaa - bradb@qhull.org hannu@qhull.org - - The Geometry Center - University of Minnesota + bradb@shore.net hannu@qhull.org Qhull 1.0 and 2.0 were developed under NSF grants NSF/DMS-8920161 and NSF-CCR-91-15793 750-7504 at the Geometry Center and Harvard diff --git a/cpp/Coordinates.cpp b/cpp/Coordinates.cpp index 38a9f58..1f38a2c 100644 --- a/cpp/Coordinates.cpp +++ b/cpp/Coordinates.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Coordinates.cpp#15 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/Coordinates.cpp#17 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -177,7 +177,7 @@ operator<<(ostream &os, const Coordinates &cs) { Coordinates::const_iterator c= cs.begin(); for(int i=cs.count(); i--; ){ - os<< *c++ << " "; + os << *c++ << " "; } return os; }//operator<< diff --git a/cpp/Coordinates.h b/cpp/Coordinates.h index 51d90cf..f5bd644 100644 --- a/cpp/Coordinates.h +++ b/cpp/Coordinates.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (Coordinates) 2009-2009 Coordinates. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Coordinates.h#27 $$Change: 1116 $ -** $DateTime: 2009/12/13 22:31:48 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/Coordinates.h#29 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -234,8 +234,6 @@ public: };//Coordinates -//FIXUP IO for Coordinates - //class CoordinatesIterator //QHULL_DECLARE_SEQUENTIAL_ITERATOR(Coordinates, coordT) diff --git a/cpp/PointCoordinates.cpp b/cpp/PointCoordinates.cpp index 61280a8..c8c1cd8 100644 --- a/cpp/PointCoordinates.cpp +++ b/cpp/PointCoordinates.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/PointCoordinates.cpp#19 $$Change: 1118 $ -** $DateTime: 2009/12/20 16:19:59 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/PointCoordinates.cpp#21 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -145,9 +145,7 @@ append(int count, const coordT *c) throw QhullError(10065, "Qhull error: can not append a subset of PointCoordinates to itself. The coordinates for point %d may move.", indexOf(c, QhullError::NOthrow)); } reserveCoordinates(count); - for(int i=count; i--; ){ // FIXUP copy(c, c+count, point_coordinates.end()); - point_coordinates.push_back(*c++); - } + std::copy(c, c+count, std::back_inserter(point_coordinates)); makeValid(); }//append coordT @@ -238,7 +236,7 @@ PointCoordinates PointCoordinates:: operator+(const PointCoordinates &other) const { PointCoordinates pc= *this; - pc<< other; + pc << other; return pc; }//operator+ @@ -272,7 +270,6 @@ using std::ostream; using orgQhull::Coordinates; using orgQhull::PointCoordinates; -// FIXUP Almost the same as operator<< for RboxPoints ostream& operator<<(ostream &os, const PointCoordinates &p) { @@ -281,17 +278,17 @@ operator<<(ostream &os, const PointCoordinates &p) int dimension= p.dimension(); string comment= p.comment(); if(comment.empty()){ - os<< dimension << endl; + os << dimension << endl; }else{ - os<< dimension << " " << comment << endl; + os << dimension << " " << comment << endl; } - os<< count << endl; + os << count << endl; Coordinates::ConstIterator c= p.beginCoordinates(); for(int i=0; i<count; i++){ for(int j=0; j<dimension; j++){ - os<< *c++ << " "; + os << *c++ << " "; } - os<< endl; + os << endl; } return os; }//operator<< diff --git a/cpp/PointCoordinates.h b/cpp/PointCoordinates.h index cb7eb30..bc6e56c 100644 --- a/cpp/PointCoordinates.h +++ b/cpp/PointCoordinates.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/PointCoordinates.h#11 $$Change: 1117 $ -** $DateTime: 2009/12/14 20:55:32 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/PointCoordinates.h#13 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -87,8 +87,8 @@ public: #//Read-only PointCoordinates operator+(const PointCoordinates &other) const; - //FIXUP: Add other modify operators from Coordinates.h, including QhullPoint::operator=() #//Modify + //FIXUP 2009: Add clear() and other modify operators from Coordinates.h. Include QhullPoint::operator=() void append(int count, const coordT *c); //! Dimension previously defined void append(const coordT &c) { append(1, &c); } //! Dimension previously defined void append(const QhullPoint &p); @@ -138,7 +138,7 @@ class PointCoordinatesIterator return false; } };//CoordinatesIterator -// FIXUP: Add MutablePointCoordinatesIterator after adding Modify operators +// FIXUP 2009: Add MutablePointCoordinatesIterator after adding modify operators \ }//namespace orgQhull diff --git a/cpp/Qhull.cpp b/cpp/Qhull.cpp index 2c950fd..ec6d8eb 100644 --- a/cpp/Qhull.cpp +++ b/cpp/Qhull.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Qhull.cpp#38 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/Qhull.cpp#40 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -134,8 +134,8 @@ Qhull:: qhull_run_id= UsingLibQhull::NOqhRunId; // Except for cerr, does not throw errors if(hasQhullMessage()){ - cerr<< "\nQhull output at end\n"; - cerr<<qhullMessage(); //FIXUP: where should error and log messages go on ~Qhull? + cerr<< "\nQhull output at end\n"; //FIXUP 2009: where should error and log messages go on ~Qhull? + cerr<<qhullMessage(); clearQhullMessage(); } } @@ -172,7 +172,7 @@ bool Qhull:: hasQhullMessage() const { return (!qhull_message.empty() || qhull_status!=qh_ERRnone); - //FIXUP -- inconsistent usage with Rbox. hasRboxMessage just tests rbox_status. No appendRboxMessage() + //FIXUP 2009 -- inconsistent usage with Rbox. hasRboxMessage just tests rbox_status. No appendRboxMessage() } //! qhullMessage does not throw errors (~Qhull) @@ -208,6 +208,14 @@ setOutputStream(ostream *os) #//GetSet +void Qhull:: +checkIfQhullInitialized() +{ + if(!initialized()){ // qh_initqhull_buffers() not called + throw QhullError(10023, "Qhull error: checkIfQhullInitialized failed. Call runQhull() first."); + } +}//checkIfQhullInitialized + //! Setup global state (qh_qh, qh_qhstat, qhmem.tempstack) int Qhull:: runId() @@ -223,8 +231,8 @@ runId() double Qhull:: area(){ + checkIfQhullInitialized(); UsingLibQhull q(this); - qhull_qh->checkIfQhullRan(); if(!qh hasAreaVolume){ int exitCode = setjmp(qh errexit); if(!exitCode){ // no object creation -- destructors skipped on longjmp() @@ -237,8 +245,8 @@ area(){ double Qhull:: volume(){ + checkIfQhullInitialized(); UsingLibQhull q(this); - qhull_qh->checkIfQhullRan(); if(!qh hasAreaVolume){ int exitCode = setjmp(qh errexit); if(!exitCode){ // no object creation -- destructors skipped on longjmp() @@ -258,8 +266,14 @@ facetList() const{ QhullPoints Qhull:: points() const { - return QhullPoints(dimension(), qhull_qh->num_points*dimension(), qhull_qh->first_point); -} + return QhullPoints(hullDimension(), qhull_qh->num_points*hullDimension(), qhull_qh->first_point); +}//points + +QhullPointSet Qhull:: +otherPoints() const +{ + return QhullPointSet(hullDimension(), qhull_qh->other_points); +}//otherPoints QhullVertexList Qhull:: vertexList() const{ @@ -271,8 +285,8 @@ vertexList() const{ void Qhull:: outputQhull() { + checkIfQhullInitialized(); UsingLibQhull q(this); - qhull_qh->checkIfQhullRan(); int exitCode = setjmp(qh errexit); if(!exitCode){ // no object creation -- destructors skipped on longjmp() qh_produce_output2(); @@ -283,8 +297,8 @@ outputQhull() void Qhull:: outputQhull(const char *outputflags) { + checkIfQhullInitialized(); UsingLibQhull q(this); - qhull_qh->checkIfQhullRan(); string cmd(" "); // qh_checkflags skips first word cmd += outputflags; char *command= const_cast<char*>(cmd.c_str()); @@ -353,7 +367,6 @@ runQhull(const char *rboxCommand, int pointDimension, int pointCount, const real } qh_init_B(newPoints, pointCount, newDimension, newIsMalloc); qhull_dimension= (qh DELAUNAY ? qh hull_dim - 1 : qh hull_dim); - //FIXUP -- copy rbox_command here. SetCommandMessage is wrong qh_qhull(); qh_check_output(); qh_prepare_output(); @@ -361,7 +374,7 @@ runQhull(const char *rboxCommand, int pointDimension, int pointCount, const real qh_check_points(); } } - for(int k= qhull_dimension; k--; ){ + for(int k= qhull_dimension; k--; ){ // Do not move up (may throw) origin_point << 0.0; } maybeThrowQhullMessage(exitCode); @@ -404,7 +417,7 @@ maybeThrowQhullMessage(int exitCode) if(qhull_status!=qh_ERRnone){ QhullError e(qhull_status, qhull_message); clearQhullMessage(); - throw e; // FIXUP copy constructor is expensive if logging + throw e; // FIXUP 2009: copy constructor is expensive if logging } }//maybeThrowQhullMessage @@ -467,7 +480,7 @@ void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... ) { va_end(args); return; } - // FIXUP how do users trap messages and handle input? A callback? + // FIXUP 2009: how do users trap messages and handle input? A callback? char newMessage[MSG_MAXLEN]; vsnprintf(newMessage, sizeof(newMessage), fmt, args); out->appendQhullMessage(newMessage); diff --git a/cpp/Qhull.h b/cpp/Qhull.h index a1cd4d7..03a14c9 100644 --- a/cpp/Qhull.h +++ b/cpp/Qhull.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Qhull.h#32 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/Qhull.h#34 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -46,7 +46,7 @@ private: Coordinates origin_point; //! origin for qhull_dimension. Set by runQhull() int qhull_status; //! qh_ERRnone if valid int qhull_dimension; //! Dimension of result (qh.hull_dim or one less for Delaunay/Voronoi) - bool run_called; //! True after runQhull. Error if call again. + bool run_called; //! True at start of runQhull. Errors if call again. bool qh_active; //! True if qh_qh is qhull_qh std::string qhull_message; std::ostream *error_stream; //! overrides errorMessage, use appendQhullMessage() @@ -59,7 +59,7 @@ private: public: Coordinates feasiblePoint; //! feasible point for half-space intersection bool useOutputStream; //! Set if using outputStream - // FIXUP feasiblePoint useOutputStream as field or getter? + // FIXUP 2009 feasiblePoint useOutputStream as field or getter? #//constructor, assignment, destructor, invariant Qhull(); //! Qhull::runQhull() must be called next @@ -73,10 +73,9 @@ private: public: #//virtual methods - //FIXUP -- qh_memfree, etc. as virtual? + //FIXUP 2009 -- qh_memfree, etc. as virtual? #//Messaging - // FIXUP rename as errorMessage? void appendQhullMessage(const std::string &s); void clearQhullMessage(); std::string qhullMessage() const; @@ -86,10 +85,12 @@ public: void setOutputStream(std::ostream *os); #//GetSet - bool defined() const { return qhull_dimension>0; } - int dimension() const { return qhull_dimension; } //FIXUP use dimension() instead? + void checkIfQhullInitialized(); + bool initialized() const { return qhull_dimension>0; } + int dimension() const { return qhull_dimension; } + int hullDimension() const { return qhullQh()->hull_dim; } // non-const due to QhullPoint - QhullPoint origin() { QHULL_ASSERT(run_called && origin_point.size()>0); return QhullPoint(dimension(), origin_point.data()); } + QhullPoint origin() { QHULL_ASSERT(initialized()); return QhullPoint(dimension(), origin_point.data()); } QhullQh *qhullQh() const { return qhull_qh; }; int runId(); // Modifies my_qhull @@ -112,8 +113,8 @@ public: QhullFacet firstFacet() const { return beginFacet(); } QhullVertex firstVertex() const { return beginVertex(); } QhullPoints points() const; - QhullPointSet otherPoints() const { return QhullPointSet(dimension(), qhull_qh->other_points); } - //FIXUP -- replace pointCoordinateBegin with points()? + QhullPointSet otherPoints() const; + //! Same as points().coordinates() coordT *pointCoordinateBegin() const { return qhull_qh->first_point; } coordT *pointCoordinateEnd() const { return qhull_qh->first_point + qhull_qh->num_points*qhull_qh->hull_dim; } QhullVertexList vertexList() const; diff --git a/cpp/QhullError.cpp b/cpp/QhullError.cpp index 2a8404e..7f66e36 100644 --- a/cpp/QhullError.cpp +++ b/cpp/QhullError.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2008-2008 C. Bradford Barber. All rights reserved. +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. ** ****************************************************************************/ diff --git a/cpp/QhullError.h b/cpp/QhullError.h index 6fa4e63..7e6c071 100644 --- a/cpp/QhullError.h +++ b/cpp/QhullError.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullError.h#30 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullError.h#32 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -50,20 +50,12 @@ public: #ifndef QHULL_1 #define QHULL_ASSERT assert - //! See Qt's qglobal.h - #if defined(Q_CC_INTEL) && !defined(Q_OS_WIN) // FIXUP - template <typename T> - inline void qUnused(T &x) { (void)x; } - # define QHULL_UNUSED(x) qUnused(x); - #else - # define QHULL_UNUSED(x) (void)x; - #endif #endif }//namespace orgQhull #//Global functions -inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullError &e) { return os<< e.what(); } +inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullError &e) { return os << e.what(); } #endif // QHULLERROR_H diff --git a/cpp/QhullEvent.cpp b/cpp/QhullEvent.cpp index 850eabd..1de32fe 100644 --- a/cpp/QhullEvent.cpp +++ b/cpp/QhullEvent.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2008-2008 C. Bradford Barber. All rights reserved. +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. ** ****************************************************************************/ diff --git a/cpp/QhullEvent.h b/cpp/QhullEvent.h index fc9ff12..01e44be 100644 --- a/cpp/QhullEvent.h +++ b/cpp/QhullEvent.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullEvent.h#7 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullEvent.h#8 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullFacet.cpp b/cpp/QhullFacet.cpp index e9f3ec0..6cead8a 100644 --- a/cpp/QhullFacet.cpp +++ b/cpp/QhullFacet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacet.cpp#30 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacet.cpp#32 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -124,7 +124,7 @@ tricoplanarOwner() const } return qh_facet->f.triowner; } - return 0; // FIXUP NULL facet or empty facet + return 0; // FIXUP 2009 Should false be the NULL facet or empty facet }//tricoplanarOwner QhullPoint QhullFacet:: @@ -208,24 +208,24 @@ using orgQhull::QhullVertexSet; using orgQhull::UsingLibQhull; ostream & -operator<<(ostream &os, const QhullFacet::PrintFacet &pr) // FIXUP make const (center) +operator<<(ostream &os, const QhullFacet::PrintFacet &pr) { QhullFacet f= *pr.facet; if(f.getFacetT()==0){ // Special values from set iterator - os<< " NULLfacet" << endl; + os << " NULLfacet" << endl; return os; } if(f.getFacetT()==qh_MERGEridge){ - os<< " MERGEridge" << endl; + os << " MERGEridge" << endl; return os; } if(f.getFacetT()==qh_DUPLICATEridge){ - os<< " DUPLICATEridge" << endl; + os << " DUPLICATEridge" << endl; return os; } - os<< f.printHeader(pr.run_id); + os << f.printHeader(pr.run_id); if(!f.ridges().isEmpty()){ - os<< f.printRidges(pr.run_id); + os << f.printRidges(pr.run_id); } return os; }//operator<< PrintFacet @@ -241,7 +241,7 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) return os; } if (pr.message){ - os<< pr.message; + os << pr.message; } int numCoords; if(qh CENTERtype==qh_ASvoronoi){ @@ -251,11 +251,11 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) f->center= qh_facetcenter(f->vertices); } for(int k=0; k<numCoords; k++){ - os<< f->center[k] << " "; // FIXUP qh_REAL_1 + os << f->center[k] << " "; // FIXUP 2009 qh_REAL_1 } }else{ for(int k=0; k<numCoords; k++){ - os<< qh_INFINITE << " "; // FIXUP qh_REAL_1 + os << qh_INFINITE << " "; // FIXUP 2009 qh_REAL_1 } } }else{ // qh CENTERtype==qh_AScentrum @@ -267,13 +267,13 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) f->center= qh_getcentrum(f); } for(int k=0; k<numCoords; k++){ - os<< f->center[k] << " "; // FIXUP qh_REAL_1 + os << f->center[k] << " "; // FIXUP 2009 qh_REAL_1 } } if(pr.print_format==qh_PRINTgeom && numCoords==2){ - os<< " 0"; + os << " 0"; } - os<< endl; + os << endl; return os; }//operator<< PrintCenter @@ -281,70 +281,70 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) ostream & operator<<(ostream &os, const QhullFacet::PrintFlags &p) { - const facetT *f= p.facet->getFacetT(); // FIXUP use QhullFacet for << + const facetT *f= p.facet->getFacetT(); if(p.message){ - os<< p.message; + os << p.message; } - os<< (f->toporient ? " top" : " bottom"); + os << (f->toporient ? " top" : " bottom"); if(f->simplicial){ - os<< " simplicial"; + os << " simplicial"; } if(f->tricoplanar){ - os<< " tricoplanar"; + os << " tricoplanar"; } if(f->upperdelaunay){ - os<< " upperDelaunay"; + os << " upperDelaunay"; } if(f->visible){ - os<< " visible"; + os << " visible"; } if(f->newfacet){ - os<< " new"; + os << " new"; } if(f->tested){ - os<< " tested"; + os << " tested"; } if(!f->good){ - os<< " notG"; + os << " notG"; } if(f->seen){ - os<< " seen"; + os << " seen"; } if(f->coplanar){ - os<< " coplanar"; + os << " coplanar"; } if(f->mergehorizon){ - os<< " mergehorizon"; + os << " mergehorizon"; } if(f->keepcentrum){ - os<< " keepcentrum"; + os << " keepcentrum"; } if(f->dupridge){ - os<< " dupridge"; + os << " dupridge"; } if(f->mergeridge && !f->mergeridge2){ - os<< " mergeridge1"; + os << " mergeridge1"; } if(f->mergeridge2){ - os<< " mergeridge2"; + os << " mergeridge2"; } if(f->newmerge){ - os<< " newmerge"; + os << " newmerge"; } if(f->flipped){ - os<< " flipped"; + os << " flipped"; } if(f->notfurthest){ - os<< " notfurthest"; + os << " notfurthest"; } if(f->degenerate){ - os<< " degenerate"; + os << " degenerate"; } if(f->redundant){ - os<< " redundant"; + os << " redundant"; } - os<< endl; + os << endl; return os; }//operator<< PrintFlags @@ -354,81 +354,81 @@ operator<<(ostream &os, const QhullFacet::PrintHeader &pr) { QhullFacet facet= *pr.facet; facetT *f= facet.getFacetT(); - os<< "- f" << facet.id() << endl; - os<< facet.printFlags(" - flags:"); + os << "- f" << facet.id() << endl; + os << facet.printFlags(" - flags:"); if(f->isarea){ - os<< " - area: " << f->f.area << endl; //FIXUP 2.2g + os << " - area: " << f->f.area << endl; //FIXUP 2009 2.2g }else if(qh NEWfacets && f->visible && f->f.replace){ - os<< " - replacement: f" << f->f.replace->id << endl; + os << " - replacement: f" << f->f.replace->id << endl; }else if(f->newfacet){ if(f->f.samecycle && f->f.samecycle != f){ - os<< " - shares same visible/horizon as f" << f->f.samecycle->id << endl; + os << " - shares same visible/horizon as f" << f->f.samecycle->id << endl; } }else if(f->tricoplanar /* !isarea */){ if(f->f.triowner){ - os<< " - owner of normal & centrum is facet f" << f->f.triowner->id << endl; + os << " - owner of normal & centrum is facet f" << f->f.triowner->id << endl; } }else if(f->f.newcycle){ - os<< " - was horizon to f" << f->f.newcycle->id << endl; + os << " - was horizon to f" << f->f.newcycle->id << endl; } if(f->nummerge){ - os<< " - merges: " << f->nummerge << endl; + os << " - merges: " << f->nummerge << endl; } - os<< facet.hyperplane().print(" - normal: ", "\n - offset: "); // FIXUP %10.7g + os << facet.hyperplane().print(" - normal: ", "\n - offset: "); // FIXUP 2009 %10.7g if(qh CENTERtype==qh_ASvoronoi || f->center){ - os<< facet.printCenter(pr.run_id, qh_PRINTfacets, " - center: "); + os << facet.printCenter(pr.run_id, qh_PRINTfacets, " - center: "); } #if qh_MAXoutside if(f->maxoutside > qh DISTround){ - os<< " - maxoutside: " << f->maxoutside << endl; //FIXUP %10.7g + os << " - maxoutside: " << f->maxoutside << endl; //FIXUP 2009 %10.7g } #endif QhullPointSet ps= facet.outsidePoints(); if(!ps.isEmpty()){ QhullPoint furthest= ps.last(); if (ps.size() < 6) { - os<< " - outside set(furthest p" << furthest.id(pr.run_id) << "):" << endl; + os << " - outside set(furthest p" << furthest.id(pr.run_id) << "):" << endl; for(QhullPointSet::iterator i=ps.begin(); i!=ps.end(); ++i){ QhullPoint p= *i; - os<< p.print(pr.run_id, " "); + os << p.print(pr.run_id, " "); } }else if(ps.size()<21){ - os<< ps.print(pr.run_id, " - outside set:"); + os << ps.print(pr.run_id, " - outside set:"); }else{ - os<< " - outside set: " << ps.size() << " points."; - os<< furthest.print(pr.run_id, " Furthest"); + os << " - outside set: " << ps.size() << " points."; + os << furthest.print(pr.run_id, " Furthest"); } #if !qh_COMPUTEfurthest - os<< " - furthest distance= " << f->furthestdist << endl; //FIXUP %2.2g + os << " - furthest distance= " << f->furthestdist << endl; //FIXUP 2009 %2.2g #endif } QhullPointSet cs= facet.coplanarPoints(); if(!cs.isEmpty()){ QhullPoint furthest= cs.last(); if (cs.size() < 6) { - os<< " - coplanar set(furthest p" << furthest.id(pr.run_id) << "):" << endl; + os << " - coplanar set(furthest p" << furthest.id(pr.run_id) << "):" << endl; for(QhullPointSet::iterator i=cs.begin(); i!=cs.end(); ++i){ QhullPoint p= *i; - os<< p.print(pr.run_id, " "); + os << p.print(pr.run_id, " "); } }else if(cs.size()<21){ - os<< cs.print(pr.run_id, " - coplanar set:"); + os << cs.print(pr.run_id, " - coplanar set:"); }else{ - os<< " - coplanar set: " << cs.size() << " points."; - os<< furthest.print(pr.run_id, " Furthest"); + os << " - coplanar set: " << cs.size() << " points."; + os << furthest.print(pr.run_id, " Furthest"); } zinc_(Zdistio); double d= facet.distance(furthest); - os<< " furthest distance= " << d << endl; //FIXUP %2.2g + os << " furthest distance= " << d << endl; //FIXUP %2.2g } QhullVertexSet vs= facet.vertices(); if(!vs.isEmpty()){ - os<< vs.print(pr.run_id, " - vertices:"); + os << vs.print(pr.run_id, " - vertices:"); } QhullFacetSet fs= facet.neighborFacets(); fs.selectAll(); if(!fs.isEmpty()){ - os<< fs.printIdentifiers(" - neighboring facets:"); + os << fs.printIdentifiers(" - neighboring facets:"); } return os; }//operator<< PrintHeader @@ -446,17 +446,17 @@ operator<<(ostream &os, const QhullFacet::PrintRidges &pr) UsingLibQhull q(pr.run_id); // No calls to libqhull if(f->visible && qh NEWfacets){ - os<< " - ridges(ids may be garbage):"; + os << " - ridges(ids may be garbage):"; for(QhullRidgeSet::iterator i=rs.begin(); i!=rs.end(); ++i){ QhullRidge r= *i; - os<< " r" << r.id(); + os << " r" << r.id(); } - os<< endl; + os << endl; }else{ - os<< " - ridges:" << endl; + os << " - ridges:" << endl; } }else{ - os<< " - ridges:" << endl; + os << " - ridges:" << endl; } // Keep track of printed ridges @@ -468,7 +468,7 @@ operator<<(ostream &os, const QhullFacet::PrintRidges &pr) if(facet.dimension()==3){ for(QhullRidge r= rs.first(); !r.getRidgeT()->seen; r= r.nextRidge3d(facet)){ r.getRidgeT()->seen= true; - os<< r.print(pr.run_id); + os << r.print(pr.run_id); ++ridgeCount; } }else { @@ -480,24 +480,24 @@ operator<<(ostream &os, const QhullFacet::PrintRidges &pr) QhullRidge r= *j; if(r.otherFacet(neighbor)==facet){ r.getRidgeT()->seen= true; - os<< r.print(pr.run_id); + os << r.print(pr.run_id); ridgeCount++; } } } } if(ridgeCount!=rs.count()){ - os<< " - all ridges:"; + os << " - all ridges:"; for(QhullRidgeSet::iterator i=rs.begin(); i!=rs.end(); ++i){ QhullRidge r= *i; - os<< " r" << r.id(); + os << " r" << r.id(); } - os<< endl; + os << endl; } for(QhullRidgeSet::iterator i=rs.begin(); i!=rs.end(); ++i){ QhullRidge r= *i; if(!r.getRidgeT()->seen){ - os<< r.print(pr.run_id); + os << r.print(pr.run_id); } } return os; @@ -507,6 +507,6 @@ operator<<(ostream &os, const QhullFacet::PrintRidges &pr) ostream & operator<<(ostream &os, QhullFacet &f) { - os<< f.print(UsingLibQhull::NOqhRunId); + os << f.print(UsingLibQhull::NOqhRunId); return os; }//<< QhullFacet diff --git a/cpp/QhullFacet.h b/cpp/QhullFacet.h index 6928d61..96f7f14 100644 --- a/cpp/QhullFacet.h +++ b/cpp/QhullFacet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacet.h#32 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacet.h#34 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -40,7 +40,7 @@ class QhullFacet { private: #//Fields -- no additions (QhullFacetSet of facetT*) - facetT *qh_facet; //! May be 0 (!isDefined) for corner cases (e.g., *facetSet.end()==0) + facetT *qh_facet; //! May be 0 (!isDefined) for corner cases (e.g., *facetSet.end()==0) and tricoplanarOwner() #//Class objects static facetT s_empty_facet; // needed for shallow copy @@ -146,6 +146,6 @@ std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacet::PrintFlag std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacet::PrintHeader &pr); std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacet::PrintRidges &pr); std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacet::PrintFacet &pr); -std::ostream &operator<<(std::ostream &os, orgQhull::QhullFacet &f); //FIXUP. No conversion! { os<< f.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } // FIXUP non-const due to center. Make it mutable? +std::ostream &operator<<(std::ostream &os, orgQhull::QhullFacet &f); //FIXUP. No conversion! { os << f.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } // FIXUP non-const due to center. Make it mutable? #endif // QHULLFACET_H diff --git a/cpp/QhullFacetList.cpp b/cpp/QhullFacetList.cpp index 12f23d0..e9d7aa1 100644 --- a/cpp/QhullFacetList.cpp +++ b/cpp/QhullFacetList.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetList.cpp#19 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacetList.cpp#21 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -88,9 +88,9 @@ ostream & operator<<(ostream &os, const QhullFacetList::PrintFacetList &pr) { QhullFacetList fs= *pr.facet_list; - os<< "Vertices for " << fs.count() << " facets" << endl; - os<< fs.printVertices(pr.run_id); - os<< fs.printFacets(pr.run_id); + os << "Vertices for " << fs.count() << " facets" << endl; + os << fs.printVertices(pr.run_id); + os << fs.printFacets(pr.run_id); return os; }//operator<< @@ -101,7 +101,7 @@ operator<<(ostream &os, const QhullFacetList::PrintFacets &pr) for(QhullFacetList::const_iterator i= pr.facet_list->begin(); i != pr.facet_list->end(); ++i){ QhullFacet f= *i; if(pr.facet_list->isSelectAll() || f.isGood()){ - os<< f.print(pr.run_id); + os << f.print(pr.run_id); } } return os; @@ -115,7 +115,7 @@ operator<<(ostream &os, const QhullFacetList::PrintVertices &pr) QhullVertexSet vs(pr.run_id, pr.facet_list->first().getFacetT(), NULL, pr.facet_list->isSelectAll()); for(QhullVertexSet::iterator i=vs.begin(); i!=vs.end(); ++i){ QhullVertex v= *i; - os<< v.print(pr.run_id); + os << v.print(pr.run_id); } return os; }//printVertices diff --git a/cpp/QhullFacetList.h b/cpp/QhullFacetList.h index 54fa54d..b7a898f 100644 --- a/cpp/QhullFacetList.h +++ b/cpp/QhullFacetList.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetList.h#18 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacetList.h#20 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -101,6 +101,6 @@ std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetList::Print // FIXUP -- why did <<facetList work and the others did not? // print() not available since printVertices() requires qhRunId. // [9/09] added const -inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetList &fs) { os<< fs.printFacets(orgQhull::UsingLibQhull::NOqhRunId); return os; } +inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetList &fs) { os << fs.printFacets(orgQhull::UsingLibQhull::NOqhRunId); return os; } #endif // QHULLFACETLIST_H diff --git a/cpp/QhullFacetSet.cpp b/cpp/QhullFacetSet.cpp index 9db1bbb..c9903e3 100644 --- a/cpp/QhullFacetSet.cpp +++ b/cpp/QhullFacetSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.cpp#16 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.cpp#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -86,7 +86,7 @@ using orgQhull::UsingLibQhull; ostream & operator<<(ostream &os, const QhullFacetSet &fs) { - os<< fs.print(UsingLibQhull::NOqhRunId, ""); + os << fs.print(UsingLibQhull::NOqhRunId, ""); return os; }//<<QhullFacetSet @@ -98,7 +98,7 @@ operator<<(ostream &os, const QhullFacetSet::PrintFacetSet &pr) for(QhullFacetSet::iterator i=fs.begin(); i != fs.end(); ++i){ QhullFacet f= *i; if(fs.isSelectAll() || f.isGood()){ - os<< f.print(pr.run_id); + os << f.print(pr.run_id); } } return os; @@ -108,18 +108,18 @@ operator<<(ostream &os, const QhullFacetSet::PrintFacetSet &pr) ostream & operator<<(ostream &os, const QhullFacetSet::PrintIdentifiers &p) { - os<< p.message; + os << p.message; for(QhullFacetSet::const_iterator i=p.facet_set->begin(); i!=p.facet_set->end(); ++i){ const QhullFacet f= *i; if(f.getFacetT()==qh_MERGEridge){ - os<< " MERGE"; + os << " MERGE"; }else if(f.getFacetT()==qh_DUPLICATEridge){ - os<< " DUP"; + os << " DUP"; }else if(p.facet_set->isSelectAll() || f.isGood()){ - os<< " f" << f.id(); + os << " f" << f.id(); } } - os<< endl; + os << endl; return os; }//<<QhullFacetSet::PrintIdentifiers diff --git a/cpp/QhullFacetSet.h b/cpp/QhullFacetSet.h index 31a62da..a847aee 100644 --- a/cpp/QhullFacetSet.h +++ b/cpp/QhullFacetSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.h#16 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.h#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -87,7 +87,7 @@ public: #//== Global namespace ========================================= -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetSet &fs); // FIXUP no 'const ...PrintFacetSet as below! { os<< fs.print(orgQhull::UsingLibQhull::NOqhRunId, ""); } +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetSet &fs); // FIXUP no 'const ...PrintFacetSet as below! { os << fs.print(orgQhull::UsingLibQhull::NOqhRunId, ""); } std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetSet::PrintFacetSet &pr); std::ostream &operator<<(std::ostream &os, const orgQhull::QhullFacetSet::PrintIdentifiers &p); diff --git a/cpp/QhullHyperplane.cpp b/cpp/QhullHyperplane.cpp index 86dc78f..25a91eb 100644 --- a/cpp/QhullHyperplane.cpp +++ b/cpp/QhullHyperplane.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.cpp#6 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.cpp#8 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -116,7 +116,7 @@ using orgQhull::UsingLibQhull; ostream & operator<<(ostream &os, const QhullHyperplane &p) { - os<< p.print(); + os << p.print(); return os; } @@ -125,15 +125,15 @@ operator<<(ostream &os, const QhullHyperplane::PrintHyperplane &pr) { QhullHyperplane p= *pr.hyperplane; if(pr.hyperplane_message){ - os<< pr.hyperplane_message; + os << pr.hyperplane_message; } const realT *c= p.coordinates(); for(int k=p.dimension(); k--; ){ realT r= *c++; if(pr.hyperplane_message){ - os<< " " << r; // FIXUP %8.4g + os << " " << r; // FIXUP %8.4g }else{ - os<< " " << r; // FIXUP qh_REAL_1 + os << " " << r; // FIXUP qh_REAL_1 } } if(pr.hyperplane_offset_message){ @@ -141,7 +141,7 @@ operator<<(ostream &os, const QhullHyperplane::PrintHyperplane &pr) }else{ os << " " << p.offset(); } - os<< std::endl; + os << std::endl; return os; }//PrintHyperplane diff --git a/cpp/QhullHyperplane.h b/cpp/QhullHyperplane.h index dd13c70..9d5fd66 100644 --- a/cpp/QhullHyperplane.h +++ b/cpp/QhullHyperplane.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#7 $$Change: 1112 $ -** $DateTime: 2009/12/11 19:53:07 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#8 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullIterator.h b/cpp/QhullIterator.h index 06a7f50..634be5d 100644 --- a/cpp/QhullIterator.h +++ b/cpp/QhullIterator.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullIterator.h#17 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullIterator.h#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullLinkedList.h b/cpp/QhullLinkedList.h index 9f44a74..1354e5f 100644 --- a/cpp/QhullLinkedList.h +++ b/cpp/QhullLinkedList.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#27 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#29 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -367,7 +367,7 @@ operator<<(std::ostream &os, const orgQhull::QhullLinkedList<T> &qs) { typename orgQhull::QhullLinkedList<T>::const_iterator i; for(i= qs.begin(); i != qs.end(); ++i){ - os<< *i; + os << *i; } return os; }//operator<< diff --git a/cpp/QhullLog.cpp b/cpp/QhullLog.cpp index c747d68..6fe762e 100644 --- a/cpp/QhullLog.cpp +++ b/cpp/QhullLog.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullLog.cpp#7 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullLog.cpp#8 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullLog.h b/cpp/QhullLog.h index 50e1ca0..bb3c147 100644 --- a/cpp/QhullLog.h +++ b/cpp/QhullLog.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullLog.h#9 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullLog.h#10 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullPoint.cpp b/cpp/QhullPoint.cpp index 9aa3875..ff3669a 100644 --- a/cpp/QhullPoint.cpp +++ b/cpp/QhullPoint.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoint.cpp#23 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPoint.cpp#25 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -61,7 +61,7 @@ operator==(const QhullPoint &other) const dist2 += diff*diff; } double epsilon= UsingLibQhull::globalDistanceEpsilon(); - // std::cout<< "FIXUP dist2 " << dist2 << " epsilon^2 " << epsilon*epsilon << std::endl; + // std::cout << "FIXUP dist2 " << dist2 << " epsilon^2 " << epsilon*epsilon << std::endl; return (dist2<=(epsilon*epsilon)); }//operator== @@ -125,7 +125,7 @@ using orgQhull::UsingLibQhull; ostream & operator<<(ostream &os, const QhullPoint &p) { - os<< p.printWithIdentifier(UsingLibQhull::NOqhRunId, ""); + os << p.printWithIdentifier(UsingLibQhull::NOqhRunId, ""); return os; } @@ -137,22 +137,22 @@ operator<<(ostream &os, const QhullPoint::PrintPoint &pr) int i= p.id(pr.run_id); if(pr.point_message){ if(*pr.point_message){ - os<< pr.point_message << " "; + os << pr.point_message << " "; } if(pr.with_identifier && (i!=-1)){ - os<< "p" << i << ": "; + os << "p" << i << ": "; } } const realT *c= p.coordinates(); for(int k=p.dimension(); k--; ){ realT r= *c++; if(pr.point_message){ - os<< " " << r; // FIXUP %8.4g + os << " " << r; // FIXUP %8.4g }else{ - os<< " " << r; // FIXUP qh_REAL_1 + os << " " << r; // FIXUP qh_REAL_1 } } - os<< std::endl; + os << std::endl; return os; }//printPoint diff --git a/cpp/QhullPoint.h b/cpp/QhullPoint.h index ebb185c..ba0b6a5 100644 --- a/cpp/QhullPoint.h +++ b/cpp/QhullPoint.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#27 $$Change: 1112 $ -** $DateTime: 2009/12/11 19:53:07 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#29 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -128,7 +128,7 @@ QHULL_DECLARE_SEQUENTIAL_ITERATOR(QhullPoint, coordT) #//Global functions std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint::PrintPoint &pr); -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint &p); // FIXUP OK in c program but not inline { os<< p.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint &p); // FIXUP OK in c program but not inline { os << p.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } #endif // QHPOINT_H diff --git a/cpp/QhullPointSet.cpp b/cpp/QhullPointSet.cpp index 5e04e42..996810b 100644 --- a/cpp/QhullPointSet.cpp +++ b/cpp/QhullPointSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 c-> Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPointSet.cpp#5 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPointSet.cpp#7 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -160,7 +160,7 @@ using orgQhull::UsingLibQhull; ostream & operator<<(ostream &os, const QhullPointSet &ps) { - os<< ps.print(UsingLibQhull::NOqhRunId); + os << ps.print(UsingLibQhull::NOqhRunId); return os; }//<<QhullPointSet @@ -169,17 +169,17 @@ operator<<(ostream &os, const QhullPointSet::PrintIdentifiers &pr) { const QhullPointSet s= *pr.point_set; if (pr.message) { - os<< pr.message; + os << pr.message; } for(QhullPointSet::const_iterator i=s.begin(); i != s.end(); ++i){ if(i!=s.begin()){ - os<< " "; + os << " "; } const QhullPoint point= *i; int id= point.id(pr.run_id); - os<< "p" << id; + os << "p" << id; } - os<< endl; + os << endl; return os; }//PrintIdentifiers @@ -188,11 +188,11 @@ operator<<(ostream &os, const QhullPointSet::PrintPointSet &pr) { const QhullPointSet s= *pr.point_set; if (pr.message) { - os<< pr.message; + os << pr.message; } for(QhullPointSet::const_iterator i=s.begin(); i != s.end(); ++i){ const QhullPoint point= *i; - os<< point.print(pr.run_id); + os << point.print(pr.run_id); } return os; }//printPointSet diff --git a/cpp/QhullPointSet.h b/cpp/QhullPointSet.h index 750b5ce..bd515aa 100644 --- a/cpp/QhullPointSet.h +++ b/cpp/QhullPointSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#14 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#15 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullPoints.cpp b/cpp/QhullPoints.cpp index 2b134c8..fa983dc 100644 --- a/cpp/QhullPoints.cpp +++ b/cpp/QhullPoints.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoints.cpp#15 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPoints.cpp#17 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -197,7 +197,7 @@ operator<<(ostream &os, const QhullPoints &p) { QhullPointsIterator i(p); while(i.hasNext()){ - os<< i.next(); + os << i.next(); } return os; }//operator<<QhullPoints @@ -205,14 +205,14 @@ operator<<(ostream &os, const QhullPoints &p) ostream & operator<<(ostream &os, const QhullPoints::PrintPoints &pr) { - os<< pr.point_message; + os << pr.point_message; QhullPoints ps= *pr.points; for(QhullPoints::iterator i=ps.begin(); i != ps.end(); ++i){ QhullPoint p= *i; if(pr.with_identifier){ - os<< p.printWithIdentifier(pr.run_id, ""); + os << p.printWithIdentifier(pr.run_id, ""); }else{ - os<< p.print(pr.run_id, ""); + os << p.print(pr.run_id, ""); } } return os; diff --git a/cpp/QhullPoints.h b/cpp/QhullPoints.h index 46082ce..f1e2bd3 100644 --- a/cpp/QhullPoints.h +++ b/cpp/QhullPoints.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#24 $$Change: 1116 $ -** $DateTime: 2009/12/13 22:31:48 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#25 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullQh.cpp b/cpp/QhullQh.cpp index 8311411..9e652d9 100644 --- a/cpp/QhullQh.cpp +++ b/cpp/QhullQh.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullQh.cpp#22 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullQh.cpp#24 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -100,53 +100,5 @@ QhullQh:: #//Parallel Access -void QhullQh:: -errorAnotherUser() -{ -#if qh_QHpointer - if(qh_qh==0){ - throw QhullError(10019, "Qhull error: qhull was freed by another caller. It did not call stopQhullAccess()."); - } - if(qh_qh!=0 && qh_qh!=static_cast<qhT*>(this)){ - throw QhullError(10020, "Qhull error: qhull is already in use by another instance (run %d qh_qh %x)", qh run_id, 0, 0, qh_qh); - } -#endif -}//errorAnotherUser - -void QhullQh:: -checkIfQhullRan() // FIXUP -- use successful runQhull instead of TEMPsize? Many calls OK even if runQhull error'd -{ - if(qh TEMPsize==0){ // qh_initqhull_buffers() not called - throw QhullError(10023, "Qhull error: checkIfQhullRan failed. Call runQhull() first."); - } -}//checkIfQhullRan - -void QhullQh:: -startQhullAccess() -{ -# if qh_QHpointer - if(qh_qh){ - errorAnotherUser(); - }else{ - qh_qh= this; - } -# else - errorAnotherUser(); -# endif -}//startQhullAccess - -void QhullQh:: -stopQhullAccess() -{ -# if qh_QHpointer - if(qh_qh){ - errorAnotherUser(); - qh_qh= 0; - } -# else - errorAnotherUser(); -# endif -}//stopQhullAccess - }//namespace orgQhull diff --git a/cpp/QhullQh.h b/cpp/QhullQh.h index e74f328..d85f1d0 100644 --- a/cpp/QhullQh.h +++ b/cpp/QhullQh.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullQh.h#16 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullQh.h#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -44,12 +44,6 @@ private: QhullQh(const QhullQh &); QhullQh &operator=(const QhullQh &); -public: -#//Access - void checkIfQhullRan(); - void errorAnotherUser(); - void startQhullAccess(); - void stopQhullAccess(); };//class QhullQh }//namespace orgQhull diff --git a/cpp/QhullRidge.cpp b/cpp/QhullRidge.cpp index b25ebfc..34864be 100644 --- a/cpp/QhullRidge.cpp +++ b/cpp/QhullRidge.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullRidge.cpp#12 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullRidge.cpp#14 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -57,7 +57,7 @@ using orgQhull::UsingLibQhull; ostream & operator<<(ostream &os, const QhullRidge &r) { - os<< r.print(UsingLibQhull::NOqhRunId); + os << r.print(UsingLibQhull::NOqhRunId); return os; }//<< QhullRidge @@ -67,18 +67,18 @@ ostream & operator<<(ostream &os, const QhullRidge::PrintRidge &pr) { QhullRidge r= *pr.ridge; - os<< " - r" << r.id(); + os << " - r" << r.id(); if(r.getRidgeT()->tested){ - os<< " tested"; + os << " tested"; } if(r.getRidgeT()->nonconvex){ - os<< " nonconvex"; + os << " nonconvex"; } - os<< endl; - os<< r.vertices().print(pr.run_id, " vertices:"); + os << endl; + os << r.vertices().print(pr.run_id, " vertices:"); //FIXUP -- what if top or bottom are NULL? if(r.getRidgeT()->top && r.getRidgeT()->bottom){ - os<< " between f" << r.topFacet().id() << " and f" << r.bottomFacet().id() << endl; + os << " between f" << r.topFacet().id() << " and f" << r.bottomFacet().id() << endl; } return os; }//<< PrintRidge diff --git a/cpp/QhullRidge.h b/cpp/QhullRidge.h index cc228d8..ba198a0 100644 --- a/cpp/QhullRidge.h +++ b/cpp/QhullRidge.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullRidge.h#19 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullRidge.h#21 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -102,7 +102,7 @@ public: }//namespace orgQhull -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullRidge &r); //FIXUP no conversion. OK in .cpp { os<< r.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullRidge &r); //FIXUP no conversion. OK in .cpp { os << r.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } std::ostream &operator<<(std::ostream &os, const orgQhull::QhullRidge::PrintRidge &pr); #endif // QHULLRIDGE_H diff --git a/cpp/QhullSet.cpp b/cpp/QhullSet.cpp index 7ea431b..f43e3dd 100644 --- a/cpp/QhullSet.cpp +++ b/cpp/QhullSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#15 $$Change: 1027 $ -** $DateTime: 2009/07/03 21:11:23 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#16 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullSet.h b/cpp/QhullSet.h index ee769cd..c2e3ef8 100644 --- a/cpp/QhullSet.h +++ b/cpp/QhullSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSet.h#32 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullSet.h#34 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -351,7 +351,7 @@ operator<<(std::ostream &os, const orgQhull::QhullSet<T> &qs) const T *i= qs.begin(); const T *e= qs.end(); while(i!=e){ - os<< *i; + os << *i; ++i; } return os; diff --git a/cpp/QhullSets.h b/cpp/QhullSets.h index dce0253..439f867 100644 --- a/cpp/QhullSets.h +++ b/cpp/QhullSets.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSets.h#4 $$Change: 1048 $ -** $DateTime: 2009/09/24 21:34:06 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullSets.h#5 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullStat.cpp b/cpp/QhullStat.cpp index 952cc26..32e269f 100644 --- a/cpp/QhullStat.cpp +++ b/cpp/QhullStat.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullStat.cpp#6 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullStat.cpp#7 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullStat.h b/cpp/QhullStat.h index 7a638d1..abce85a 100644 --- a/cpp/QhullStat.h +++ b/cpp/QhullStat.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullStat.h#8 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullStat.h#9 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/QhullVertex.cpp b/cpp/QhullVertex.cpp index 8329f6d..c8849bd 100644 --- a/cpp/QhullVertex.cpp +++ b/cpp/QhullVertex.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertex.cpp#19 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullVertex.cpp#21 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -57,30 +57,30 @@ operator<<(ostream &os, const QhullVertex::PrintVertex &pr) { QhullVertex v= *pr.vertex; QhullPoint p= v.point(); - os<< "- p" << p.id(pr.run_id) << " (v" << v.id() << "): "; + os << "- p" << p.id(pr.run_id) << " (v" << v.id() << "): "; const realT *c= p.coordinates(); for(int k= p.dimension(); k--; ){ - os<< " " << *c++; // FIXUP %5.2g + os << " " << *c++; // FIXUP %5.2g } if(v.getVertexT()->deleted){ - os<< " deleted"; + os << " deleted"; } if(v.getVertexT()->delridge){ - os<< " ridgedeleted"; + os << " ridgedeleted"; } - os<< endl; + os << endl; QhullFacetSetIterator i= v.neighborFacets(); if(i.hasNext()){ - os<< " neighborFacets:"; + os << " neighborFacets:"; int count= 0; while(i.hasNext()){ if(++count % 100 == 0){ - os<< endl << " "; + os << endl << " "; } QhullFacet f= i.next(); - os<< " f" << f.id(); + os << " f" << f.id(); } - os<< endl; + os << endl; } return os; }//<< PrintVertex diff --git a/cpp/QhullVertex.h b/cpp/QhullVertex.h index c743e7c..a4b3a5f 100644 --- a/cpp/QhullVertex.h +++ b/cpp/QhullVertex.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertex.h#22 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullVertex.h#24 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -95,6 +95,6 @@ public: #//GLobal std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertex::PrintVertex &pr); -inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertex &v) { os<< v.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } +inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertex &v) { os << v.print(orgQhull::UsingLibQhull::NOqhRunId); return os; } #endif // QHULLVERTEX_H diff --git a/cpp/QhullVertexSet.cpp b/cpp/QhullVertexSet.cpp index b079bdb..6ef3efb 100644 --- a/cpp/QhullVertexSet.cpp +++ b/cpp/QhullVertexSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertexSet.cpp#5 $$Change: 1102 $ -** $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullVertexSet.cpp#7 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -83,9 +83,9 @@ operator<<(ostream &os, const QhullVertexSet::PrintIdentifiers &pr) } for(QhullVertexSet::const_iterator i=pr.Vertex_set->begin(); i!=pr.Vertex_set->end(); ++i){ const QhullVertex v= *i; - os<< " v" << v.id(); + os << " v" << v.id(); } - os<< endl; + os << endl; return os; }//<<QhullVertexSet::PrintIdentifiers @@ -94,15 +94,15 @@ operator<<(ostream &os, const QhullVertexSet::PrintIdentifiers &pr) ostream & operator<<(ostream &os, const QhullVertexSet::PrintVertexSet &pr){ - os<< pr.message; + os << pr.message; const QhullVertexSet *vs= pr.Vertex_set; QhullVertexSetIterator i= *vs; while(i.hasNext()){ const QhullVertex v= i.next(); const QhullPoint p= v.point(); - os<< " p" << p.id(pr.run_id) << "(v" << v.id() << ")"; + os << " p" << p.id(pr.run_id) << "(v" << v.id() << ")"; } - os<< endl; + os << endl; return os; }//<< PrintVertexSet diff --git a/cpp/QhullVertexSet.h b/cpp/QhullVertexSet.h index 82761cc..016cd09 100644 --- a/cpp/QhullVertexSet.h +++ b/cpp/QhullVertexSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertexSet.h#5 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/QhullVertexSet.h#7 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -74,6 +74,6 @@ public: std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertexSet::PrintVertexSet &pr); std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertexSet::PrintIdentifiers &p); -inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertexSet &vs) { os<< vs.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } +inline std::ostream &operator<<(std::ostream &os, const orgQhull::QhullVertexSet &vs) { os << vs.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } #endif // QHULLVERTEXSET_H diff --git a/cpp/RboxPoints.cpp b/cpp/RboxPoints.cpp index 4c9c340..653a28d 100644 --- a/cpp/RboxPoints.cpp +++ b/cpp/RboxPoints.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/RboxPoints.cpp#29 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/RboxPoints.cpp#31 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -196,22 +196,22 @@ void qh_fprintf_rbox(FILE*, int msgcode, const char *fmt, ... ) { } break; case 9407: - *out<< va_arg(args, int); + *out << va_arg(args, int); // fall through case 9405: - *out<< va_arg(args, int); + *out << va_arg(args, int); // fall through case 9403: - *out<< va_arg(args, int); + *out << va_arg(args, int); break; case 9408: - *out<< va_arg(args, double); + *out << va_arg(args, double); // fall through case 9406: - *out<< va_arg(args, double); + *out << va_arg(args, double); // fall through case 9404: - *out<< va_arg(args, double); + *out << va_arg(args, double); break; } va_end(args); diff --git a/cpp/RboxPoints.h b/cpp/RboxPoints.h index 3678685..065d2b5 100644 --- a/cpp/RboxPoints.h +++ b/cpp/RboxPoints.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/RboxPoints.h#25 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/RboxPoints.h#26 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/UsingLibQhull.cpp b/cpp/UsingLibQhull.cpp index b318207..146b191 100644 --- a/cpp/UsingLibQhull.cpp +++ b/cpp/UsingLibQhull.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#1 $$Change: 1107 $ -** $DateTime: 2009/12/07 21:05:37 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#3 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -202,7 +202,7 @@ checkQhullMemoryEmpty() double UsingLibQhull:: currentAngleEpsilon() { - if(s_qhull_output && s_qhull_output->defined()){ + if(s_qhull_output && s_qhull_output->initialized()){ return s_qhull_output->qhullQh()->ANGLEround*FACTORepsilon; }else if(s_has_angle_epsilon){ return s_angle_epsilon; @@ -213,7 +213,7 @@ currentAngleEpsilon() double UsingLibQhull:: currentDistanceEpsilon() { - if(s_qhull_output && s_qhull_output->defined()){ + if(s_qhull_output && s_qhull_output->initialized()){ return s_qhull_output->qhullQh()->DISTround*FACTORepsilon; }else if(s_has_distance_epsilon){ return s_distance_epsilon; @@ -224,7 +224,7 @@ currentDistanceEpsilon() const coordT *UsingLibQhull:: currentPoints(int *dimension, const coordT **pointsEnd) { - if(s_qhull_output && s_qhull_output->defined()){ + if(s_qhull_output && s_qhull_output->initialized()){ *dimension= qh hull_dim; *pointsEnd= qh first_point+qh num_points*qh hull_dim; return qh first_point; @@ -234,7 +234,7 @@ currentPoints(int *dimension, const coordT **pointsEnd) return s_points_begin; } throw QhullError(10059, "Qhull error: missing definition for currentPoints(). Need currentQhull() or setGlobalDistanceEpsilon()"); -}//globalPoints +}//currentPoints Qhull &UsingLibQhull:: currentQhull() @@ -245,10 +245,11 @@ currentQhull() return *s_qhull_output; }//currentQhull +// for QhullVertex::dimension() when >= 16 int UsingLibQhull:: currentVertexDimension() { - if(s_qhull_output && s_qhull_output->defined()){ + if(s_qhull_output && s_qhull_output->initialized()){ return s_qhull_output->dimension(); }else if(s_has_vertex_dimension){ return s_vertex_dimension; @@ -271,19 +272,19 @@ globalPoints(int *dimension, const coordT **pointsEnd) bool UsingLibQhull:: hasPoints() { - return s_has_points || (s_qhull_output && s_qhull_output->defined()); + return s_has_points || (s_qhull_output && s_qhull_output->initialized()); } bool UsingLibQhull:: hasVertexDimension() { - return s_has_vertex_dimension || (s_qhull_output && s_qhull_output->defined()); + return s_has_vertex_dimension || (s_qhull_output && s_qhull_output->initialized()); } void UsingLibQhull:: setGlobals() { - if(s_qhull_output && s_qhull_output->defined()){ + if(s_qhull_output && s_qhull_output->initialized()){ QhullQh *qqh= s_qhull_output->qhullQh(); s_angle_epsilon= qqh->ANGLEround*FACTORepsilon; s_distance_epsilon= qqh->DISTround*FACTORepsilon; @@ -321,7 +322,6 @@ maybeThrowQhullMessage(int exitCode) const } }//maybeThrowQhullMessage - void UsingLibQhull:: maybeThrowQhullMessage(int exitCode, int noThrow) const { @@ -332,7 +332,6 @@ maybeThrowQhullMessage(int exitCode, int noThrow) const } }//maybeThrowQhullMessage - #//Helpers //! Return QhullError for maybeThrowFromDestructor() diff --git a/cpp/UsingLibQhull.h b/cpp/UsingLibQhull.h index c4c6469..d03e31d 100644 --- a/cpp/UsingLibQhull.h +++ b/cpp/UsingLibQhull.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.h#2 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.h#4 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -101,6 +101,7 @@ public: ~UsingLibQhull(); #//Methods +#//Access bool defined() const { return my_qhull!=0; } void maybeThrowQhullMessage(int exitCode) const; void maybeThrowQhullMessage(int exitCode, int noThrow) const; diff --git a/cpp/functionObjects.h b/cpp/functionObjects.h index e979b74..01b71d2 100644 --- a/cpp/functionObjects.h +++ b/cpp/functionObjects.h @@ -1,15 +1,16 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/functionObjects.h#4 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/functionObjects.h#6 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ #ifndef QHFUNCTIONOBJECTS_H #define QHFUNCTIONOBJECTS_H -#include <stdlib.h> // abs() +#include <stdlib.h> +#include <math.h> // abs() namespace orgQhull { #//Type diff --git a/cpp/qhulltest/Coordinates_test.cpp b/cpp/qhulltest/Coordinates_test.cpp index 7ec085a..6795b83 100644 --- a/cpp/qhulltest/Coordinates_test.cpp +++ b/cpp/qhulltest/Coordinates_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/Coordinates_test.cpp#13 $$Change: 1116 $ -** $DateTime: 2009/12/13 22:31:48 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/Coordinates_test.cpp#15 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -523,8 +523,8 @@ t_io() Coordinates c; c << 1.0 << 2.0 << 3.0; ostringstream os; - os<< "Coordinates 1-2-3\n"<< c; - cout<< os.str(); + os << "Coordinates 1-2-3\n" << c; + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("2"), 2); }//t_io diff --git a/cpp/qhulltest/PointCoordinates_test.cpp b/cpp/qhulltest/PointCoordinates_test.cpp index 482b5a8..303d68a 100644 --- a/cpp/qhulltest/PointCoordinates_test.cpp +++ b/cpp/qhulltest/PointCoordinates_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/PointCoordinates_test.cpp#11 $$Change: 1118 $ -** $DateTime: 2009/12/20 16:19:59 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/PointCoordinates_test.cpp#13 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -169,7 +169,7 @@ t_getset() QFAIL("setDimension(2) did not fail for 3-d."); }catch (const std::exception &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; } }//t_getset @@ -383,10 +383,10 @@ t_io() PointCoordinates c; c << 1.0 << 2.0 << 3.0 << 1.0 << 2.0 << 3.0; ostringstream os; - os<< "PointCoordinates 0-d\n"<< c; + os << "PointCoordinates 0-d\n" << c; c.setDimension(2); - os<< "PointCoordinates 1-3-2\n"<< c; - cout<< os.str(); + os << "PointCoordinates 1-3-2\n" << c; + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("0"), 3); QCOMPARE(s.count("2"), 4); diff --git a/cpp/qhulltest/Point_test.cpp b/cpp/qhulltest/Point_test.cpp index 648afbd..15554e4 100644 --- a/cpp/qhulltest/Point_test.cpp +++ b/cpp/qhulltest/Point_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (p) 2009-2009 p. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/Point_test.cpp#10 $$Change: 1057 $ -** $DateTime: 2009/10/22 20:38:42 $$Author: bbarber $ +** Copyright (p) 2009-2010 p. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/Point_test.cpp#11 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/qhulltest/QhullFacetList_test.cpp b/cpp/qhulltest/QhullFacetList_test.cpp index 3c4ded5..00759cc 100644 --- a/cpp/qhulltest/QhullFacetList_test.cpp +++ b/cpp/qhulltest/QhullFacetList_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetList_test.cpp#12 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetList_test.cpp#14 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -160,7 +160,7 @@ t_io() ostringstream os; os << fs.print(q.runId()); // Runs all print options os << "\nFacets only\n" << fs; // printVertices() requires a runId - cout<< os.str(); + cout << os.str(); QString facets= QString::fromStdString(os.str()); QCOMPARE(facets.count("(v"), 7+12*3*2); QCOMPARE(facets.count(QRegExp("f\\d")), 3*7 + 13*3*2); diff --git a/cpp/qhulltest/QhullFacetSet_test.cpp b/cpp/qhulltest/QhullFacetSet_test.cpp index c0e35bf..0d3d1d9 100644 --- a/cpp/qhulltest/QhullFacetSet_test.cpp +++ b/cpp/qhulltest/QhullFacetSet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetSet_test.cpp#9 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetSet_test.cpp#11 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -142,7 +142,7 @@ t_io() ostringstream os; os << fs.print(q.runId(), "Neighbors of first facet with point 0"); os << fs.printIdentifiers("\nFacet identifiers: "); - cout<< os.str(); + cout << os.str(); QString facets= QString::fromStdString(os.str()); QCOMPARE(facets.count(QRegExp(" f[0-9]")), 2+13*2); } diff --git a/cpp/qhulltest/QhullFacet_test.cpp b/cpp/qhulltest/QhullFacet_test.cpp index 5424391..9eb9bc4 100644 --- a/cpp/qhulltest/QhullFacet_test.cpp +++ b/cpp/qhulltest/QhullFacet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacet_test.cpp#27 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacet_test.cpp#30 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -90,7 +90,7 @@ t_getSet() QhullFacetListIterator i(q.facetList()); while(i.hasNext()){ const QhullFacet f= i.next(); - cout<< f.id() << endl; + cout << f.id() << endl; QCOMPARE(f.dimension(),3); QVERIFY(f.id()>0 && f.id()<=39); QVERIFY(f.isDefined()); @@ -120,7 +120,7 @@ t_getSet() int tricoplanarCount2= 0; foreach (QhullFacet f, q.facetList()){ // Qt only QhullHyperplane h= f.hyperplane(); - cout<< "Hyperplane: " << h << endl; + cout << "Hyperplane: " << h << endl; QCOMPARE(h.count(), 3); QCOMPARE(h.offset(), -0.5); double n= h.norm(); @@ -128,12 +128,12 @@ t_getSet() QhullHyperplane hi= f.innerplane(q.runId()); QCOMPARE(hi.count(), 3); double innerOffset= hi.offset()+0.5; - cout<< "InnerPlane: " << hi << "innerOffset+0.5 " << innerOffset << endl; + cout << "InnerPlane: " << hi << "innerOffset+0.5 " << innerOffset << endl; QVERIFY(innerOffset >= 0.0); QhullHyperplane ho= f.outerplane(q.runId()); QCOMPARE(ho.count(), 3); double outerOffset= ho.offset()+0.5; - cout<< "OuterPlane: " << ho << "outerOffset+0.5 " << outerOffset << endl; + cout << "OuterPlane: " << ho << "outerOffset+0.5 " << outerOffset << endl; QVERIFY(outerOffset <= 0.0); QVERIFY(outerOffset-innerOffset < 1e-7); for(int i= 0; i<3; i++){ @@ -141,7 +141,7 @@ t_getSet() QVERIFY(ho[i]==h[i]); } QhullPoint center= f.getCenter(q.runId()); - cout<< "Center: " << center << endl; + cout << "Center: " << center << endl; double d= f.distance(center); QVERIFY(d < innerOffset-outerOffset); QhullPoint center2= f.getCenter(q.runId(), qh_PRINTcentrums); @@ -162,6 +162,7 @@ t_getSet() } Qhull q3(rcube,"v Qz QR0"); // Voronoi diagram of a cube (one vertex) + UsingLibQhull::setGlobalDistanceEpsilon(1e-12); // Voronoi vertices are not necessarily within distance episilon foreach(QhullFacet f, q3.facetList()){ //Qt only if(f.isGood()){ QhullPoint p= f.voronoiVertex(q3.runId()); @@ -231,13 +232,13 @@ t_io() { Qhull q(rcube, ""); QhullFacet f= q.beginFacet(); - cout<< f; + cout << f; ostringstream os; os << f.printHeader(q.runId()); os << f.printFlags(" - flags:"); os << f.printCenter(q.runId(), qh_PRINTfacets, " - center:"); os << f.printRidges(q.runId()); - cout<< os.str(); + cout << os.str(); ostringstream os2; os2 << f.print(q.runId()); // invokes print*() QString facetString2= QString::fromStdString(os2.str()); diff --git a/cpp/qhulltest/QhullHyperplane_test.cpp b/cpp/qhulltest/QhullHyperplane_test.cpp index d1ee25c..cbb3194 100644 --- a/cpp/qhulltest/QhullHyperplane_test.cpp +++ b/cpp/qhulltest/QhullHyperplane_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2009-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullHyperplane_test.cpp#7 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullHyperplane_test.cpp#9 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -115,7 +115,7 @@ t_readonly() QhullFacet f= i.next(); QhullHyperplane h= f.hyperplane(); int id= f.id(); - cout<< "h" << id << endl; + cout << "h" << id << endl; QVERIFY(h.isDefined()); QCOMPARE(h.dimension(),3); const coordT *c= h.coordinates(); @@ -399,7 +399,7 @@ t_io() os << "Hyperplane w/ runId:\n"; os << h.print(); os << h.print(" and a message ", " offset "); - cout<< os.str(); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("1"), 3); // QCOMPARE(s.count(QRegExp("f\\d")), 3*7 + 13*3*2); diff --git a/cpp/qhulltest/QhullLinkedList_test.cpp b/cpp/qhulltest/QhullLinkedList_test.cpp index 1688fee..3c7d41b 100644 --- a/cpp/qhulltest/QhullLinkedList_test.cpp +++ b/cpp/qhulltest/QhullLinkedList_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (f) 2009-2009 f. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullLinkedList_test.cpp#11 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (f) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullLinkedList_test.cpp#13 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -321,9 +321,9 @@ t_io() RboxPoints rcube("c"); Qhull q(rcube,"QR0"); // rotated unit cube QhullVertexList vs(q.endVertex(), q.endVertex()); - std::cout<< "INFO: empty QhullVertextList" << vs << std::endl; + std::cout << "INFO: empty QhullVertextList" << vs << std::endl; QhullVertexList vs2= q.vertexList(); - std::cout<< "INFO: " << vs2 << std::endl; + std::cout << "INFO: " << vs2 << std::endl; }//t_io }//namespace orgQhull diff --git a/cpp/qhulltest/QhullPointSet_test.cpp b/cpp/qhulltest/QhullPointSet_test.cpp index d688079..e47c0a9 100644 --- a/cpp/qhulltest/QhullPointSet_test.cpp +++ b/cpp/qhulltest/QhullPointSet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (p) 2009-2009 p. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPointSet_test.cpp#5 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (p) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPointSet_test.cpp#7 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -356,10 +356,10 @@ t_io() QhullFacet f= q.firstFacet(); QhullPointSet ps= f.coplanarPoints(); QVERIFY(ps.count()>=3); // Sometimes no coplanar points - os<< "QhullPointSet from coplanarPoints\n" << ps << endl; - os<< "\nRunId\n" << ps.print(q.runId()); - os<< ps.print(q.runId(), "\nRunId w/ message\n"); - cout<< os.str(); + os << "QhullPointSet from coplanarPoints\n" << ps << endl; + os << "\nRunId\n" << ps.print(q.runId()); + os << ps.print(q.runId(), "\nRunId w/ message\n"); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("p"), 3*ps.count()+1); // QCOMPARE(s.count(QRegExp("f\\d")), 3*7 + 13*3*2); diff --git a/cpp/qhulltest/QhullPoint_test.cpp b/cpp/qhulltest/QhullPoint_test.cpp index a824d6a..42bf7fa 100644 --- a/cpp/qhulltest/QhullPoint_test.cpp +++ b/cpp/qhulltest/QhullPoint_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPoint_test.cpp#11 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPoint_test.cpp#13 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -115,7 +115,7 @@ t_readonly() while(i.hasNext()){ QhullPoint p= i.next().point(); int id= p.id(q.runId()); - cout<< "p" << id << endl; + cout << "p" << id << endl; QVERIFY(p.isDefined()); QCOMPARE(p.dimension(),3); QCOMPARE(id, p.id()); @@ -385,7 +385,7 @@ t_io() os << "Point w/ runId:\n"; os << p.print(q.runId()) << p.print(q.runId(), " and a message "); os << p.printWithIdentifier(q.runId(), " Point with id and a message "); - cout<< os.str(); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("p"), 3); // QCOMPARE(s.count(QRegExp("f\\d")), 3*7 + 13*3*2); diff --git a/cpp/qhulltest/QhullPoints_test.cpp b/cpp/qhulltest/QhullPoints_test.cpp index f502b0a..3835203 100644 --- a/cpp/qhulltest/QhullPoints_test.cpp +++ b/cpp/qhulltest/QhullPoints_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (p) 2009-2009 p. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPoints_test.cpp#14 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (p) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullPoints_test.cpp#16 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -459,18 +459,18 @@ t_io() { QhullPoints ps; ostringstream os; - os<< "Empty QhullPoints\n" << ps << endl; + os << "Empty QhullPoints\n" << ps << endl; coordT c[]= {0.0, 1.0, 2.0, 3.0, 4.0, 5.0}; QhullPoints ps2(3, 6, c); // 3-dimensional explicit - os<< "QhullPoints from c[]\n" << ps2 << endl; + os << "QhullPoints from c[]\n" << ps2 << endl; RboxPoints rcube("c"); Qhull q(rcube,"Qt QR0"); // triangulation of rotated unit cube QhullPoints ps3= q.points(); - os<< "QhullPoints\n" << ps3; - os<< "RunId\n" << ps3.print(q.runId()); - os<< ps3.print(q.runId(), "RunId w/ message\n"); - os<< ps3.printWithIdentifier(q.runId(), "RunId w/ identifiers\n"); - cout<< os.str(); + os << "QhullPoints\n" << ps3; + os << "RunId\n" << ps3.print(q.runId()); + os << ps3.print(q.runId(), "RunId w/ message\n"); + os << ps3.printWithIdentifier(q.runId(), "RunId w/ identifiers\n"); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("p"), 3*8+3); // QCOMPARE(s.count(QRegExp("f\\d")), 3*7 + 13*3*2); diff --git a/cpp/qhulltest/QhullRidge_test.cpp b/cpp/qhulltest/QhullRidge_test.cpp index 177cd93..3f89d10 100644 --- a/cpp/qhulltest/QhullRidge_test.cpp +++ b/cpp/qhulltest/QhullRidge_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullRidge_test.cpp#8 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullRidge_test.cpp#10 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -90,7 +90,7 @@ t_getSet() QhullRidgeSetIterator i(rs); while(i.hasNext()){ const QhullRidge r= i.next(); - cout<< r.id() << endl; + cout << r.id() << endl; QVERIFY(r.bottomFacet()!=r.topFacet()); QCOMPARE(r.dimension(), 2); // Ridge one-dimension less than facet QVERIFY(r.id()>=0 && r.id()<9*27); @@ -149,9 +149,9 @@ t_io() QhullRidgeSet rs= f.ridges(); QhullRidge r= rs.first(); ostringstream os; - os<< "Ridges Without runId\n"<< rs<< "Ridge\n"<< r; - os<< "Ridge with runId\n"<< r.print(q.runId()); - cout<< os.str(); + os << "Ridges Without runId\n" << rs << "Ridge\n" << r; + os << "Ridge with runId\n" << r.print(q.runId()); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count(" r"), 6+2); } diff --git a/cpp/qhulltest/QhullSet_test.cpp b/cpp/qhulltest/QhullSet_test.cpp index 31ee344..a281058 100644 --- a/cpp/qhulltest/QhullSet_test.cpp +++ b/cpp/qhulltest/QhullSet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (f) 2009-2009 f. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullSet_test.cpp#16 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (f) 2009-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullSet_test.cpp#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -389,10 +389,10 @@ t_io() QhullFacet f = q.beginFacet(); QhullFacetSet fs = f.neighborFacets(); fs.defineAs(q.qhullQh()->other_points); - cout<< "INFO: empty set" << fs << std::endl; + cout << "INFO: empty set" << fs << std::endl; QhullFacet f2 = q.beginFacet(); QhullFacetSet fs2 = f2.neighborFacets(); - cout<< "INFO: " << fs2 << std::endl; + cout << "INFO: " << fs2 << std::endl; //FIXUP do not use QhullFacetSet to test set }//t_io diff --git a/cpp/qhulltest/QhullVertexSet_test.cpp b/cpp/qhulltest/QhullVertexSet_test.cpp index a831426..06a18c8 100644 --- a/cpp/qhulltest/QhullVertexSet_test.cpp +++ b/cpp/qhulltest/QhullVertexSet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullVertexSet_test.cpp#1 $$Change: 1048 $ -** $DateTime: 2009/09/24 21:34:06 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullVertexSet_test.cpp#2 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/qhulltest/QhullVertex_test.cpp b/cpp/qhulltest/QhullVertex_test.cpp index cbc697b..4f296df 100644 --- a/cpp/qhulltest/QhullVertex_test.cpp +++ b/cpp/qhulltest/QhullVertex_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullVertex_test.cpp#8 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullVertex_test.cpp#10 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ //pre-compiled headers @@ -90,7 +90,7 @@ t_getSet() QhullVertexListIterator i(vs); while(i.hasNext()){ const QhullVertex v= i.next(); - cout<< v.id() << endl; + cout << v.id() << endl; QCOMPARE(v.dimension(),3); QVERIFY(v.id()>=0 && v.id()<9); QVERIFY(v.isDefined()); @@ -110,7 +110,7 @@ t_getSet() foreach (QhullVertex v, q.vertexList()){ // Qt only QhullPoint p= v.point(); int i= p.id(q.runId()); - cout<< "Point " << i << ":\n" << p.print(q.runId()) << endl; + cout << "Point " << i << ":\n" << p.print(q.runId()) << endl; QVERIFY(i>=0 && i<8); } } @@ -140,14 +140,14 @@ t_io() Qhull q(rcube, ""); QhullVertex v= q.beginVertex(); ostringstream os; - os<< "Vertex and vertices w/o runId:\n"; - os<< v; + os << "Vertex and vertices w/o runId:\n"; + os << v; QhullVertexSet vs= q.firstFacet().vertices(); - os<< vs; + os << vs; os << "Vertex and vertices w/ runId:\n"; os << v.print(q.runId()); os << vs.print(q.runId(), "vertices:"); - cout<< os.str(); + cout << os.str(); QString s= QString::fromStdString(os.str()); QCOMPARE(s.count("(v"), 10); } diff --git a/cpp/qhulltest/Qhull_test.cpp b/cpp/qhulltest/Qhull_test.cpp index 2300b71..9132a18 100644 --- a/cpp/qhulltest/Qhull_test.cpp +++ b/cpp/qhulltest/Qhull_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#33 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#35 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -68,7 +68,7 @@ t_construct() QCOMPARE(q.area(),0.0); QFAIL("area() did not fail."); }catch (const std::exception &e) { - cout<< "INFO : Caught " << e.what(); + cout << "INFO : Caught " << e.what(); } } { @@ -112,10 +112,10 @@ t_attribute() q.setOutputStream(&cout); q.runQhull("normals of square", 3, 4, normals, "H"); // halfspace intersect QCOMPARE(q.facetList().count(), 4); // Vertices of square - cout<< "Expecting summary of halfspace intersect\n"; + cout << "Expecting summary of halfspace intersect\n"; q.outputQhull(); q.useOutputStream= false; - cout<< "Expecting no output from qh_fprintf() in Qhull.cpp\n"; + cout << "Expecting no output from qh_fprintf() in Qhull.cpp\n"; q.outputQhull(); } }//t_attribute @@ -135,7 +135,7 @@ t_message() QFAIL("runQhull Fd did not fail."); }catch (const std::exception &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; QCOMPARE(QString::fromStdString(s).left(6), QString("QH6029")); // Cleared when copied to QhullError QVERIFY(!q.hasQhullMessage()); @@ -154,7 +154,7 @@ t_message() QCOMPARE(QString::fromStdString(q.qhullMessage()), QString("")); } { - cout<< "INFO : Error stream without output stream\n"; + cout << "INFO : Error stream without output stream\n"; Qhull q; q.setErrorStream(&cout); q.setOutputStream(0); @@ -162,7 +162,7 @@ t_message() q.runQhull(rcube, "Fd"); QFAIL("runQhull Fd did not fail."); }catch (const QhullError &e) { - cout<< "INFO : Caught " << e; + cout << "INFO : Caught " << e; QCOMPARE(e.errorCode(), 6029); } //FIXUP Qhullmessage cleared when QhullError thrown. Switched to e @@ -172,7 +172,7 @@ t_message() QVERIFY(!q.hasQhullMessage()); } { - cout<< "INFO : Error output sent to output stream without error stream\n"; + cout << "INFO : Error output sent to output stream without error stream\n"; Qhull q; q.setErrorStream(0); q.setOutputStream(&cout); @@ -181,7 +181,7 @@ t_message() QFAIL("runQhull TZ did not fail."); }catch (const std::exception &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; QCOMPARE(QString::fromAscii(s).left(6), QString("QH6023")); } //FIXUP Qhullmessage cleared when QhullError thrown. Switched to e @@ -192,7 +192,7 @@ t_message() QVERIFY(!q.hasQhullMessage()); } { - cout<< "INFO : No error stream or output stream\n"; + cout << "INFO : No error stream or output stream\n"; Qhull q; q.setErrorStream(0); q.setOutputStream(0); @@ -201,7 +201,7 @@ t_message() QFAIL("outputQhull did not fail."); }catch (const std::exception &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; QCOMPARE(QString::fromAscii(s).left(6), QString("QH6029")); } //FIXUP Qhullmessage cleared when QhullError thrown. Switched to e @@ -219,9 +219,9 @@ t_getSet() RboxPoints rcube("c"); { Qhull q; - QVERIFY(!q.defined()); + QVERIFY(!q.initialized()); q.runQhull(rcube, "s"); - QVERIFY(q.defined()); + QVERIFY(q.initialized()); QCOMPARE(q.dimension(), 3); QhullPoint p= q.origin(); QCOMPARE(p.dimension(), 3); @@ -319,9 +319,9 @@ t_modify() RboxPoints diamond("d"); Qhull q(diamond, "o"); q.setOutputStream(&cout); - cout<< "Expecting vertexList and facetList of a 3-d diamond.\n"; + cout << "Expecting vertexList and facetList of a 3-d diamond.\n"; q.outputQhull(); - cout<< "Expecting normals of a 3-d diamond.\n"; + cout << "Expecting normals of a 3-d diamond.\n"; q.outputQhull("n"); // runQhull tested in t_attribute(), t_message(), etc. }//t_modify @@ -329,14 +329,14 @@ t_modify() }//orgQhull // Redefine Qhull's usermem.c -void qh_exit(int errstatus) { - cout<< "FAIL! : Qhull called qh_exit(). Qhull's error handling not available.\n.. See the corresponding Qhull:qhull_message or setErrorStream().\n"; - exit(errstatus); +void qh_exit(int exitcode) { + cout << "FAIL! : Qhull called qh_exit(). Qhull's error handling not available.\n.. See the corresponding Qhull:qhull_message or setErrorStream().\n"; + exit(exitcode); } void qh_free(void *mem) { free(mem); } -void *qh_malloc(unsigned int size) { +void *qh_malloc(size_t size) { return malloc(size); } diff --git a/cpp/qhulltest/RboxPoints_test.cpp b/cpp/qhulltest/RboxPoints_test.cpp index 63f73a8..6dc0a12 100644 --- a/cpp/qhulltest/RboxPoints_test.cpp +++ b/cpp/qhulltest/RboxPoints_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2006-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/RboxPoints_test.cpp#16 $$Change: 1114 $ -** $DateTime: 2009/12/12 13:49:07 $$Author: bbarber $ +** Copyright (C) 2006-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/RboxPoints_test.cpp#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ //pre-compiled headers @@ -74,7 +74,7 @@ t_error() QFAIL("'D0 c' did not fail."); }catch (const std::exception &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; QCOMPARE(QString(s).left(6), QString("QH6189")); QVERIFY(rp.hasRboxMessage()); QCOMPARE(QString::fromStdString(rp.rboxMessage()).left(8), QString("rbox err")); @@ -88,7 +88,7 @@ t_error() QFAIL("setDimension(-1) did not fail."); }catch (const RoadError &e) { const char *s= e.what(); - cout<< "INFO : Caught " << s; + cout << "INFO : Caught " << s; QCOMPARE(QString(s).left(7), QString("QH10062")); QCOMPARE(e.errorCode(), 10062); QCOMPARE(QString::fromStdString(e.what()), QString(s)); @@ -120,7 +120,7 @@ t_getSet() rp.setDimension(102); QFAIL("setDimension(102) did not fail."); }catch (const std::exception &e) { - cout<< "INFO : Caught " << e.what(); + cout << "INFO : Caught " << e.what(); } QCOMPARE(rp.newCount(), 0); rp.appendPoints("D2 P1 P2"); @@ -180,7 +180,7 @@ t_change() rp.appendPoints(s2); QFAIL("incomplete appendPoints() did not fail."); }catch (const std::exception &e) { - cout<< "INFO : Caught " << e.what(); + cout << "INFO : Caught " << e.what(); } RboxPoints rp2; rp2.append(rp); diff --git a/cpp/qhulltest/UsingLibQhull_test.cpp b/cpp/qhulltest/UsingLibQhull_test.cpp index 53855f7..67a72b0 100644 --- a/cpp/qhulltest/UsingLibQhull_test.cpp +++ b/cpp/qhulltest/UsingLibQhull_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/UsingLibQhull_test.cpp#2 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/UsingLibQhull_test.cpp#4 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -98,10 +98,10 @@ t_classMembers() QCOMPARE(UsingLibQhull::globalDistanceEpsilon()+1.0, 1.0); UsingLibQhull::unsetGlobals(); try{ - cout<< UsingLibQhull::globalVertexDimension(); + cout << UsingLibQhull::globalVertexDimension(); QFAIL("Did not throw error for undefined dimension."); }catch(const std::exception &e){ - cout<< "INFO Caught error -- " << e.what() << endl; + cout << "INFO Caught error -- " << e.what() << endl; } }//t_classMembers @@ -151,7 +151,7 @@ t_globalPoints() pointsBegin3= UsingLibQhull::globalPoints(&dimension3, &pointsEnd3); QFAIL("Did not throw error for undefined global points."); }catch(const std::exception &e){ - cout<< "INFO Caught error -- " << e.what() << endl; + cout << "INFO Caught error -- " << e.what() << endl; } }//t_globalPoints @@ -167,7 +167,7 @@ t_UsingLibQhull() UsingLibQhull uq2(&q2); QFAIL("UsingLibQhull did not fail."); }catch (const std::exception &e) { - cout<< "INFO : Caught " << e.what(); + cout << "INFO : Caught " << e.what(); } } Qhull q3; @@ -185,14 +185,14 @@ t_methods() u.maybeThrowQhullMessage(1); QFAIL("maybeThrowQhullMessage(1) did not fail."); }catch (const std::exception &e) { - cout<< "INFO : Caught " << e.what(); + cout << "INFO : Caught " << e.what(); } // Can not check checkRunId() in maybeThrowQhullMessage(). Requires another thread. u.maybeThrowQhullMessage(2, UsingLibQhull::NOthrow); try{ throw QhullError(10054, "Report previous NOthrow error"); }catch (const std::exception &e) { - cout<< "INFO : " << e.what(); + cout << "INFO : " << e.what(); } }//t_methods diff --git a/cpp/qhulltest/qhulltest.cpp b/cpp/qhulltest/qhulltest.cpp index 43dcea7..485d3b0 100644 --- a/cpp/qhulltest/qhulltest.cpp +++ b/cpp/qhulltest/qhulltest.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/qhulltest.cpp#50 $$Change: 1118 $ -** $DateTime: 2009/12/20 16:19:59 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/qhulltest/qhulltest.cpp#52 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -57,15 +57,15 @@ int main(int argc, char *argv[]) try{ status= RoadTest::runTests(args); }catch(const std::exception &e){ - cout<< "FAIL! : runTests() did not catch error\n"; - cout<< e.what() << endl; + cout << "FAIL! : runTests() did not catch error\n"; + cout << e.what() << endl; if(!RoadError::emptyGlobalLog()){ - cout<< RoadError::stringGlobalLog() << endl; + cout << RoadError::stringGlobalLog() << endl; RoadError::clearGlobalLog(); } } if(!RoadError::emptyGlobalLog()){ - cout<< RoadError::stringGlobalLog() << endl; + cout << RoadError::stringGlobalLog() << endl; RoadError::clearGlobalLog(); } return status; diff --git a/cpp/road/RoadError.cpp b/cpp/road/RoadError.cpp index 3cbb0f5..6126a5a 100644 --- a/cpp/road/RoadError.cpp +++ b/cpp/road/RoadError.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadError.cpp#13 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadError.cpp#14 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/road/RoadError.h b/cpp/road/RoadError.h index c45c5b5..3f2123f 100644 --- a/cpp/road/RoadError.h +++ b/cpp/road/RoadError.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#16 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#18 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -81,6 +81,6 @@ public: #//Global functions -inline std::ostream &operator<<(std::ostream &os, const orgQhull::RoadError &e) { return os<< e.what(); } +inline std::ostream &operator<<(std::ostream &os, const orgQhull::RoadError &e) { return os << e.what(); } #endif // ROADERROR_H diff --git a/cpp/road/RoadLogEvent.cpp b/cpp/road/RoadLogEvent.cpp index 31b56d8..790872f 100644 --- a/cpp/road/RoadLogEvent.cpp +++ b/cpp/road/RoadLogEvent.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadLogEvent.cpp#9 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadLogEvent.cpp#11 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -30,9 +30,9 @@ toString(const char *tag, int code) const { ostringstream os; if(tag && code){ - os<< tag << code; + os << tag << code; if(format_string){ - os<< " "; + os << " "; } } if(!format_string){ @@ -44,58 +44,58 @@ toString(const char *tag, int code) const char extraCode= '\0'; while(*s){ if(*s!='%'){ - os<< *s++; + os << *s++; }else{ char c= *++s; s++; switch(c){ case 'd': if(++dCount>2){ - os<< " ERROR_three_%d_in_format "; + os << " ERROR_three_%d_in_format "; }else if(dCount==2){ - os<< int_2; + os << int_2; }else{ - os<< int_1; + os << int_1; } break; case 'e': if(firstExtraCode(os, c, &extraCode)){ - os<< double_1; + os << double_1; } break; case 'f': if(++fCount>1){ - os<< " ERROR_two_%f_in_format "; + os << " ERROR_two_%f_in_format "; }else{ - os<< float_1; + os << float_1; } break; case 'i': if(firstExtraCode(os, c, &extraCode)){ - os<< int64_1; + os << int64_1; } break; case 's': if(firstExtraCode(os, c, &extraCode)){ - os<< cstr_1; + os << cstr_1; } break; case 'x': if(firstExtraCode(os, c, &extraCode)){ - os<< void_1; + os << void_1; } break; case '%': - os<< c; + os << c; break; default: - os<< " ERROR_%" << c << "_not_defined_in_format"; + os << " ERROR_%" << c << "_not_defined_in_format"; break; } } } if(s[-1]!='\n'){ - os<< endl; + os << endl; } return os.str(); }//toString @@ -106,7 +106,7 @@ toString(const char *tag, int code) const bool RoadLogEvent:: firstExtraCode(std::ostream &os, char c, char *extraCode){ if(*extraCode){ - os<< " ERROR_%" << *extraCode << "_and_%" << c << "_in_format "; + os << " ERROR_%" << *extraCode << "_and_%" << c << "_in_format "; return false; } *extraCode= c; diff --git a/cpp/road/RoadLogEvent.h b/cpp/road/RoadLogEvent.h index 44f0510..b31b61d 100644 --- a/cpp/road/RoadLogEvent.h +++ b/cpp/road/RoadLogEvent.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadLogEvent.h#9 $$Change: 1094 $ -** $DateTime: 2009/11/24 20:04:16 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadLogEvent.h#10 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/road/RoadTest.cpp b/cpp/road/RoadTest.cpp index 2f7fd93..05e129b 100644 --- a/cpp/road/RoadTest.cpp +++ b/cpp/road/RoadTest.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadTest.cpp#9 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadTest.cpp#11 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ @@ -63,18 +63,18 @@ runTests(QStringList arguments) try{ result += QTest::qExec(testcase, arguments); }catch(const std::exception &e){ - cout<< "FAIL! : Threw error "; - cout<< e.what() << endl; + cout << "FAIL! : Threw error "; + cout << e.what() << endl; s_test_count++; testcase->recordFailedTest(); // Qt 4.5.2 OK. In Qt 4.3.3, qtestcase did not clear currentTestObject } } if(s_test_fail){ - cout<< "Failed " << s_test_fail << " of " << s_test_count << " tests.\n"; - cout<< s_failed_tests.join("\n").toLocal8Bit().constData() << std::endl; + cout << "Failed " << s_test_fail << " of " << s_test_count << " tests.\n"; + cout << s_failed_tests.join("\n").toLocal8Bit().constData() << std::endl; }else{ - cout<< "Passed " << s_test_count << " tests.\n"; + cout << "Passed " << s_test_count << " tests.\n"; } return result; }//runTests diff --git a/cpp/road/RoadTest.h b/cpp/road/RoadTest.h index 4a3e5f7..e99aeff 100644 --- a/cpp/road/RoadTest.h +++ b/cpp/road/RoadTest.h @@ -1,8 +1,8 @@ /**************************************************************************** ** -** Copyright (C) 2008-2009 C. Bradford Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadTest.h#12 $$Change: 1111 $ -** $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ +** Copyright (C) 2008-2010 C. Bradford Barber. All rights reserved. +** $Id: //product/qhull/main/rel/cpp/road/RoadTest.h#13 $$Change: 1137 $ +** $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ ** ****************************************************************************/ diff --git a/cpp/user_eg3.cpp b/cpp/user_eg3.cpp index 9957a02..88111ef 100644 --- a/cpp/user_eg3.cpp +++ b/cpp/user_eg3.cpp @@ -51,7 +51,7 @@ For example\n\ int main(int argc, char **argv) { if(argc==1){ - cout<< prompt; + cout << prompt; return 1; } try{ @@ -70,7 +70,7 @@ int user_eg3(int argc, char **argv) Qhull qhull; qhull.runQhull(rbox, ""); QhullFacetList facets= qhull.facetList(); - cout<< facets; + cout << facets; return 0; } RboxPoints rbox; @@ -125,7 +125,7 @@ int user_eg3(int argc, char **argv) } }//foreach argv if(readingRbox){ - cout<< rbox; + cout << rbox; return 0; } if(readingQhull==1){ // e.g., rbox 10 qhull @@ -143,7 +143,7 @@ int user_eg3(int argc, char **argv) return 0; } QhullFacetList facets= qhull.facetList(); - cout<< "\nFacets created by Qhull::runQhull()\n" << facets; + cout << "\nFacets created by Qhull::runQhull()\n" << facets; return 0; }//user_eg3 diff --git a/html/index.htm b/html/index.htm index 75026cf..4c83335 100644 --- a/html/index.htm +++ b/html/index.htm @@ -635,14 +635,9 @@ href="http://www.qhull.org/news">qhull-news.html</a>.</p> <h2><a href="#TOC">»</a><a name="authors">Authors</a></h2> <blockquote> -<pre> C. Bradford Barber Hannu Huhdanpaa - bradb@qhull.org hannu@qhull.org - - c/o The Geometry Center - University of Minnesota - 400 Lind Hall - 207 Church Street S.E. - Minneapolis, MN 55455 +<pre> + C. Bradford Barber Hannu Huhdanpaa + bradb@shore.net hannu@qhull.org </pre> </blockquote> @@ -683,10 +678,10 @@ Computing Surveys</i>, 1991, 23:345-405. </p> <p><a name="bar-dob96">Barber</a>, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," <i>ACM -Transactions on Mathematical Software</i>, 22(4):469-483, www.qhull.org +Transactions on Mathematical Software</i>, 22(4):469-483, Dec 1996, www.qhull.org [<a href="http://www.acm.org/pubs/citations/journals/toms/1996-22-4/p469-barber/">http://www.acm.org</a>; -<a href="http://citeseer.nj.nec.com/83502.html">http://citeseer.nj.nec.com</a>]. +<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345">http://citeseerx.ist.psu.edu</a>]. </p> <p><a name="cla-sho89">Clarkson</a>, K.L. and P.W. Shor, diff --git a/html/qconvex.htm b/html/qconvex.htm index 764d0cd..3b27f0f 100644 --- a/html/qconvex.htm +++ b/html/qconvex.htm @@ -130,7 +130,7 @@ in 5-d and higher. It disables the following Qhull <a href=qh-quick.htm#options>options</a>: <i>d v H Qbb Qf Qg Qm Qr Qu Qv Qx Qz TR E V Fp Gt Q0,etc</i>. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qdelau_f.htm b/html/qdelau_f.htm index 06dde1e..1cce267 100644 --- a/html/qdelau_f.htm +++ b/html/qdelau_f.htm @@ -114,7 +114,7 @@ in 4-d and higher. It disables the following Qhull Qm Qr QR Qv Qx TR E V FC Fi Fo Fp FV Q0,etc</i>. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qdelaun.htm b/html/qdelaun.htm index 2772f85..302344a 100644 --- a/html/qdelaun.htm +++ b/html/qdelaun.htm @@ -117,7 +117,7 @@ in 4-d and higher. It disables the following Qhull Qm Qr QR Qv Qx TR E V FC Fi Fo Fp Ft FV Q0,etc</i>. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-code.htm b/html/qh-code.htm index 02330f8..ab06522 100644 --- a/html/qh-code.htm +++ b/html/qh-code.htm @@ -37,7 +37,7 @@ height="100"></a> Qhull code</h1> <p>This section discusses the code for Qhull. </p> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> @@ -444,7 +444,7 @@ Boost Graph Library [aka GGCL] provides C++ classes for graph data structures and algorithms [Dr. Dobb's 9/00 p. 29-38; OOPSLA '99 p. 399-414]. It is modelled after the Standard Template Library. It would provide a good interface to Qhull. If you are interested in adapting BGL to Qhull, please contact -<a href="mailto:bradb@qhull.org">bradb@qhull.org</a>. +<a href="mailto:bradb@shore.net">bradb@shore.net</a>. <p>See <a href="../src/index.htm">Qhull functions, macros, and data structures</a> for internal documentation of Qhull. The diff --git a/html/qh-eg.htm b/html/qh-eg.htm index 168221b..9e37a09 100644 --- a/html/qh-eg.htm +++ b/html/qh-eg.htm @@ -48,7 +48,7 @@ test examples, and <tt>eg/q_test</tt> exercises the code. If you find yourself viewing the inside of a 3-d example, use Geomview's normalization option on the 'obscure' menu.</p> -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-faq.htm b/html/qh-faq.htm index 2800611..d5e535c 100644 --- a/html/qh-faq.htm +++ b/html/qh-faq.htm @@ -73,7 +73,7 @@ using joggled input ('<A href="qh-optq.htm#QJn">QJ</A>'). 2003/12/30 <!-- --> </i></p> -<p><b>Copyright © 1998-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1998-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-impre.htm b/html/qh-impre.htm index 4bfa8af..39c5b00 100644 --- a/html/qh-impre.htm +++ b/html/qh-impre.htm @@ -46,7 +46,7 @@ convex. It verifies that all points are on or below all facets. </p> <p>Qhull automatically tests for convexity if it detects precision errors while constructing the hull. </p> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optc.htm b/html/qh-optc.htm index 7a9ef15..a5fb10e 100644 --- a/html/qh-optc.htm +++ b/html/qh-optc.htm @@ -29,7 +29,7 @@ height="100"></a> Qhull precision options</h1> This section lists the precision options for Qhull. These options are indicated by an upper-case letter followed by a number. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optf.htm b/html/qh-optf.htm index 22f45fc..bfe2ac8 100644 --- a/html/qh-optf.htm +++ b/html/qh-optf.htm @@ -30,7 +30,7 @@ are indicated by 'F' followed by a letter. See <A and <A href="qh-optg.htm#geomview">Geomview</a> for other output options. </p> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optg.htm b/html/qh-optg.htm index 680489b..c6b9852 100644 --- a/html/qh-optg.htm +++ b/html/qh-optg.htm @@ -33,7 +33,7 @@ indicated by 'G' followed by a letter. See and <a href="qh-optf.htm#format">Format</a> for other output options. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-opto.htm b/html/qh-opto.htm index 309d1a9..8a396f1 100644 --- a/html/qh-opto.htm +++ b/html/qh-opto.htm @@ -33,7 +33,7 @@ href="qh-optp.htm#print">Print</a>, and <a href="qh-optg.htm#geomview">Geomview</a> for other output options. </p> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optp.htm b/html/qh-optp.htm index 8f5891f..17b584c 100644 --- a/html/qh-optp.htm +++ b/html/qh-optp.htm @@ -32,7 +32,7 @@ indicated by 'P' followed by a letter. See and <a href="qh-optf.htm#format">Format</a> for other output options. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optq.htm b/html/qh-optq.htm index 3d02d6d..9903d9c 100644 --- a/html/qh-optq.htm +++ b/html/qh-optq.htm @@ -29,7 +29,7 @@ height="100"></a> Qhull control options (Q)</h1> <p>This section lists the control options for Qhull. These options are indicated by 'Q' followed by a letter. </p> -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-optt.htm b/html/qh-optt.htm index 7efc749..8f09661 100644 --- a/html/qh-optt.htm +++ b/html/qh-optt.htm @@ -29,7 +29,7 @@ height="100"></a> Qhull trace options (T)</h1> This section lists the trace options for Qhull. These options are indicated by 'T' followed by a letter. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qh-quick.htm b/html/qh-quick.htm index 2ddbfde..b74338b 100644 --- a/html/qh-quick.htm +++ b/html/qh-quick.htm @@ -38,7 +38,7 @@ height="100"></a> Qhull quick reference</h1> This section lists all programs and options in Qhull. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <p> <a name="programs"> </a> diff --git a/html/qhalf.htm b/html/qhalf.htm index d0036b7..723b773 100644 --- a/html/qhalf.htm +++ b/html/qhalf.htm @@ -103,7 +103,7 @@ in 5-d and higher. It disables the following Qhull Qr QR Qv Qx Qz TR E V Fa FA FC FD FS Ft FV Gt Q0,etc</i>. -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <h3><a href="#TOP">»</a><a name="synopsis">qhalf synopsis</a></h3> diff --git a/html/qhull-cpp.xml b/html/qhull-cpp.xml index 0cd5cae..2d77d1f 100644 --- a/html/qhull-cpp.xml +++ b/html/qhull-cpp.xml @@ -6,11 +6,11 @@ xmlns:rf="http://schemas.roadintranet.org/road-faq-1" title=" C++ interface to Qhull" file="qhull-cpp.xml" - fileid="$Id: //product/qhull/main/rel/html/qhull-cpp.xml#21 $$Change: 1083 $" - fileChange="$DateTime: 2009/11/18 22:43:17 $$Author: bbarber $"> + fileid="$Id: //product/qhull/main/rel/html/qhull-cpp.xml#22 $$Change: 1137 $" + fileChange="$DateTime: 2010/01/02 21:58:11 $$Author: bbarber $"> <div><h4>Qhull C++ -- C++ interface to Qhull</h4></div> <rf:copyright> - <a href="../cpp/COPYING.txt">Copyright</a> (c) 2009-2009, C. Bradford Barber + <a href="../cpp/COPYING.txt">Copyright</a> (c) 2009-2010, C. Bradford Barber </rf:copyright> <rf:section id="cpp-cpp-links" title="Useful Links for Qhull C++"> <div> diff --git a/html/qhull.htm b/html/qhull.htm index b25a569..6d934f6 100644 --- a/html/qhull.htm +++ b/html/qhull.htm @@ -116,7 +116,7 @@ hull contains non-simplicial facets (e.g., a hypercube). See are there extra points in a 4-d or higher convex hull?</a><br> </p> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/html/qhull.man b/html/qhull.man index 5b0f723..ea845e4 100644 --- a/html/qhull.man +++ b/html/qhull.man @@ -1,17 +1,17 @@ -./" This is the Unix manual page for qhull, written in nroff, the standard -./" manual formatter for Unix systems. To format it, type -./" -./" nroff -man qhull.man -./" -./" This will print a formatted copy to standard output. If you want -./" to ensure that the output is plain ASCII, free of any control -./" characters that nroff uses for underlining etc, pipe the output -./" through "col -b": -./" -./" nroff -man qhull.man | col -b -./" -./" Warning: a leading quote "'" or dot "." will not format correctly -./" +.\" This is the Unix manual page for qhull, written in nroff, the standard +.\" manual formatter for Unix systems. To format it, type +.\" +.\" nroff -man qhull.man +.\" +.\" This will print a formatted copy to standard output. If you want +.\" to ensure that the output is plain ASCII, free of any control +.\" characters that nroff uses for underlining etc, pipe the output +.\" through "col -b": +.\" +.\" nroff -man qhull.man | col -b +.\" +.\" Warning: a leading quote "'" or dot "." will not format correctly +.\" .TH qhull 1 "2003/12/30" "Geometry Center" .SH NAME qhull \- convex hull, Delaunay triangulation, Voronoi diagram, @@ -90,16 +90,16 @@ any mismatches with Qhull's html manual (index.htm). .PP .SH INTRODUCTION Qhull is a general dimension code for computing convex hulls, Delaunay -triangulations, Voronoi diagram, furthest-site Voronoi diagram, -furthest-site Delaunay triangulations, and +triangulations, Voronoi diagram, furthest\[hy]site Voronoi diagram, +furthest\[hy]site Delaunay triangulations, and halfspace intersections about a point. It implements the Quickhull algorithm for -computing the convex hull. Qhull handles round-off errors from floating +computing the convex hull. Qhull handles round\[hy]off errors from floating point arithmetic. It can approximate a convex hull. The program includes options for hull volume, facet area, partial hulls, input transformations, randomization, tracing, multiple output formats, and execution statistics. The program can be called from within your application. -You can view the results in 2-d, 3-d and 4-d with Geomview. +You can view the results in 2\[hy]d, 3\[hy]d and 4\[hy]d with Geomview. .PP .SH DESCRIPTION .PP @@ -107,7 +107,7 @@ The format of input is the following: first line contains the dimension, second line contains the number of input points, and point coordinates follow. The dimension and number of points can be reversed. Comments and line breaks are ignored. A comment starts with a -non-numeric character and continues to the end of line. The first comment +non\[hy]numeric character and continues to the end of line. The first comment is reported in summaries and statistics. Error reporting is better if there is one point per line. @@ -116,7 +116,7 @@ The default printout option is a short summary. There are many other output formats. .PP Qhull implements the Quickhull algorithm for convex hull. This algorithm combines -the 2-d Quickhull algorithm with the n-d beneath-beyond algorithm +the 2\[hy]d Quickhull algorithm with the n\[hy]d beneath\[hy]beyond algorithm [c.f., Preparata & Shamos '85]. It is similar to the randomized algorithms of Clarkson and others [Clarkson et al. '93]. The main @@ -125,12 +125,12 @@ space requirements, and automatic handling of precision problems. .PP The data structure produced by Qhull consists of vertices, ridges, and facets. A vertex is a point of the input set. A ridge is a set of d vertices -and two neighboring facets. For example in 3-d, a ridge is an edge of the +and two neighboring facets. For example in 3\[hy]d, a ridge is an edge of the polyhedron. A facet is a set of ridges, a set of neighboring facets, a set of incident vertices, and a hyperplane equation. For simplicial facets, the ridges are defined by the vertices and neighboring facets. When Qhull -merges two facets, it produces a non-simplicial -facet. A non-simplicial facet has more than d neighbors and may share more than +merges two facets, it produces a non\[hy]simplicial +facet. A non\[hy]simplicial facet has more than d neighbors and may share more than one ridge with a neighbor. .PP .SH IMPRECISION @@ -139,12 +139,12 @@ Since Qhull uses floating point arithmetic, roundoff error may occur for each calculation. This causes problems for most geometric algorithms. .PP -Qhull automatically sets option 'C-0' in 2-d, 3-d, and 4-d, or -option 'Qx' in 5-d and higher. These options handle precision problems +Qhull automatically sets option 'C\-0' in 2\[hy]d, 3\[hy]d, and 4\[hy]d, or +option 'Qx' in 5\[hy]d and higher. These options handle precision problems by merging facets. Alternatively, use option 'QJ' to joggle the input. .PP -With 'C-0', Qhull merges non-convex +With 'C\-0', Qhull merges non\[hy]convex facets while constructing the hull. The remaining facets are clearly convex. With 'Qx', Qhull merges coplanar horizon facets, flipped facets, concave facets and @@ -159,7 +159,7 @@ merging will not occur. .PP To get a list of the most important options, execute 'qhull' by itself. To get a complete list of options, -execute 'qhull -'. +execute 'qhull \-'. To get a complete, concise list of options, execute 'qhull .'. Options can be in any order. @@ -179,7 +179,7 @@ d Compute the Delaunay triangulation by lifting the input points to a paraboloid. The 'o' option prints the input points and facets. The 'QJ' option guarantees triangular output. The 'Ft' -option prints a triangulation. It adds points (the centrums) to non-simplicial +option prints a triangulation. It adds points (the centrums) to non\[hy]simplicial facets. .TP v @@ -191,7 +191,7 @@ site ID order. The 'Fv' option prints each ridge of the Voronoi diagram. The first or zero'th vertex indicates the infinity vertex. Its coordinates are -qh_INFINITE (-10.101). It indicates unbounded Voronoi +qh_INFINITE (\-10.101). It indicates unbounded Voronoi regions or degenerate Delaunay triangles. .TP Hn,n,... @@ -212,21 +212,21 @@ the second number is "1", and the coordinates complete a line. The 'FV' option produces a feasible point for a convex hull. .TP d Qu -Compute the furthest-site Delaunay triangulation from the upper +Compute the furthest\[hy]site Delaunay triangulation from the upper convex hull. The 'o' option prints the input points and facets. -The 'QJ' option guarantees triangular otuput. You can also use -'Ft' to triangulate via the centrums of non-simplicial +The 'QJ' option guarantees triangular otuput. You can also use 'Ft' +to triangulate via the centrums of non\[hy]simplicial facets. .TP v Qu -Compute the furthest-site Voronoi diagram. +Compute the furthest\[hy]site Voronoi diagram. The 'p' option prints the Voronoi vertices. The 'o' option prints the Voronoi vertices and the vertices in each Voronoi region. The 'Fv' option prints each ridge of the Voronoi diagram. The first or zero'th vertex indicates the infinity vertex at infinity. Its coordinates are -qh_INFINITE (-10.101). It indicates unbounded Voronoi regions +qh_INFINITE (\-10.101). It indicates unbounded Voronoi regions and degenerate Delaunay triangles. .PP .TP @@ -249,23 +249,23 @@ i Output the incident vertices for each facet. Qhull prints the number of facets followed by the vertices of each facet. One facet is printed per line. The numbers -are the 0-relative indices of the corresponding input points. +are the 0\[hy]relative indices of the corresponding input points. The facets are oriented. -In 4-d and higher, -Qhull triangulates non-simplicial facets. Each apex (the first vertex) is +In 4d and higher, +Qhull triangulates non\[hy]simplicial facets. Each apex (the first vertex) is a created point that corresponds to the facet's centrum. Its index is greater than the indices of the input points. Each base corresponds to a simplicial ridge between two facets. To print the vertices without triangulation, use option 'Fv'. .TP m -Output the hull in Mathematica format. Qhull writes a Mathematica file for 2-d and 3-d -convex hulls and for 2-d Delaunay triangulations. Qhull produces a list of objects +Output the hull in Mathematica format. Qhull writes a Mathematica file for 2\[hy]d and 3\[hy]d +convex hulls and for 2\[hy]d Delaunay triangulations. Qhull produces a list of objects that you can assign to a variable in Mathematica, for example: -"list= << <outputfilename> ". If the object is 2-d, it can be -visualized by "Show[Graphics[list]] ". For 3-d objects the command is +"list= << <outputfilename> ". If the object is 2\[hy]d, it can be +visualized by "Show[Graphics[list]] ". For 3\[hy]d objects the command is "Show[Graphics3D[list]]". .TP n @@ -281,10 +281,10 @@ of facets, and number of ridges. Then it prints the coordinates of the input points and the vertices for each facet. Each facet is on a separate line. The first number is the number of vertices. The remainder are the indices of the corresponding points. The vertices are -oriented in 2-d, 3-d, and in simplicial facets. +oriented in 2\[hy]d, 3\[hy]d, and in simplicial facets. -For 2-d Voronoi diagrams, -the vertices are sorted by adjacency, but not oriented. In 3-d and higher, +For 2\[hy]d Voronoi diagrams, +the vertices are sorted by adjacency, but not oriented. In 3\[hy]d and higher, the Voronoi vertices are sorted by index. See the 'v' option for more information. .TP @@ -306,7 +306,7 @@ number of good facets (if 'Pg'), and statistics. The last two statistics (if needed) measure the maximum distance from a point or vertex to a facet. The number in parenthesis (e.g., 2.1x) is the ratio between the -maximum distance and the worst-case distance due to merging +maximum distance and the worst\[hy]case distance due to merging two simplicial facets. .PP .TP @@ -317,45 +317,45 @@ Maximum angle given as a cosine. If the angle between a pair of facet normals is greater than n, Qhull merges one of the facets into a neighbor. If 'n' is negative, Qhull tests angles after adding -each point to the hull (pre-merging). +each point to the hull (pre\[hy]merging). If 'n' is positive, Qhull tests angles after -constructing the hull (post-merging). -Both pre- and post-merging can be defined. +constructing the hull (post\[hy]merging). +Both pre\[hy] and post\[hy]merging can be defined. -Option 'C0' or 'C-0' is set if the corresponding 'Cn' or 'C-n' +Option 'C0' or 'C\-0' is set if the corresponding 'Cn' or 'C\-n' is not set. If 'Qx' -is set, then 'A-n' and 'C-n' are checked after the hull is constructed +is set, then 'A\-n' and 'C\-n' are checked after the hull is constructed and before 'An' and 'Cn' are checked. .TP Cn Centrum radius. If a centrum is less than n below a neighboring facet, Qhull merges one of the facets. -If 'n' is negative or '-0', Qhull tests and merges facets after adding -each point to the hull. This is called "pre-merging". If 'n' is positive, -Qhull tests for convexity after constructing the hull ("post-merging"). -Both pre- and post-merging can be defined. +If 'n' is negative or '\-0', Qhull tests and merges facets after adding +each point to the hull. This is called "pre\[hy]merging". If 'n' is positive, +Qhull tests for convexity after constructing the hull ("post\[hy]merging"). +Both pre\[hy] and post\[hy]merging can be defined. -For 5-d and higher, 'Qx' should be used -instead of 'C-n'. Otherwise, most or all facets may be merged +For 5\[hy]d and higher, 'Qx' should be used +instead of 'C\-n'. Otherwise, most or all facets may be merged together. .TP En Maximum roundoff error for distance computations. .TP Rn -Randomly perturb distance computations up to +/- n * max_coord. +Randomly perturb distance computations up to +/\- n * max_coord. This option perturbs every distance, hyperplane, and angle computation. -To use time as the random number seed, use option 'QR-1'. +To use time as the random number seed, use option 'QR\-1'. .TP Vn Minimum distance for a facet to be visible. A facet is visible if the distance from the point to the facet is greater than 'Vn'. -Without merging, the default value for 'Vn' is the round-off error ('En'). -With merging, the default value is the pre-merge centrum ('C-n') in 2-d or -3--d, or three times that in other dimensions. If the outside width +Without merging, the default value for 'Vn' is the round\[hy]off error ('En'). +With merging, the default value is the pre\[hy]merge centrum ('C\-n') in 2\[hy]d or +3\[hy]d, or three times that in other dimensions. If the outside width is specified ('Wn'), the maximum, default value for 'Vn' is 'Wn'. .TP Un @@ -366,9 +366,9 @@ Wn Minimum outside width of the hull. Points are added to the convex hull only if they are clearly outside of a facet. A point is outside of a facet if its distance to the facet is greater than 'Wn'. The normal -value for 'Wn' is 'En'. If the user specifies pre-merging and +value for 'Wn' is 'En'. If the user specifies pre\[hy]merging and does not set 'Wn', than 'Wn' is set -to the premerge 'Cn' and maxcoord*(1-An). +to the premerge 'Cn' and maxcoord*(1\-An). .PP .TP Additional input/output formats @@ -380,14 +380,14 @@ For Voronoi diagrams, the area is the area of the dual facet. Use 'PAn' for printing the n largest facets, and option 'PFn' for printing facets larger than 'n'. -The area for non-simplicial facets is the sum of the +The area for non\[hy]simplicial facets is the sum of the areas for each ridge to the centrum. Vertices far below the facet's hyperplane are ignored. The reported area may be significantly less than the actual area. .TP FA Compute the total area and volume for option 's'. It is an approximation -for non-simplicial facets (see 'Fa'). +for non\[hy]simplicial facets (see 'Fa'). .TP Fc Print coplanar points for each facet. The output starts with the @@ -435,8 +435,8 @@ of ridges. Then each hyperplane is printed, one per line. A line starts with the number of indices and floats. The first pair lists adjacent input sites, the next d floats are the normalized coefficients for the hyperplane, -and the last float is the offset. The hyperplane is oriented toward -'QVn' (if defined), or the first input site of the pair. Use 'Tv' to +and the last float is the offset. The hyperplane is oriented toward 'QVn' +(if defined), or the first input site of the pair. Use 'Tv' to verify that the hyperplanes are perpendicular bisectors. Use 'Fo' for unbounded regions, and 'Fv' for the corresponding Voronoi vertices. .TP @@ -449,8 +449,8 @@ a facet. See 'PMn' for printing the facets with the most merges. .TP FM Output the hull in Maple format. Qhull writes a Maple -file for 2-d and 3-d -convex hulls and for 2-d Delaunay triangulations. Qhull produces a '.mpl' +file for 2\[hy]d and 3\[hy]d +convex hulls and for 2\[hy]d Delaunay triangulations. Qhull produces a '.mpl' file for displaying with display3d(). .TP Fn @@ -486,8 +486,8 @@ of ridges. Then each hyperplane is printed, one per line. A line starts with the number of indices and floats. The first pair lists adjacent input sites, the next d floats are the normalized coefficients for the hyperplane, -and the last float is the offset. The hyperplane is oriented toward -'QVn' (if defined), or the first input site of the pair. Use 'Tv' to +and the last float is the offset. The hyperplane is oriented toward 'QVn' +(if defined), or the first input site of the pair. Use 'Tv' to verify that the hyperplanes are perpendicular bisectors. Use 'Fi' for bounded regions, and 'Fv' for the corresponding Voronoi vertices. .TP @@ -498,7 +498,7 @@ are printed to stdout. Fp Print points for halfspace intersections (option 'Hn,n,...'). Each intersection corresponds to a facet of the dual polytope. -The "infinity" point [-10.101,-10.101,...] +The "infinity" point [\-10.101,\-10.101,...] indicates an unbounded intersection. .TP FP @@ -530,15 +530,14 @@ versions of Qhull may produce additional integers or reals. The total volume measures the volume of the intersection of the halfspaces defined by each facet. Both area and volume are -approximations for non-simplicial facets. See option 'Fa'. +approximations for non\[hy]simplicial facets. See option 'Fa'. .TP Ft -Print a triangulation with added points for non-simplicial +Print a triangulation with added points for non\[hy]simplicial facets. The first line is the dimension and the second line is the number of points and the number of facets. The points follow, one -per line, then the facets follow as a list of point indices. With option -'Qz', the -points include the point-at-infinity. +per line, then the facets follow as a list of point indices. With option 'Qz', the +points include the point\[hy]at\[hy]infinity. .TP Fv Print vertices for each facet. The first line is the number @@ -551,7 +550,7 @@ Print all ridges of a Voronoi diagram. The first line is the number of ridges. Then each ridge is printed, one per line. A line starts with the number of indices. The first pair lists adjacent input sites, the remaining indices list Voronoi vertices. Vertex '0' indicates -the vertex-at-infinity (i.e., an unbounded ray). In 3-d, the vertices +the vertex\[hy]at\[hy]infinity (i.e., an unbounded ray). In 3\[hy]d, the vertices are listed in order. See 'Fi' and 'Fo' for separating hyperplanes. .TP FV @@ -561,8 +560,8 @@ for halfspace intersection. Fx List extreme points (vertices) of the convex hull. The first line is the number of points. The other lines give the indices of the -corresponding points. The first point is '0'. In 2-d, the points -occur in counter-clockwise order; otherwise they occur in input order. +corresponding points. The first point is '0'. In 2\[hy]d, the points +occur in counter\[hy]clockwise order; otherwise they occur in input order. For Delaunay triangulations, 'Fx' lists the extreme points of the input sites. The points are unordered. .PP @@ -571,12 +570,12 @@ Geomview options .TP G Produce a file for viewing with Geomview. Without other options, -Qhull displays edges in 2-d, outer planes in 3-d, and ridges in 4-d. +Qhull displays edges in 2\[hy]d, outer planes in 3\[hy]d, and ridges in 4\[hy]d. A ridge can be -explicit or implicit. An explicit ridge is a dim-1 dimensional simplex +explicit or implicit. An explicit ridge is a dim\-1 dimensional simplex between two facets. -In 4-d, the explicit ridges are triangles. -When displaying a ridge in 4-d, Qhull projects the ridge's vertices to +In 4\[hy]d, the explicit ridges are triangles. +When displaying a ridge in 4\[hy]d, Qhull projects the ridge's vertices to one of its facets' hyperplanes. Use 'Gh' to project ridges to the intersection of both hyperplanes. @@ -585,24 +584,24 @@ Ga Display all input points as dots. .TP Gc -Display the centrum for each facet in 3-d. The centrum is defined by a +Display the centrum for each facet in 3\[hy]d. The centrum is defined by a green radius sitting on a blue plane. The plane corresponds to the facet's hyperplane. -The radius is defined by 'C-n' or 'Cn'. +The radius is defined by 'C\-n' or 'Cn'. .TP GDn -Drop dimension n in 3-d or 4-d. The result is a 2-d or 3-d object. +Drop dimension n in 3\[hy]d or 4\[hy]d. The result is a 2\[hy]d or 3\[hy]d object. .TP Gh -Display hyperplane intersections in 3-d and 4-d. In 3-d, the +Display hyperplane intersections in 3\[hy]d and 4\[hy]d. In 3\[hy]d, the intersection is a black line. It lies on two neighboring hyperplanes -(c.f., the blue squares associated with centrums ('Gc')). In 4-d, +(c.f., the blue squares associated with centrums ('Gc')). In 4\[hy]d, the ridges are projected to the intersection of both hyperplanes. .TP Gi -Display inner planes in 2-d and 3-d. The inner plane of a facet +Display inner planes in 2\[hy]d and 3\[hy]d. The inner plane of a facet is below all of its vertices. It is parallel to the facet's hyperplane. -The inner plane's color is the opposite (1-r,1-g,1-b) of the outer +The inner plane's color is the opposite (1\-r,1\-g,1\-b) of the outer plane. Its edges are determined by the vertices. .TP Gn @@ -613,7 +612,7 @@ not display the inner plane if the the difference between inner and outer is too small. .TP Go -Display outer planes in 2-d and 3-d. The outer plane of a facet +Display outer planes in 2\[hy]d and 3\[hy]d. 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. @@ -622,15 +621,15 @@ Gp Display coplanar points and vertices as radii. A radius defines a ball which corresponds to the imprecision of the point. The imprecision is the maximum of the roundoff error, the centrum radius, and maxcoord * -(1-An). It is at least 1/20'th of the maximum coordinate, -and ignores post-merging if pre-merging is done. +(1\-An). It is at least 1/20'th of the maximum coordinate, +and ignores post\[hy]merging if pre\[hy]merging is done. .TP Gr -Display ridges in 3-d. A ridge connects the two vertices that are shared -by neighboring facets. Ridges are always displayed in 4-d. +Display ridges in 3\[hy]d. A ridge connects the two vertices that are shared +by neighboring facets. Ridges are always displayed in 4\[hy]d. .TP Gt -A 3-d Delaunay triangulation looks like a convex hull with interior +A 3\[hy]d Delaunay triangulation looks like a convex hull with interior facets. Option 'Gt' removes the outside ridges to reveal the outermost facets. It automatically sets options 'Gr' and 'GDn'. .TP @@ -689,12 +688,12 @@ Qhull control options .TP Qbk:0Bk:0 Drop dimension k from the input points. This allows the user to -take convex hulls of sub-dimensional objects. It happens before +take convex hulls of sub\[hy]dimensional objects. It happens before the Delaunay and Voronoi transformation. .TP QbB Scale the input points to fit the unit cube. After scaling, the lower -bound will be -0.5 and the upper bound +0.5 in all dimensions. +bound will be \-0.5 and the upper bound +0.5 in all dimensions. For Delaunay and Voronoi diagrams, scaling happens after projection to the paraboloid. Under precise @@ -710,7 +709,7 @@ arithmetic, scaling does not change the topology of the convex hull. .TP Qbk:n Scale the k'th coordinate of the input points. After scaling, the lower -bound of the input points will be n. 'Qbk' scales to -0.5. +bound of the input points will be n. 'Qbk' scales to \-0.5. .TP QBk:n Scale the k'th coordinate of the input points. After scaling, the upper @@ -741,7 +740,7 @@ Keep interior points with the nearest facet. Output formats 'p', 'f', 'Gp', 'FN', 'FP', and 'Fc' will print the points. .TP QJn -Joggle each input coordinate by adding a random number in [-n,n]. If a +Joggle each input coordinate by adding a random number in [\-n,n]. If a precision error occurs, then qhull increases n and tries again. It does not increase n beyond a certain value, and it stops after a certain number of attempts [see user.h]. Option 'QJ' @@ -760,7 +759,7 @@ is not reported since the randomization is inefficient. .TP QRn Randomly rotate the input points. If n=0, use time as the random number seed. -If n>0, use n as the random number seed. If n=-1, don't rotate but use +If n>0, use n as the random number seed. If n=\-1, don't rotate but use time as the random number seed. For Delaunay triangulations ('d' and 'v'), rotate about the last axis. .TP @@ -768,12 +767,12 @@ Qs Search all points for the initial simplex. .TP Qt -Triangulated output. Triangulate all non-simplicial facets. See also 'QJ'. +Triangulated output. Triangulate all non\[hy]simplicial facets. See also 'QJ'. .TP Qv -Test vertex neighbors for convexity after post-merging. +Test vertex neighbors for convexity after post\[hy]merging. To use the 'Qv' option, you also need to set a merge option -(e.g., 'Qx' or 'C-0'). +(e.g., 'Qx' or 'C\-0'). .TP QVn A good facet (see 'Qg' and 'Pg') includes point n. If n<0, then a good facet does not @@ -783,13 +782,13 @@ is the first point added to the hull. Option 'QVn' may not be used with merging Qx Perform exact merges while building the hull. The "exact" merges are merging a point into a coplanar facet (defined by 'Vn', 'Un', -and 'C-n'), merging concave facets, merging duplicate ridges, and -merging flipped facets. Coplanar merges and angle coplanar merges ('A-n') +and 'C\-n'), merging concave facets, merging duplicate ridges, and +merging flipped facets. Coplanar merges and angle coplanar merges ('A\-n') are not performed. Concavity testing is delayed until a merge occurs. After -the hull is built, all coplanar merges are performed (defined by 'C-n' -and 'A-n'), then post-merges are performed +the hull is built, all coplanar merges are performed (defined by 'C\-n' +and 'A\-n'), then post\[hy]merges are performed (defined by 'Cn' and 'An'). .TP Qz @@ -801,8 +800,8 @@ of cospherical points. Qhull experiments and speedups .TP Q0 -Turn off pre-merging as a default option. -With 'Q0'/'Qx' and without explicit pre-merge options, Qhull +Turn off pre\[hy]merging as a default option. +With 'Q0'/'Qx' and without explicit pre\[hy]merge options, Qhull ignores precision issues while constructing the convex hull. This may lead to precision errors. If so, a descriptive warning is generated. @@ -826,14 +825,14 @@ With 'Q5', Qhull does not correct outer planes at the end. The maximum outer plane is used instead. .TP Q6 -With 'Q6', Qhull does not pre-merge concave or coplanar facets. +With 'Q6', Qhull does not pre\[hy]merge concave or coplanar facets. .TP Q7 -With 'Q7', Qhull processes facets in depth-first order instead of -breadth-first order. +With 'Q7', Qhull processes facets in depth\[hy]first order instead of +breadth\[hy]first order. .TP Q8 -With 'Q8' and merging, Qhull does not retain near-interior points for adjusting +With 'Q8' and merging, Qhull does not retain near\[hy]interior points for adjusting outer planes. 'Qc' will probably retain all points that adjust outer planes. .TP @@ -850,7 +849,7 @@ With 'Q11', Qhull copies normals and recompute centrums for tricoplanar facets. Trace options .TP Tn -Trace at level n. Qhull includes full execution tracing. 'T-1' +Trace at level n. Qhull includes full execution tracing. 'T\-1' traces events. 'T1' traces the overall execution of the program. 'T2' and 'T3' trace overall execution and geometric and topological events. 'T4' traces the @@ -868,7 +867,7 @@ See also 'TVn'. .TP TFn Report progress whenever more than n facets are created -During post-merging, 'TFn' +During post\[hy]merging, 'TFn' reports progress after more than n/2 merges. .TP TI file @@ -900,8 +899,8 @@ Option 'Tv' does not check point inclusion if forcing output with 'Po', or if 'Q5' is set. For point inclusion testing, Qhull verifies that all points are below -all outer planes (facet->maxoutside). Point inclusion is exhaustive -if merging or if the facet-point product is small enough; +all outer planes (facet\->maxoutside). Point inclusion is exhaustive +if merging or if the facet\[hy]point product is small enough; otherwise Qhull verifies each point with a directed search (qh_findbest). @@ -945,9 +944,9 @@ incorporating Qhull into your own program. When you do report an error, please attach a data set to the end of your message. This allows us to see the error for ourselves. -Qhull is maintained part-time. +Qhull is maintained part\[hy]time. .PP -.SH E-MAIL +.SH E\[hy]MAIL Please send correspondence to qhull@qhull.org and report bugs to qhull_bug@qhull.org. Let us know how you use Qhull. If you mention it in a paper, please send the reference and an abstract. @@ -957,37 +956,31 @@ and news (any bugs that get fixed, etc.), let us know and we will add you to our mailing list. If you would like to communicate with other Qhull users, we will add you to the qhull_users alias. For Internet news about geometric algorithms and convex hulls, look at -comp.graphics.algorithms and sci.math.num-analysis +comp.graphics.algorithms and sci.math.num\-analysis .SH SEE ALSO rbox(1) Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," ACM -Trans. on Mathematical Software, 22(4):469-483, Dec. 1996. +Trans. on Mathematical Software, 22(4):469\[en]483, Dec. 1996. http://portal.acm.org/citation.cfm?doid=235815.235821 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345 Clarkson, K.L., K. Mehlhorn, and R. Seidel, "Four results on randomized incremental construction," Computational Geometry: Theory and Applications, -vol. 3, p. 185-211, 1993. +vol. 3, p. 185\[en]211, 1993. Preparata, F. and M. Shamos, Computational -Geometry, Springer-Verlag, New York, 1985. +Geometry, Springer\[hy]Verlag, New York, 1985. .PP .SH AUTHORS .nf C. Bradford Barber Hannu Huhdanpaa - bradb@qhull.org hannu@qhull.org + bradb@shore.net hannu@qhull.org - c/o The Geometry Center - University of Minnesota - 400 Lind Hall - 207 Church Street S.E. - Minneapolis, MN 55455 - -.fi + .fi .SH ACKNOWLEDGEMENTS @@ -995,12 +988,12 @@ A special thanks to Albert Marden, Victor Milenkovic, the Geometry Center, Harvard University, and Endocardial Solutions, Inc. for supporting this work. Qhull 1.0 and 2.0 were developed under National Science Foundation -grants NSF/DMS-8920161 and NSF-CCR-91-15793 750-7504. David Dobkin +grants NSF/DMS\[hy]8920161 and NSF\[hy]CCR\[hy]91\[hy]15793 750\[hy]7504. David Dobkin guided the original work at Princeton University. If you find it useful, please let us know. -The Geometry Center is supported by grant DMS-8920161 from the National -Science Foundation, by grant DOE/DE-FG02-92ER25137 from the Department +The Geometry Center is supported by grant DMS\[hy]8920161 from the National +Science Foundation, by grant DOE/DE\[hy]FG02\[hy]92ER25137 from the Department of Energy, by the University of Minnesota, and by Minnesota Technology, Inc. Qhull is available from http://www.qhull.org diff --git a/html/qhull.txt b/html/qhull.txt index 4ad3299..b40d7e0 100644 --- a/html/qhull.txt +++ b/html/qhull.txt @@ -1,163 +1,163 @@ -qhull(1) qhull(1) +qhull(1) qhull(1) NAME - qhull - convex hull, Delaunay triangulation, Voronoi dia- + qhull - convex hull, Delaunay triangulation, Voronoi dia- gram, halfspace intersection about a point, hull volume, facet area SYNOPSIS qhull- compute convex hulls and related structures - input (stdin): dimension, #points, point coordinates - first comment (non-numeric) is listed in the summary - halfspace: use dim plus one with offsets after coefficients + input (stdin): dimension, #points, point coordinates + first comment (non-numeric) is listed in the summary + halfspace: use dim plus one with offsets after coefficients options (qh-quick.htm): - d - Delaunay triangulation by lifting points to a paraboloid - v - Voronoi diagram via the Delaunay triangulation - H1,1 - Halfspace intersection about [1,1,0,...] - d Qu - Furthest-site Delaunay triangulation (upper convex hull) - v Qu - Furthest-site Voronoi diagram - QJ - Joggle the input to avoid precision problems - . - concise list of all options - - - one-line description of all options + d - Delaunay triangulation by lifting points to a paraboloid + v - Voronoi diagram via the Delaunay triangulation + H1,1 - Halfspace intersection about [1,1,0,...] + d Qu - Furthest-site Delaunay triangulation (upper convex hull) + v Qu - Furthest-site Voronoi diagram + QJ - Joggle the input to avoid precision problems + . - concise list of all options + - - one-line description of all options Output options (subset): - FA - compute total area and volume - Fx - extreme points (convex hull vertices) - G - Geomview output (2-d, 3-d and 4-d) - Fp - halfspace intersection coordinates - m - Mathematica output (2-d and 3-d) - n - normals with offsets - o - OFF file format (if Voronoi, outputs regions) - TO file- output results to file, may be enclosed in single quotes - f - print all fields of all facets - s - summary of results (default) - Tv - verify result: structure, convexity, and point inclusion - p - vertex coordinates - i - vertices incident to each facet + FA - compute total area and volume + Fx - extreme points (convex hull vertices) + G - Geomview output (2-d, 3-d and 4-d) + Fp - halfspace intersection coordinates + m - Mathematica output (2-d and 3-d) + n - normals with offsets + o - OFF file format (if Voronoi, outputs regions) + TO file- output results to file, may be enclosed in single quotes + f - print all fields of all facets + s - summary of results (default) + Tv - verify result: structure, convexity, and point inclusion + p - vertex coordinates + i - vertices incident to each facet example: - rbox 1000 s | qhull Tv s FA + rbox 1000 s | qhull Tv s FA - - html manual: index.htm - - installation: README.txt - - see also: COPYING.txt, REGISTER.txt, Changes.txt - - WWW: <http://www.qhull.org> + - html manual: index.htm + - installation: README.txt + - see also: COPYING.txt, REGISTER.txt, Changes.txt + - WWW: <http://www.qhull.org> - CVS: <http://savannah.nongnu.org/projects/qhull/> - mirror: <http://www6.uniovi.es/ftp/pub/mirrors/geom.umn.edu/software/ghindex.html> - - news: <http://www.qhull.org/news> - - Geomview: <http://www.geomview.org> - - news group: <news:comp.graphics.algorithms> - - FAQ: <http://exaflop.org/docs/cgafaq/cga6.html> - - email: qhull@qhull.org - - bug reports: qhull_bug@qhull.org + - news: <http://www.qhull.org/news> + - Geomview: <http://www.geomview.org> + - news group: <news:comp.graphics.algorithms> + - FAQ: <http://exaflop.org/docs/cgafaq/cga6.html> + - email: qhull@qhull.org + - bug reports: qhull_bug@qhull.org -Geometry Center 2003/12/30 1 +Geometry Center 2003/12/30 1 -qhull(1) qhull(1) +qhull(1) qhull(1) The sections are: - - INTRODUCTION - - DESCRIPTION, a description of Qhull - - IMPRECISION, how Qhull handles imprecision - - OPTIONS - - Input and output options - - Additional input/output formats - - Precision options - - Geomview options - - Print options - - Qhull options - - Trace options - - BUGS - - E-MAIL - - SEE ALSO - - AUTHORS - - ACKNOWLEGEMENTS - - This man page briefly describes all Qhull options. Please - report any mismatches with Qhull's html manual (qh- + - INTRODUCTION + - DESCRIPTION, a description of Qhull + - IMPRECISION, how Qhull handles imprecision + - OPTIONS + - Input and output options + - Additional input/output formats + - Precision options + - Geomview options + - Print options + - Qhull options + - Trace options + - BUGS + - E-MAIL + - SEE ALSO + - AUTHORS + - ACKNOWLEGEMENTS + + This man page briefly describes all Qhull options. Please + report any mismatches with Qhull's html manual (qh- man.htm). INTRODUCTION - Qhull is a general dimension code for computing convex - hulls, Delaunay triangulations, Voronoi diagram, furthest- - site Voronoi diagram, furthest-site Delaunay triangula- + Qhull is a general dimension code for computing convex + hulls, Delaunay triangulations, Voronoi diagram, furthest- + site Voronoi diagram, furthest-site Delaunay triangula- tions, and halfspace intersections about a point. It implements the Quickhull algorithm for computing the con- - vex hull. Qhull handles round-off errors from floating + vex hull. Qhull handles round-off errors from floating point arithmetic. It can approximate a convex hull. The program includes options for hull volume, facet area, partial hulls, input transformations, randomization, trac- - ing, multiple output formats, and execution statistics. + ing, multiple output formats, and execution statistics. The program can be called from within your application. - You can view the results in 2-d, 3-d and 4-d with + You can view the results in 2-d, 3-d and 4-d with Geomview. DESCRIPTION - The format of input is the following: first line contains - the dimension, second line contains the number of input + The format of input is the following: first line contains + the dimension, second line contains the number of input points, and point coordinates follow. The dimension and - number of points can be reversed. Comments and line + number of points can be reversed. Comments and line breaks are ignored. A comment starts with a non-numeric - character and continues to the end of line. The first - comment is reported in summaries and statistics. Error + character and continues to the end of line. The first + comment is reported in summaries and statistics. Error reporting is better if there is one point per line. - The default printout option is a short summary. There are + The default printout option is a short summary. There are many other output formats. -Geometry Center 2003/12/30 2 +Geometry Center 2003/12/30 2 -qhull(1) qhull(1) +qhull(1) qhull(1) - Qhull implements the Quickhull algorithm for convex hull. - This algorithm combines the 2-d Quickhull algorithm with - the n-d beneath-beyond algorithm [c.f., Preparata & Shamos - '85]. It is similar to the randomized algorithms of - Clarkson and others [Clarkson et al. '93]. The main - advantages of Quickhull are output sensitive performance, + Qhull implements the Quickhull algorithm for convex hull. + This algorithm combines the 2-d Quickhull algorithm with + the n-d beneath-beyond algorithm [c.f., Preparata & Shamos + '85]. It is similar to the randomized algorithms of + Clarkson and others [Clarkson et al. '93]. The main + advantages of Quickhull are output sensitive performance, reduced space requirements, and automatic handling of pre- cision problems. - The data structure produced by Qhull consists of vertices, - ridges, and facets. A vertex is a point of the input set. - A ridge is a set of d vertices and two neighboring facets. + The data structure produced by Qhull consists of vertices, + ridges, and facets. A vertex is a point of the input set. + A ridge is a set of d vertices and two neighboring facets. For example in 3-d, a ridge is an edge of the polyhedron. - A facet is a set of ridges, a set of neighboring facets, a + A facet is a set of ridges, a set of neighboring facets, a set of incident vertices, and a hyperplane equation. For simplicial facets, the ridges are defined by the vertices - and neighboring facets. When Qhull merges two facets, it - produces a non-simplicial facet. A non-simplicial facet - has more than d neighbors and may share more than one + and neighboring facets. When Qhull merges two facets, it + produces a non-simplicial facet. A non-simplicial facet + has more than d neighbors and may share more than one ridge with a neighbor. IMPRECISION - Since Qhull uses floating point arithmetic, roundoff error - may occur for each calculation. This causes problems for + Since Qhull uses floating point arithmetic, roundoff error + may occur for each calculation. This causes problems for most geometric algorithms. Qhull automatically sets option 'C-0' in 2-d, 3-d, and @@ -166,37 +166,37 @@ IMPRECISION use option 'QJ' to joggle the input. With 'C-0', Qhull merges non-convex facets while con- - structing the hull. The remaining facets are clearly con- - vex. With 'Qx', Qhull merges coplanar horizon facets, - flipped facets, concave facets and duplicated ridges. It + structing the hull. The remaining facets are clearly con- + vex. With 'Qx', Qhull merges coplanar horizon facets, + flipped facets, concave facets and duplicated ridges. It merges coplanar facets after constructing the hull. With 'Qx', coplanar points may be missed, but it appears to be unlikely. - To guarantee triangular output, joggle the input with - option 'QJ'. Facet merging will not occur. + To guarantee triangular output, joggle the input with + option 'QJ'. Facet merging will not occur. OPTIONS - To get a list of the most important options, execute - 'qhull' by itself. To get a complete list of options, - execute 'qhull -'. To get a complete, concise list of - options, execute 'qhull .'. + To get a list of the most important options, execute + 'qhull' by itself. To get a complete list of options, + execute 'qhull -'. To get a complete, concise list of + options, execute 'qhull .'. Options can be in any order. Capitalized options take an - argument (except 'PG' and 'F' options). Single letters - are used for output formats and precision constants. The - other options are grouped into menus for other output for- + argument (except 'PG' and 'F' options). Single letters + are used for output formats and precision constants. The + other options are grouped into menus for other output for- mats ('F'), Geomview output ('G'), printing ('P'), Qhull -Geometry Center 2003/12/30 3 +Geometry Center 2003/12/30 3 -qhull(1) qhull(1) +qhull(1) qhull(1) control ('Q'), and tracing ('T'). @@ -204,618 +204,618 @@ qhull(1) qhull(1) Main options: default - Compute the convex hull of the input points. - Report a summary of the result. + Compute the convex hull of the input points. + Report a summary of the result. d Compute the Delaunay triangulation by lifting the - input points to a paraboloid. The 'o' option - prints the input points and facets. The 'QJ' - option guarantees triangular output. The 'Ft' - option prints a triangulation. It adds points (the - centrums) to non-simplicial facets. - - v Compute the Voronoi diagram from the Delaunay tri- - angulation. The 'p' option prints the Voronoi ver- - tices. The 'o' option prints the Voronoi vertices - and the vertices in each Voronoi region. It lists - regions in site id order. The 'Fv' option prints - each ridge of the Voronoi diagram. The first or - zero'th vertex indicates the infinity vertex. Its - coordinates are qh_INFINITE (-10.101). It indi- - cates unbounded Voronoi regions or degenerate - Delaunay triangles. + input points to a paraboloid. The 'o' option + prints the input points and facets. The 'QJ' + option guarantees triangular output. The 'Ft' + option prints a triangulation. It adds points (the + centrums) to non-simplicial facets. + + v Compute the Voronoi diagram from the Delaunay tri- + angulation. The 'p' option prints the Voronoi ver- + tices. The 'o' option prints the Voronoi vertices + and the vertices in each Voronoi region. It lists + regions in site id order. The 'Fv' option prints + each ridge of the Voronoi diagram. The first or + zero'th vertex indicates the infinity vertex. Its + coordinates are qh_INFINITE (-10.101). It indi- + cates unbounded Voronoi regions or degenerate + Delaunay triangles. Hn,n,... - Compute halfspace intersection about [n,n,0,...]. - The input is a set of halfspaces defined in the - same format as 'n', 'Fo', and 'Fi'. Use 'Fp' to - print the intersection points. Use 'Fv' to list - the intersection points for each halfspace. The - other output formats display the dual convex hull. - - The point [n,n,n,...] is a feasible point for the - halfspaces, i.e., a point that is inside all of the - halfspaces (Hx+b <= 0). The default coordinate - value is 0. - - The input may start with a feasible point. If so, - use 'H' by itself. The input starts with a feasi- - ble point when the first number is the dimension, - the second number is "1", and the coordinates com- - plete a line. The 'FV' option produces a feasible - point for a convex hull. + Compute halfspace intersection about [n,n,0,...]. + The input is a set of halfspaces defined in the + same format as 'n', 'Fo', and 'Fi'. Use 'Fp' to + print the intersection points. Use 'Fv' to list + the intersection points for each halfspace. The + other output formats display the dual convex hull. + + The point [n,n,n,...] is a feasible point for the + halfspaces, i.e., a point that is inside all of the + halfspaces (Hx+b <= 0). The default coordinate + value is 0. + + The input may start with a feasible point. If so, + use 'H' by itself. The input starts with a feasi- + ble point when the first number is the dimension, + the second number is "1", and the coordinates com- + plete a line. The 'FV' option produces a feasible + point for a convex hull. d Qu Compute the furthest-site Delaunay triangulation - from the upper convex hull. The 'o' option prints - the input points and facets. The 'QJ' option guar- - antees triangular otuput. You can also use facets. + from the upper convex hull. The 'o' option prints + the input points and facets. The 'QJ' option guar- + antees triangular otuput. You can also use facets. - v Qu Compute the furthest-site Voronoi diagram. The 'p' - option prints the Voronoi vertices. The 'o' option - prints the Voronoi vertices and the vertices in + v Qu Compute the furthest-site Voronoi diagram. The 'p' + option prints the Voronoi vertices. The 'o' option + prints the Voronoi vertices and the vertices in -Geometry Center 2003/12/30 4 +Geometry Center 2003/12/30 4 -qhull(1) qhull(1) +qhull(1) qhull(1) - each Voronoi region. The 'Fv' option prints each - ridge of the Voronoi diagram. The first or zero'th - vertex indicates the infinity vertex at infinity. - Its coordinates are qh_INFINITE (-10.101). It - indicates unbounded Voronoi regions and degenerate - Delaunay triangles. + each Voronoi region. The 'Fv' option prints each + ridge of the Voronoi diagram. The first or zero'th + vertex indicates the infinity vertex at infinity. + Its coordinates are qh_INFINITE (-10.101). It + indicates unbounded Voronoi regions and degenerate + Delaunay triangles. Qt Triangulated output. Input/Output options: - f Print out all facets and all fields of each facet. + f Print out all facets and all fields of each facet. - G Output the hull in Geomview format. For imprecise - hulls, Geomview displays the inner and outer hull. - Geomview can also display points, ridges, vertices, - coplanar points, and facet intersections. See - below for a list of options. + G Output the hull in Geomview format. For imprecise + hulls, Geomview displays the inner and outer hull. + Geomview can also display points, ridges, vertices, + coplanar points, and facet intersections. See + below for a list of options. - For Delaunay triangulations, 'G' displays the cor- - responding paraboloid. For halfspace intersection, - 'G' displays the dual polytope. + For Delaunay triangulations, 'G' displays the cor- + responding paraboloid. For halfspace intersection, + 'G' displays the dual polytope. i Output the incident vertices for each facet. Qhull - prints the number of facets followed by the ver- - tices of each facet. One facet is printed per - line. The numbers are the 0-relative indices of - the corresponding input points. The facets are - oriented. - - In 4-d and higher, Qhull triangulates non-simpli- - cial facets. Each apex (the first vertex) is a - created point that corresponds to the facet's cen- - trum. Its index is greater than the indices of the - input points. Each base corresponds to a simpli- - cial ridge between two facets. To print the ver- - tices without triangulation, use option 'Fv'. - - m Output the hull in Mathematica format. Qhull - writes a Mathematica file for 2-d and 3-d convex - hulls and for 2-d Delaunay triangulations. Qhull - produces a list of objects that you can assign to a - variable in Mathematica, for example: "list= << - <outputfilename> ". If the object is 2-d, it can be - visualized by "Show[Graphics[list]] ". For 3-d - objects the command is "Show[Graphics3D[list]]". + prints the number of facets followed by the ver- + tices of each facet. One facet is printed per + line. The numbers are the 0-relative indices of + the corresponding input points. The facets are + oriented. + + In 4-d and higher, Qhull triangulates non-simpli- + cial facets. Each apex (the first vertex) is a + created point that corresponds to the facet's cen- + trum. Its index is greater than the indices of the + input points. Each base corresponds to a simpli- + cial ridge between two facets. To print the ver- + tices without triangulation, use option 'Fv'. + + m Output the hull in Mathematica format. Qhull + writes a Mathematica file for 2-d and 3-d convex + hulls and for 2-d Delaunay triangulations. Qhull + produces a list of objects that you can assign to a + variable in Mathematica, for example: "list= << + <outputfilename> ". If the object is 2-d, it can be + visualized by "Show[Graphics[list]] ". For 3-d + objects the command is "Show[Graphics3D[list]]". n Output the normal equation for each facet. Qhull - prints the dimension (plus one), the number of - facets, and the normals for each facet. The - facet's offset follows its normal coefficients. + prints the dimension (plus one), the number of + facets, and the normals for each facet. The + facet's offset follows its normal coefficients. - o Output the facets in OFF file format. Qhull prints - the dimension, number of points, number of facets, - and number of ridges. Then it prints the + o Output the facets in OFF file format. Qhull prints + the dimension, number of points, number of facets, + and number of ridges. Then it prints the -Geometry Center 2003/12/30 5 +Geometry Center 2003/12/30 5 -qhull(1) qhull(1) +qhull(1) qhull(1) - coordinates of the input points and the vertices - for each facet. Each facet is on a separate line. - The first number is the number of vertices. The - remainder are the indices of the corresponding - points. The vertices are oriented in 2-d, 3-d, and - in simplicial facets. + coordinates of the input points and the vertices + for each facet. Each facet is on a separate line. + The first number is the number of vertices. The + remainder are the indices of the corresponding + points. The vertices are oriented in 2-d, 3-d, and + in simplicial facets. - For 2-d Voronoi diagrams, the vertices are sorted - by adjacency, but not oriented. In 3-d and higher, - the Voronoi vertices are sorted by index. See the - 'v' option for more information. + For 2-d Voronoi diagrams, the vertices are sorted + by adjacency, but not oriented. In 3-d and higher, + the Voronoi vertices are sorted by index. See the + 'v' option for more information. - p Output the coordinates of each vertex point. Qhull - prints the dimension, the number of points, and the - coordinates for each vertex. With the 'Gc' and - 'Gi' options, it also prints coplanar and interior - points. For Voronoi diagrams, it prints the coor- - dinates of each Voronoi vertex. + p Output the coordinates of each vertex point. Qhull + prints the dimension, the number of points, and the + coordinates for each vertex. With the 'Gc' and + 'Gi' options, it also prints coplanar and interior + points. For Voronoi diagrams, it prints the coor- + dinates of each Voronoi vertex. s Print a summary to stderr. If no output options - are specified at all, a summary goes to stdout. - The summary lists the number of input points, the - dimension, the number of vertices in the convex - hull, the number of facets in the convex hull, the - number of good facets (if 'Pg'), and statistics. + are specified at all, a summary goes to stdout. + The summary lists the number of input points, the + dimension, the number of vertices in the convex + hull, the number of facets in the convex hull, the + number of good facets (if 'Pg'), and statistics. - The last two statistics (if needed) measure the - maximum distance from a point or vertex to a facet. - The number in parenthesis (e.g., 2.1x) is the ratio - between the maximum distance and the worst-case - distance due to merging two simplicial facets. + The last two statistics (if needed) measure the + maximum distance from a point or vertex to a facet. + The number in parenthesis (e.g., 2.1x) is the ratio + between the maximum distance and the worst-case + distance due to merging two simplicial facets. Precision options - An Maximum angle given as a cosine. If the angle - between a pair of facet normals is greater than n, Qhull - merges one of the facets into a neighbor. If 'n' - is negative, Qhull tests angles after adding each - point to the hull (pre-merging). If 'n' is posi- - tive, Qhull tests angles after constructing the - hull (post-merging). Both pre- and post-merging - can be defined. + An Maximum angle given as a cosine. If the angle + between a pair of facet normals is greater than n, Qhull + merges one of the facets into a neighbor. If 'n' + is negative, Qhull tests angles after adding each + point to the hull (pre-merging). If 'n' is posi- + tive, Qhull tests angles after constructing the + hull (post-merging). Both pre- and post-merging + can be defined. - Option 'C0' or 'C-0' is set if the corresponding - 'Cn' or 'C-n' is not set. If 'Qx' is set, then 'A- - n' and 'C-n' are checked after the hull is con- - structed and before 'An' and 'Cn' are checked. + Option 'C0' or 'C-0' is set if the corresponding + 'Cn' or 'C-n' is not set. If 'Qx' is set, then 'A- + n' and 'C-n' are checked after the hull is con- + structed and before 'An' and 'Cn' are checked. - Cn Centrum radius. If a centrum is less than n below - a neighboring facet, Qhull merges one of the - facets. If 'n' is negative or '-0', Qhull tests - and merges facets after adding each point to the - hull. This is called "pre-merging". If 'n' is + Cn Centrum radius. If a centrum is less than n below + a neighboring facet, Qhull merges one of the + facets. If 'n' is negative or '-0', Qhull tests + and merges facets after adding each point to the + hull. This is called "pre-merging". If 'n' is -Geometry Center 2003/12/30 6 +Geometry Center 2003/12/30 6 -qhull(1) qhull(1) +qhull(1) qhull(1) - positive, Qhull tests for convexity after con- - structing the hull ("post-merging"). Both pre- and - post-merging can be defined. + positive, Qhull tests for convexity after con- + structing the hull ("post-merging"). Both pre- and + post-merging can be defined. - For 5-d and higher, 'Qx' should be used instead of - 'C-n'. Otherwise, most or all facets may be merged - together. + For 5-d and higher, 'Qx' should be used instead of + 'C-n'. Otherwise, most or all facets may be merged + together. En Maximum roundoff error for distance computations. - Rn Randomly perturb distance computations up to +/- n - * max_coord. This option perturbs every distance, - hyperplane, and angle computation. To use time as - the random number seed, use option 'QR-1'. + Rn Randomly perturb distance computations up to +/- n + * max_coord. This option perturbs every distance, + hyperplane, and angle computation. To use time as + the random number seed, use option 'QR-1'. - Vn Minimum distance for a facet to be visible. A - facet is visible if the distance from the point to - the facet is greater than 'Vn'. + Vn Minimum distance for a facet to be visible. A + facet is visible if the distance from the point to + the facet is greater than 'Vn'. - Without merging, the default value for 'Vn' is the - round-off error ('En'). With merging, the default - value is the pre-merge centrum ('C-n') in 2-d or - 3--d, or three times that in other dimensions. If - the outside width is specified ('Wn'), the maximum, - default value for 'Vn' is 'Wn'. + Without merging, the default value for 'Vn' is the + round-off error ('En'). With merging, the default + value is the pre-merge centrum ('C-n') in 2-d or + 3--d, or three times that in other dimensions. If + the outside width is specified ('Wn'), the maximum, + default value for 'Vn' is 'Wn'. Un Maximum distance below a facet for a point to be - coplanar to the facet. The default value is 'Vn'. + coplanar to the facet. The default value is 'Vn'. - Wn Minimum outside width of the hull. Points are - added to the convex hull only if they are clearly - outside of a facet. A point is outside of a facet - if its distance to the facet is greater than 'Wn'. - The normal value for 'Wn' is 'En'. If the user - specifies pre-merging and does not set 'Wn', than - 'Wn' is set to the premerge 'Cn' and maxco- - ord*(1-An). + Wn Minimum outside width of the hull. Points are + added to the convex hull only if they are clearly + outside of a facet. A point is outside of a facet + if its distance to the facet is greater than 'Wn'. + The normal value for 'Wn' is 'En'. If the user + specifies pre-merging and does not set 'Wn', than + 'Wn' is set to the premerge 'Cn' and maxco- + ord*(1-An). Additional input/output formats Fa Print area for each facet. For Delaunay triangula- - tions, the area is the area of the triangle. For - Voronoi diagrams, the area is the area of the dual - facet. Use 'PAn' for printing the n largest - facets, and option 'PFn' for printing facets larger - than 'n'. + tions, the area is the area of the triangle. For + Voronoi diagrams, the area is the area of the dual + facet. Use 'PAn' for printing the n largest + facets, and option 'PFn' for printing facets larger + than 'n'. - The area for non-simplicial facets is the sum of - the areas for each ridge to the centrum. Vertices - far below the facet's hyperplane are ignored. The - reported area may be significantly less than the - actual area. + The area for non-simplicial facets is the sum of + the areas for each ridge to the centrum. Vertices + far below the facet's hyperplane are ignored. The + reported area may be significantly less than the + actual area. -Geometry Center 2003/12/30 7 +Geometry Center 2003/12/30 7 -qhull(1) qhull(1) +qhull(1) qhull(1) - FA Compute the total area and volume for option 's'. - It is an approximation for non-simplicial facets - (see 'Fa'). + FA Compute the total area and volume for option 's'. + It is an approximation for non-simplicial facets + (see 'Fa'). - Fc Print coplanar points for each facet. The output - starts with the number of facets. Then each facet - is printed one per line. Each line is the number - of coplanar points followed by the point ids. - Option 'Qi' includes the interior points. Each - coplanar point (interior point) is assigned to the - facet it is furthest above (resp., least below). + Fc Print coplanar points for each facet. The output + starts with the number of facets. Then each facet + is printed one per line. Each line is the number + of coplanar points followed by the point ids. + Option 'Qi' includes the interior points. Each + coplanar point (interior point) is assigned to the + facet it is furthest above (resp., least below). FC Print centrums for each facet. The output starts - with the dimension followed by the number of - facets. Then each facet centrum is printed, one - per line. + with the dimension followed by the number of + facets. Then each facet centrum is printed, one + per line. Fd Read input in cdd format with homogeneous points. - The input starts with comments. The first comment - is reported in the summary. Data starts after a - "begin" line. The next line is the number of - points followed by the dimension+1 and "real" or - "integer". Then the points are listed with a - leading "1" or "1.0". The data ends with an "end" - line. - - For halfspaces ('Fd Hn,n,...'), the input format is - the same. Each halfspace starts with its offset. - The sign of the offset is the opposite of Qhull's - convention. + The input starts with comments. The first comment + is reported in the summary. Data starts after a + "begin" line. The next line is the number of + points followed by the dimension+1 and "real" or + "integer". Then the points are listed with a + leading "1" or "1.0". The data ends with an "end" + line. + + For halfspaces ('Fd Hn,n,...'), the input format is + the same. Each halfspace starts with its offset. + The sign of the offset is the opposite of Qhull's + convention. FD Print normals ('n', 'Fo', 'Fi') or points ('p') in - cdd format. The first line is the command line - that invoked Qhull. Data starts with a "begin" - line. The next line is the number of normals or - points followed by the dimension+1 and "real". - Then the normals or points are listed with the - offset before the coefficients. The offset for - points is 1.0. The offset for normals has the - opposite sign. The data ends with an "end" line. + cdd format. The first line is the command line + that invoked Qhull. Data starts with a "begin" + line. The next line is the number of normals or + points followed by the dimension+1 and "real". + Then the normals or points are listed with the + offset before the coefficients. The offset for + points is 1.0. The offset for normals has the + opposite sign. The data ends with an "end" line. FF Print facets (as in 'f') without printing the - ridges. + ridges. Fi Print inner planes for each facet. The inner plane - is below all vertices. + is below all vertices. - Fi Print separating hyperplanes for bounded, inner - regions of the Voronoi diagram. The first line is - the number of ridges. Then each hyperplane is - printed, one per line. A line starts with the num- - ber of indices and floats. The first pair lists - adjacent input sites, the next d floats are the - normalized coefficients for the hyperplane, and the + Fi Print separating hyperplanes for bounded, inner + regions of the Voronoi diagram. The first line is + the number of ridges. Then each hyperplane is + printed, one per line. A line starts with the num- + ber of indices and floats. The first pair lists + adjacent input sites, the next d floats are the + normalized coefficients for the hyperplane, and the -Geometry Center 2003/12/30 8 +Geometry Center 2003/12/30 8 -qhull(1) qhull(1) +qhull(1) qhull(1) - last float is the offset. The hyperplane is ori- - ented toward verify that the hyperplanes are per- - pendicular bisectors. Use 'Fo' for unbounded - regions, and 'Fv' for the corresponding Voronoi - vertices. + last float is the offset. The hyperplane is ori- + ented toward verify that the hyperplanes are per- + pendicular bisectors. Use 'Fo' for unbounded + regions, and 'Fv' for the corresponding Voronoi + vertices. FI Print facet identifiers. Fm Print number of merges for each facet. At most 511 - merges are reported for a facet. See 'PMn' for - printing the facets with the most merges. + merges are reported for a facet. See 'PMn' for + printing the facets with the most merges. - FM Output the hull in Maple format. See 'm' + FM Output the hull in Maple format. See 'm' Fn Print neighbors for each facet. The output starts - with the number of facets. Then each facet is - printed one per line. Each line is the number of - neighbors followed by an index for each neighbor. - The indices match the other facet output formats. + with the number of facets. Then each facet is + printed one per line. Each line is the number of + neighbors followed by an index for each neighbor. + The indices match the other facet output formats. - A negative index indicates an unprinted facet due - to printing only good facets ('Pg'). It is the - negation of the facet's id (option 'FI'). For - example, negative indices are used for facets "at - infinity" in the Delaunay triangulation. + A negative index indicates an unprinted facet due + to printing only good facets ('Pg'). It is the + negation of the facet's id (option 'FI'). For + example, negative indices are used for facets "at + infinity" in the Delaunay triangulation. - FN Print vertex neighbors or coplanar facet for each - point. The first line is the number of points. - Then each point is printed, one per line. If the - point is coplanar, the line is "1" followed by the - facet's id. If the point is not a selected vertex, - the line is "0". Otherwise, each line is the num- - ber of neighbors followed by the corresponding - facet indices (see 'Fn'). + FN Print vertex neighbors or coplanar facet for each + point. The first line is the number of points. + Then each point is printed, one per line. If the + point is coplanar, the line is "1" followed by the + facet's id. If the point is not a selected vertex, + the line is "0". Otherwise, each line is the num- + ber of neighbors followed by the corresponding + facet indices (see 'Fn'). - Fo Print outer planes for each facet in the same for- - mat as 'n'. The outer plane is above all points. + Fo Print outer planes for each facet in the same for- + mat as 'n'. The outer plane is above all points. - Fo Print separating hyperplanes for unbounded, outer - regions of the Voronoi diagram. The first line is - the number of ridges. Then each hyperplane is - printed, one per line. A line starts with the num- - ber of indices and floats. The first pair lists - adjacent input sites, the next d floats are the - normalized coefficients for the hyperplane, and the - last float is the offset. The hyperplane is ori- - ented toward verify that the hyperplanes are per- - pendicular bisectors. Use 'Fi' for bounded - regions, and 'Fv' for the corresponding Voronoi - vertices. + Fo Print separating hyperplanes for unbounded, outer + regions of the Voronoi diagram. The first line is + the number of ridges. Then each hyperplane is + printed, one per line. A line starts with the num- + ber of indices and floats. The first pair lists + adjacent input sites, the next d floats are the + normalized coefficients for the hyperplane, and the + last float is the offset. The hyperplane is ori- + ented toward verify that the hyperplanes are per- + pendicular bisectors. Use 'Fi' for bounded + regions, and 'Fv' for the corresponding Voronoi + vertices. - FO List all options to stderr, including the default - values. Additional 'FO's are printed to stdout. + FO List all options to stderr, including the default + values. Additional 'FO's are printed to stdout. - Fp Print points for halfspace intersections (option - 'Hn,n,...'). Each intersection corresponds to a + Fp Print points for halfspace intersections (option + 'Hn,n,...'). Each intersection corresponds to a -Geometry Center 2003/12/30 9 +Geometry Center 2003/12/30 9 -qhull(1) qhull(1) +qhull(1) qhull(1) - facet of the dual polytope. The "infinity" point - [-10.101,-10.101,...] indicates an unbounded - intersection. + facet of the dual polytope. The "infinity" point + [-10.101,-10.101,...] indicates an unbounded + intersection. - FP For each coplanar point ('Qc') print the point id - of the nearest vertex, the point id, the facet id, - and the distance. + FP For each coplanar point ('Qc') print the point id + of the nearest vertex, the point id, the facet id, + and the distance. FQ Print command used for qhull and input. - Fs Print a summary. The first line consists of the - number of integers ("7"), followed by the dimen- - sion, the number of points, the number of vertices, - the number of facets, the number of vertices - selected for output, the number of facets selected - for output, the number of coplanar points selected - for output. + Fs Print a summary. The first line consists of the + number of integers ("7"), followed by the dimen- + sion, the number of points, the number of vertices, + the number of facets, the number of vertices + selected for output, the number of facets selected + for output, the number of coplanar points selected + for output. - The second line consists of the number of reals - ("2"), followed by the maxmimum offset to an outer - plane and and minimum offset to an inner plane. - Roundoff is included. Later versions of Qhull may - produce additional integers or reals. + The second line consists of the number of reals + ("2"), followed by the maxmimum offset to an outer + plane and and minimum offset to an inner plane. + Roundoff is included. Later versions of Qhull may + produce additional integers or reals. - FS Print the size of the hull. The first line con- - sists of the number of integers ("0"). The second - line consists of the number of reals ("2"), fol- - lowed by the total facet area, and the total vol- - ume. Later versions of Qhull may produce addi- - tional integers or reals. + FS Print the size of the hull. The first line con- + sists of the number of integers ("0"). The second + line consists of the number of reals ("2"), fol- + lowed by the total facet area, and the total vol- + ume. Later versions of Qhull may produce addi- + tional integers or reals. - The total volume measures the volume of the inter- - section of the halfspaces defined by each facet. - Both area and volume are approximations for non- - simplicial facets. See option 'Fa'. + The total volume measures the volume of the inter- + section of the halfspaces defined by each facet. + Both area and volume are approximations for non- + simplicial facets. See option 'Fa'. - Ft Print a triangulation with added points for non- - simplicial facets. The first line is the dimension - and the second line is the number of points and the - number of facets. The points follow, one per line, - then the facets follow as a list of point indices. - With option points include the point-at-infinity. + Ft Print a triangulation with added points for non- + simplicial facets. The first line is the dimension + and the second line is the number of points and the + number of facets. The points follow, one per line, + then the facets follow as a list of point indices. + With option points include the point-at-infinity. - Fv Print vertices for each facet. The first line is - the number of facets. Then each facet is printed, - one per line. Each line is the number of vertices - followed by the corresponding point ids. Vertices - are listed in the order they were added to the hull - (the last one is first). + Fv Print vertices for each facet. The first line is + the number of facets. Then each facet is printed, + one per line. Each line is the number of vertices + followed by the corresponding point ids. Vertices + are listed in the order they were added to the hull + (the last one is first). - Fv Print all ridges of a Voronoi diagram. The first - line is the number of ridges. Then each ridge is - printed, one per line. A line starts with the num- - ber of indices. The first pair lists adjacent + Fv Print all ridges of a Voronoi diagram. The first + line is the number of ridges. Then each ridge is + printed, one per line. A line starts with the num- + ber of indices. The first pair lists adjacent -Geometry Center 2003/12/30 10 +Geometry Center 2003/12/30 10 -qhull(1) qhull(1) +qhull(1) qhull(1) - input sites, the remaining indices list Voronoi - vertices. Vertex '0' indicates the vertex-at- - infinity (i.e., an unbounded ray). In 3-d, the - vertices are listed in order. See 'Fi' and 'Fo' - for separating hyperplanes. + input sites, the remaining indices list Voronoi + vertices. Vertex '0' indicates the vertex-at- + infinity (i.e., an unbounded ray). In 3-d, the + vertices are listed in order. See 'Fi' and 'Fo' + for separating hyperplanes. - FV Print average vertex. The average vertex is a fea- - sible point for halfspace intersection. + FV Print average vertex. The average vertex is a fea- + sible point for halfspace intersection. Fx List extreme points (vertices) of the convex hull. - The first line is the number of points. The other - lines give the indices of the corresponding points. - The first point is '0'. In 2-d, the points occur - in counter-clockwise order; otherwise they occur in - input order. For Delaunay triangulations, 'Fx' - lists the extreme points of the input sites. The - points are unordered. + The first line is the number of points. The other + lines give the indices of the corresponding points. + The first point is '0'. In 2-d, the points occur + in counter-clockwise order; otherwise they occur in + input order. For Delaunay triangulations, 'Fx' + lists the extreme points of the input sites. The + points are unordered. - Geomview options + Geomview options - G Produce a file for viewing with Geomview. Without - other options, Qhull displays edges in 2-d, outer - planes in 3-d, and ridges in 4-d. A ridge can be - explicit or implicit. An explicit ridge is a dim-1 - dimensional simplex between two facets. In 4-d, - the explicit ridges are triangles. When displaying - a ridge in 4-d, Qhull projects the ridge's vertices - to one of its facets' hyperplanes. Use 'Gh' to - project ridges to the intersection of both hyper- - planes. + G Produce a file for viewing with Geomview. Without + other options, Qhull displays edges in 2-d, outer + planes in 3-d, and ridges in 4-d. A ridge can be + explicit or implicit. An explicit ridge is a dim-1 + dimensional simplex between two facets. In 4-d, + the explicit ridges are triangles. When displaying + a ridge in 4-d, Qhull projects the ridge's vertices + to one of its facets' hyperplanes. Use 'Gh' to + project ridges to the intersection of both hyper- + planes. - Ga Display all input points as dots. + Ga Display all input points as dots. - Gc Display the centrum for each facet in 3-d. The - centrum is defined by a green radius sitting on a - blue plane. The plane corresponds to the facet's - hyperplane. The radius is defined by 'C-n' or - 'Cn'. + Gc Display the centrum for each facet in 3-d. The + centrum is defined by a green radius sitting on a + blue plane. The plane corresponds to the facet's + hyperplane. The radius is defined by 'C-n' or + 'Cn'. - GDn Drop dimension n in 3-d or 4-d. The result is a - 2-d or 3-d object. + GDn Drop dimension n in 3-d or 4-d. The result is a + 2-d or 3-d object. - Gh Display hyperplane intersections in 3-d and 4-d. - In 3-d, the intersection is a black line. It lies - on two neighboring hyperplanes (c.f., the blue - squares associated with centrums ('Gc')). In 4-d, - the ridges are projected to the intersection of - both hyperplanes. + Gh Display hyperplane intersections in 3-d and 4-d. + In 3-d, the intersection is a black line. It lies + on two neighboring hyperplanes (c.f., the blue + squares associated with centrums ('Gc')). In 4-d, + the ridges are projected to the intersection of + both hyperplanes. - Gi Display inner planes in 2-d and 3-d. The inner - plane of a facet is below all of its vertices. It - is parallel to the facet's hyperplane. The inner - plane's color is the opposite (1-r,1-g,1-b) of the + Gi Display inner planes in 2-d and 3-d. The inner + plane of a facet is below all of its vertices. It + is parallel to the facet's hyperplane. The inner + plane's color is the opposite (1-r,1-g,1-b) of the -Geometry Center 2003/12/30 11 +Geometry Center 2003/12/30 11 -qhull(1) qhull(1) +qhull(1) qhull(1) - outer plane. Its edges are determined by the ver- - tices. + outer plane. Its edges are determined by the ver- + tices. - Gn Do not display inner or outer planes. By default, - Geomview displays the precise plane (no merging) or - both inner and output planes (merging). Under - merging, Geomview does not display the inner plane - if the the difference between inner and outer is - too small. + Gn Do not display inner or outer planes. By default, + Geomview displays the precise plane (no merging) or + both inner and output planes (merging). Under + merging, Geomview does not display the inner plane + if the the difference between inner and outer is + too small. - Go Display outer planes in 2-d and 3-d. 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. + Go Display outer planes in 2-d and 3-d. 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. - Gp Display coplanar points and vertices as radii. A - radius defines a ball which corresponds to the - imprecision of the point. The imprecision is the - maximum of the roundoff error, the centrum radius, - and maxcoord * (1-An). It is at least 1/20'th of - the maximum coordinate, and ignores post-merging if - pre-merging is done. + Gp Display coplanar points and vertices as radii. A + radius defines a ball which corresponds to the + imprecision of the point. The imprecision is the + maximum of the roundoff error, the centrum radius, + and maxcoord * (1-An). It is at least 1/20'th of + the maximum coordinate, and ignores post-merging if + pre-merging is done. - Gr Display ridges in 3-d. A ridge connects the two - vertices that are shared by neighboring facets. - Ridges are always displayed in 4-d. + Gr Display ridges in 3-d. A ridge connects the two + vertices that are shared by neighboring facets. + Ridges are always displayed in 4-d. - Gt A 3-d Delaunay triangulation looks like a convex - hull with interior facets. Option 'Gt' removes the - outside ridges to reveal the outermost facets. It - automatically sets options 'Gr' and 'GDn'. + Gt A 3-d Delaunay triangulation looks like a convex + hull with interior facets. Option 'Gt' removes the + outside ridges to reveal the outermost facets. It + automatically sets options 'Gr' and 'GDn'. Gv Display vertices as spheres. The radius of the - sphere corresponds to the imprecision of the data. - See 'Gp' for determining the radius. + sphere corresponds to the imprecision of the data. + See 'Gp' for determining the radius. Print options - PAn Only the n largest facets are marked good for - printing. Unless 'PG' is set, 'Pg' is automati- - cally set. + PAn Only the n largest facets are marked good for + printing. Unless 'PG' is set, 'Pg' is automati- + cally set. - Pdk:n Drop facet from output if normal[k] <= n. The - option 'Pdk' uses the default value of 0 for n. + Pdk:n Drop facet from output if normal[k] <= n. The + option 'Pdk' uses the default value of 0 for n. - PDk:n Drop facet from output if normal[k] >= n. The - option 'PDk' uses the default value of 0 for n. + PDk:n Drop facet from output if normal[k] >= n. The + option 'PDk' uses the default value of 0 for n. PFn Only facets with area at least 'n' are marked good - for printing. Unless 'PG' is set, 'Pg' is automat- - ically set. + for printing. Unless 'PG' is set, 'Pg' is automat- + ically set. -Geometry Center 2003/12/30 12 +Geometry Center 2003/12/30 12 -qhull(1) qhull(1) +qhull(1) qhull(1) - Pg Print only good facets. A good facet is either - visible from a point (the 'QGn' option) or includes - a point (the 'QVn' option). It also meets the - requirements of 'Pdk' and 'PDk' options. Option - 'Pg' is automatically set for options 'PAn' and - 'PFn'. + Pg Print only good facets. A good facet is either + visible from a point (the 'QGn' option) or includes + a point (the 'QVn' option). It also meets the + requirements of 'Pdk' and 'PDk' options. Option + 'Pg' is automatically set for options 'PAn' and + 'PFn'. PG Print neighbors of good facets. - PMn Only the n facets with the most merges are marked - good for printing. Unless 'PG' is set, 'Pg' is - automatically set. + PMn Only the n facets with the most merges are marked + good for printing. Unless 'PG' is set, 'Pg' is + automatically set. - Po Force output despite precision problems. Verify ('Tv') does not check - coplanar points. Flipped facets are reported and - concave facets are counted. If 'Po' is used, - points are not partitioned into flipped facets and - a flipped facet is always visible to a point. - Also, if an error occurs before the completion of - Qhull and tracing is not active, 'Po' outputs a - neighborhood of the erroneous facets (if any). + Po Force output despite precision problems. Verify ('Tv') does not check + coplanar points. Flipped facets are reported and + concave facets are counted. If 'Po' is used, + points are not partitioned into flipped facets and + a flipped facet is always visible to a point. + Also, if an error occurs before the completion of + Qhull and tracing is not active, 'Po' outputs a + neighborhood of the erroneous facets (if any). Pp Do not report precision problems. @@ -823,371 +823,365 @@ qhull(1) qhull(1) Qhull control options Qbk:0Bk:0 - Drop dimension k from the input points. This - allows the user to take convex hulls of sub-dimen- - sional objects. It happens before the Delaunay and - Voronoi transformation. + Drop dimension k from the input points. This + allows the user to take convex hulls of sub-dimen- + sional objects. It happens before the Delaunay and + Voronoi transformation. - QbB Scale the input points to fit the unit cube. After - scaling, the lower bound will be -0.5 and the upper - bound +0.5 in all dimensions. For Delaunay and - Voronoi diagrams, scaling happens after projection - to the paraboloid. Under precise arithmetic, scal- - ing does not change the topology of the convex - hull. + QbB Scale the input points to fit the unit cube. After + scaling, the lower bound will be -0.5 and the upper + bound +0.5 in all dimensions. For Delaunay and + Voronoi diagrams, scaling happens after projection + to the paraboloid. Under precise arithmetic, scal- + ing does not change the topology of the convex + hull. - Qbb Scale the last coordinate to [0, m] where m is the - maximum absolute value of the other coordinates. - For Delaunay and Voronoi diagrams, scaling happens - after projection to the paraboloid. It reduces - roundoff error for inputs with integer coordinates. - Under precise arithmetic, scaling does not change - the topology of the convex hull. + Qbb Scale the last coordinate to [0, m] where m is the + maximum absolute value of the other coordinates. + For Delaunay and Voronoi diagrams, scaling happens + after projection to the paraboloid. It reduces + roundoff error for inputs with integer coordinates. + Under precise arithmetic, scaling does not change + the topology of the convex hull. - Qbk:n Scale the k'th coordinate of the input points. - After scaling, the lower bound of the input points - will be n. 'Qbk' scales to -0.5. + Qbk:n Scale the k'th coordinate of the input points. + After scaling, the lower bound of the input points + will be n. 'Qbk' scales to -0.5. -Geometry Center 2003/12/30 13 +Geometry Center 2003/12/30 13 -qhull(1) qhull(1) +qhull(1) qhull(1) - QBk:n Scale the k'th coordinate of the input points. - After scaling, the upper bound will be n. 'QBk' - scales to +0.5. + QBk:n Scale the k'th coordinate of the input points. + After scaling, the upper bound will be n. 'QBk' + scales to +0.5. Qc Keep coplanar points with the nearest facet. Out- - put formats 'p', 'f', 'Gp', 'Fc', 'FN', and 'FP' - will print the points. + put formats 'p', 'f', 'Gp', 'Fc', 'FN', and 'FP' + will print the points. - Qf Partition points to the furthest outside facet. + Qf Partition points to the furthest outside facet. - Qg Only build good facets. With the 'Qg' option, - Qhull will only build those facets that it needs to - determine the good facets in the output. See - 'QGn', 'QVn', and 'PdD' for defining good facets, - and 'Pg' and 'PG' for printing good facets and - their neighbors. + Qg Only build good facets. With the 'Qg' option, + Qhull will only build those facets that it needs to + determine the good facets in the output. See + 'QGn', 'QVn', and 'PdD' for defining good facets, + and 'Pg' and 'PG' for printing good facets and + their neighbors. - QGn A facet is good (see 'Qg' and 'Pg') if it is visi- - ble from point n. If n < 0, a facet is good if it - is not visible from point n. Point n is not added - to the hull (unless 'TCn' or 'TPn'). With rbox, - use the 'Pn,m,r' option to define your point; it - will be point 0 (QG0). + QGn A facet is good (see 'Qg' and 'Pg') if it is visi- + ble from point n. If n < 0, a facet is good if it + is not visible from point n. Point n is not added + to the hull (unless 'TCn' or 'TPn'). With rbox, + use the 'Pn,m,r' option to define your point; it + will be point 0 (QG0). Qi Keep interior points with the nearest facet. Out- - put formats 'p', 'f', 'Gp', 'FN', 'FP', and 'Fc' - will print the points. + put formats 'p', 'f', 'Gp', 'FN', 'FP', and 'Fc' + will print the points. QJn Joggle each input coordinate by adding a random - number in [-n,n]. If a precision error occurs, - then qhull increases n and tries again. It does - not increase n beyond a certain value, and it stops - after a certain number of attempts [see user.h]. - Option 'QJ' selects a default value for n. The - output will be simplicial. For Delaunay triangula- - tions, 'QJn' sets 'Qbb' to scale the last coordi- - nate (not if 'Qbk:n' or 'QBk:n' is set). See also - 'Qt'. + number in [-n,n]. If a precision error occurs, + then qhull increases n and tries again. It does + not increase n beyond a certain value, and it stops + after a certain number of attempts [see user.h]. + Option 'QJ' selects a default value for n. The + output will be simplicial. For Delaunay triangula- + tions, 'QJn' sets 'Qbb' to scale the last coordi- + nate (not if 'Qbk:n' or 'QBk:n' is set). See also + 'Qt'. Qm Only process points that would otherwise increase - max_outside. Other points are treated as coplanar - or interior points. + max_outside. Other points are treated as coplanar + or interior points. Qr Process random outside points instead of furthest - ones. This makes Qhull equivalent to the random- - ized incremental algorithms. CPU time is not - reported since the randomization is inefficient. + ones. This makes Qhull equivalent to the random- + ized incremental algorithms. CPU time is not + reported since the randomization is inefficient. - QRn Randomly rotate the input points. If n=0, use time - as the random number seed. If n>0, use n as the - random number seed. If n=-1, don't rotate but use - time as the random number seed. For Delaunay tri- - angulations ('d' and 'v'), rotate about the last - axis. + QRn Randomly rotate the input points. If n=0, use time + as the random number seed. If n>0, use n as the + random number seed. If n=-1, don't rotate but use + time as the random number seed. For Delaunay tri- + angulations ('d' and 'v'), rotate about the last + axis. -Geometry Center 2003/12/30 14 +Geometry Center 2003/12/30 14 -qhull(1) qhull(1) +qhull(1) qhull(1) - Qs Search all points for the initial simplex. + Qs Search all points for the initial simplex. Qt Triangulated output. Triangulate non-simplicial facets. Qv Test vertex neighbors for convexity after post- - merging. To use the 'Qv' option, you also need to - set a merge option (e.g., 'Qx' or 'C-0'). + merging. To use the 'Qv' option, you also need to + set a merge option (e.g., 'Qx' or 'C-0'). - QVn A good facet (see 'Qg' and 'Pg') includes point n. - If n<0, then a good facet does not include point n. - The point is either in the initial simplex or it is - the first point added to the hull. Option 'QVn' - may not be used with merging. + QVn A good facet (see 'Qg' and 'Pg') includes point n. + If n<0, then a good facet does not include point n. + The point is either in the initial simplex or it is + the first point added to the hull. Option 'QVn' + may not be used with merging. Qx Perform exact merges while building the hull. The - "exact" merges are merging a point into a coplanar - facet (defined by 'Vn', 'Un', and 'C-n'), merging - concave facets, merging duplicate ridges, and merg- - ing flipped facets. Coplanar merges and angle - coplanar merges ('A-n') are not performed. Concav- - ity testing is delayed until a merge occurs. + "exact" merges are merging a point into a coplanar + facet (defined by 'Vn', 'Un', and 'C-n'), merging + concave facets, merging duplicate ridges, and merg- + ing flipped facets. Coplanar merges and angle + coplanar merges ('A-n') are not performed. Concav- + ity testing is delayed until a merge occurs. - After the hull is built, all coplanar merges are - performed (defined by 'C-n' and 'A-n'), then post- - merges are performed (defined by 'Cn' and 'An'). + After the hull is built, all coplanar merges are + performed (defined by 'C-n' and 'A-n'), then post- + merges are performed (defined by 'Cn' and 'An'). Qz Add a point "at infinity" that is above the - paraboloid for Delaunay triangulations and Voronoi - diagrams. This reduces precision problems and - allows the triangulation of cospherical points. + paraboloid for Delaunay triangulations and Voronoi + diagrams. This reduces precision problems and + allows the triangulation of cospherical points. Qhull experiments and speedups Q0 Turn off pre-merging as a default option. With - 'Q0'/'Qx' and without explicit pre-merge options, - Qhull ignores precision issues while constructing - the convex hull. This may lead to precision - errors. If so, a descriptive warning is generated. + 'Q0'/'Qx' and without explicit pre-merge options, + Qhull ignores precision issues while constructing + the convex hull. This may lead to precision + errors. If so, a descriptive warning is generated. - Q1 With 'Q1', Qhull sorts merges by type (coplanar, - angle coplanar, concave) instead of by angle. + Q1 With 'Q1', Qhull sorts merges by type (coplanar, + angle coplanar, concave) instead of by angle. Q2 With 'Q2', Qhull merges all facets at once instead - of using independent sets of merges and then - retesting. + of using independent sets of merges and then + retesting. Q3 With 'Q3', Qhull does not remove redundant ver- - tices. + tices. - Q4 With 'Q4', Qhull avoids merges of an old facet into - a new facet. + Q4 With 'Q4', Qhull avoids merges of an old facet into + a new facet. - Q5 With 'Q5', Qhull does not correct outer planes at - the end. The maximum outer plane is used instead. + Q5 With 'Q5', Qhull does not correct outer planes at + the end. The maximum outer plane is used instead. -Geometry Center 2003/12/30 15 +Geometry Center 2003/12/30 15 -qhull(1) qhull(1) +qhull(1) qhull(1) - Q6 With 'Q6', Qhull does not pre-merge concave or - coplanar facets. + Q6 With 'Q6', Qhull does not pre-merge concave or + coplanar facets. Q7 With 'Q7', Qhull processes facets in depth-first - order instead of breadth-first order. + order instead of breadth-first order. - Q8 With 'Q8' and merging, Qhull does not retain near- - interior points for adjusting outer planes. 'Qc' - will probably retain all points that adjust outer - planes. + Q8 With 'Q8' and merging, Qhull does not retain near- + interior points for adjusting outer planes. 'Qc' + will probably retain all points that adjust outer + planes. Q9 With 'Q9', Qhull processes the furthest of all out- - side sets at each iteration. + side sets at each iteration. Q10 With 'Q10', Qhull does not use special processing - for narrow distributions. + for narrow distributions. Q11 With 'Q11', Qhull copies normals and recomputes - centrums for tricoplanar facets. + centrums for tricoplanar facets. Trace options - Tn Trace at level n. Qhull includes full execution - tracing. 'T-1' traces events. 'T1' traces the - overall execution of the program. 'T2' and 'T3' - trace overall execution and geometric and topologi- - cal events. 'T4' traces the algorithm. 'T5' - includes information about memory allocation and - Gaussian elimination. + Tn Trace at level n. Qhull includes full execution + tracing. 'T-1' traces events. 'T1' traces the + overall execution of the program. 'T2' and 'T3' + trace overall execution and geometric and topologi- + cal events. 'T4' traces the algorithm. 'T5' + includes information about memory allocation and + Gaussian elimination. Tc Check frequently during execution. This will catch - most inconsistency errors. + most inconsistency errors. TCn Stop Qhull after building the cone of new facets - for point n. The output for 'f' includes the cone - and the old hull. See also 'TVn'. + for point n. The output for 'f' includes the cone + and the old hull. See also 'TVn'. - TFn Report progress whenever more than n facets are - created During post-merging, 'TFn' reports progress - after more than n/2 merges. + TFn Report progress whenever more than n facets are + created During post-merging, 'TFn' reports progress + after more than n/2 merges. TI file - Input data from 'file'. The filename may not include - spaces or quotes. + Input data from 'file'. The filename may not include + spaces or quotes. TO file - Output results to 'file'. The name may be enclosed - in single quotes. + Output results to 'file'. The name may be enclosed + in single quotes. TPn Turn on tracing when point n is added to the hull. Trace partitions of point n. If used with TWn, turn off tracing after adding point n to the hull. TRn Rerun qhull n times. Usually used with 'QJn' to - determine the probability that a given joggle will - fail. + determine the probability that a given joggle will + fail. - Ts Collect statistics and print to stderr at the end - of execution. + Ts Collect statistics and print to stderr at the end + of execution. - Tv Verify the convex hull. This checks the topologi- - cal structure, facet convexity, and point inclu- - sion. If precision problems occurred, facet con- - vexity is tested whether or not 'Tv' is selected. - Option 'Tv' does not check point inclusion if + Tv Verify the convex hull. This checks the topologi- + cal structure, facet convexity, and point inclu- + sion. If precision problems occurred, facet con- + vexity is tested whether or not 'Tv' is selected. + Option 'Tv' does not check point inclusion if -Geometry Center 2003/12/30 16 +Geometry Center 2003/12/30 16 -qhull(1) qhull(1) +qhull(1) qhull(1) - forcing output with 'Po', or if 'Q5' is set. + forcing output with 'Po', or if 'Q5' is set. - For point inclusion testing, Qhull verifies that - all points are below all outer planes (facet->max- - outside). Point inclusion is exhaustive if merging - or if the facet-point product is small enough; oth- - erwise Qhull verifies each point with a directed - search (qh_findbest). + For point inclusion testing, Qhull verifies that + all points are below all outer planes (facet->max- + outside). Point inclusion is exhaustive if merging + or if the facet-point product is small enough; oth- + erwise Qhull verifies each point with a directed + search (qh_findbest). - Point inclusion testing occurs after producing out- - put. It prints a message to stderr unless option - 'Pp' is used. This allows the user to interrupt - Qhull without changing the output. + Point inclusion testing occurs after producing out- + put. It prints a message to stderr unless option + 'Pp' is used. This allows the user to interrupt + Qhull without changing the output. - TVn Stop Qhull after adding point n. If n < 0, stop - Qhull before adding point n. Output shows the hull - at this time. See also 'TCn' + TVn Stop Qhull after adding point n. If n < 0, stop + Qhull before adding point n. Output shows the hull + at this time. See also 'TCn' TMn Turn on tracing at n'th merge. - TWn Trace merge facets when the width is greater than - n. + TWn Trace merge facets when the width is greater than + n. Tz Redirect stderr to stdout. BUGS - Please report bugs to Brad Barber at + Please report bugs to Brad Barber at qhull_bug@qhull.org. - If Qhull does not compile, it is due to an incompatibility - between your system and ours. The first thing to check is - that your compiler is ANSI standard. If it is, check the - man page for the best options, or find someone to help - you. If you locate the cause of your problem, please send + If Qhull does not compile, it is due to an incompatibility + between your system and ours. The first thing to check is + that your compiler is ANSI standard. If it is, check the + man page for the best options, or find someone to help + you. If you locate the cause of your problem, please send email since it might help others. - If Qhull compiles but crashes on the test case (rbox D4), - there's still incompatibility between your system and - ours. Typically it's been due to mem.c and memory align- - ment. You can use qh_NOmem in mem.h to turn off memory + If Qhull compiles but crashes on the test case (rbox D4), + there's still incompatibility between your system and + ours. Typically it's been due to mem.c and memory align- + ment. You can use qh_NOmem in mem.h to turn off memory management. Please let us know if you figure out how to fix these problems. - If you do find a problem, try to simplify it before - reporting the error. Try different size inputs to locate - the smallest one that causes an error. You're welcome to - hunt through the code using the execution trace as a - guide. This is especially true if you're incorporating + If you do find a problem, try to simplify it before + reporting the error. Try different size inputs to locate + the smallest one that causes an error. You're welcome to + hunt through the code using the execution trace as a + guide. This is especially true if you're incorporating Qhull into your own program. - When you do report an error, please attach a data set to - the end of your message. This allows us to see the error - for ourselves. Qhull is maintained part-time. + When you do report an error, please attach a data set to + the end of your message. This allows us to see the error + for ourselves. Qhull is maintained part-time. -Geometry Center 2003/12/30 17 +Geometry Center 2003/12/30 17 -qhull(1) qhull(1) +qhull(1) qhull(1) E-MAIL - Please send correspondence to qhull@qhull.org and - report bugs to qhull_bug@qhull.org. Let us know how + Please send correspondence to qhull@qhull.org and + report bugs to qhull_bug@qhull.org. Let us know how you use Qhull. If you mention it in a paper, please send the reference and an abstract. If you would like to get Qhull announcements (e.g., a new - version) and news (any bugs that get fixed, etc.), let us - know and we will add you to our mailing list. If you + version) and news (any bugs that get fixed, etc.), let us + know and we will add you to our mailing list. If you would like to communicate with other Qhull users, we will add you to the qhull_users alias. For Internet news about - geometric algorithms and convex hulls, look at comp.graph- + geometric algorithms and convex hulls, look at comp.graph- ics.algorithms and sci.math.num-analysis SEE ALSO rbox(1) - Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The + Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," ACM Trans. on Math- - ematical Software, 22(4):469-483, Dec. 1996. + ematical Software, 22(4):469-483, Dec. 1996. http://portal.acm.org/citation.cfm?doid=235815.235821 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345 - Clarkson, K.L., K. Mehlhorn, and R. Seidel, "Four results + Clarkson, K.L., K. Mehlhorn, and R. Seidel, "Four results on randomized incremental construction," Computational - Geometry: Theory and Applications, vol. 3, p. 185-211, + Geometry: Theory and Applications, vol. 3, p. 185-211, 1993. - Preparata, F. and M. Shamos, Computational Geometry, - Springer-Verlag, New York, 1985. + Preparata, F. and M. Shamos, Computational Geometry, + Springer-Verlag, New York, 1985. AUTHORS - C. Bradford Barber Hannu Huhdanpaa - bradb@qhull.org hannu@qhull.org - - c/o The Geometry Center - University of Minnesota - 400 Lind Hall - 207 Church Street S.E. - Minneapolis, MN 55455 + C. Bradford Barber Hannu Huhdanpaa + bradb@shore.net hannu@qhull.org ACKNOWLEDGEMENTS - A special thanks to Albert Marden, Victor Milenkovic, the - Geometry Center, Harvard University, and Endocardial Solu- + A special thanks to Albert Marden, Victor Milenkovic, the + Geometry Center, Harvard University, and Endocardial Solu- tions, Inc. for supporting this work. Qhull 1.0 and 2.0 were developed under National Science Foundation @@ -1195,18 +1189,18 @@ ACKNOWLEDGEMENTS -Geometry Center 2003/12/30 18 +Geometry Center 2003/12/30 18 -qhull(1) qhull(1) +qhull(1) qhull(1) guided the original work at Princeton University. - The Geometry Center is supported by grant DMS-8920161 from the National + The Geometry Center was supported by grant DMS-8920161 from the National Science Foundation, by grant DOE/DE-FG02-92ER25137 from the Department of Energy, by the University of Minnesota, and by Minnesota Technology, Inc. @@ -1256,6 +1250,6 @@ qhull(1) qhull(1) -Geometry Center 2003/12/30 19 +Geometry Center 2003/12/30 19 diff --git a/html/qvoron_f.htm b/html/qvoron_f.htm index 712716f..19fbb52 100644 --- a/html/qvoron_f.htm +++ b/html/qvoron_f.htm @@ -93,7 +93,7 @@ in 4-d and higher. It disables the following Qhull 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-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <h3><a href="#TOP">»</a><a name="synopsis">furthest-site qvoronoi synopsis</a></h3> diff --git a/html/qvoronoi.htm b/html/qvoronoi.htm index 88b94a4..409d9a5 100644 --- a/html/qvoronoi.htm +++ b/html/qvoronoi.htm @@ -115,7 +115,7 @@ in 4-d and higher. It disables the following Qhull <a href=qh-quick.htm#options>options</a>: <i>d n v Qbb QbB Qf Qg Qm Qr QR Qv Qx Qz TR E V Fa FA FC FD FS Ft FV Gt Q0,etc</i>. -<p><b>Copyright © 1995-2008 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <p>Voronoi image by KOOK Architecture, Silvan Oesterle and Michael Knauss. diff --git a/html/rbox.man b/html/rbox.man index 13ad4a3..e0b0dc8 100644 --- a/html/rbox.man +++ b/html/rbox.man @@ -1,15 +1,15 @@ -./" This is the Unix manual page for rbox, written in nroff, the standard -./" manual formatter for Unix systems. To format it, type -./" -./" nroff -man rbox.man -./" -./" This will print a formatted copy to standard output. If you want -./" to ensure that the output is plain ascii, free of any control -./" characters that nroff uses for underlining etc, pipe the output -./" through "col -b": -./" -./" nroff -man rbox.man | col -b -./" +.\" This is the Unix manual page for rbox, written in nroff, the standard +.\" manual formatter for Unix systems. To format it, type +.\" +.\" nroff -man rbox.man +.\" +.\" This will print a formatted copy to standard output. If you want +.\" to ensure that the output is plain ascii, free of any control +.\" characters that nroff uses for underlining etc, pipe the output +.\" through "col -b": +.\" +.\" nroff -man rbox.man | col -b +.\" .TH rbox 1 "August 10, 1998" "Geometry Center" .SH NAME rbox \- generate point distributions for qhull @@ -19,8 +19,8 @@ Command "rbox" (w/o arguments) lists the options. .PP rbox generates random or regular points according to the options given, and outputs -the points to stdout. The points are generated in a cube, unless 's' or -'k' option is +the points to stdout. The points are generated in a cube, unless 's' or 'k' +option is given. The format of the output is the following: first line contains the dimension and a comment, second line contains the number of points, and the @@ -32,25 +32,25 @@ rbox 10 10 random points in the unit cube centered at the origin. .TP rbox 10 s D2 -10 random points on a 2-d circle. +10 random points on a 2\[hy]d circle. .TP rbox 100 W0 100 random points on the surface of a cube. .TP rbox 1000 s D4 -1000 random points on a 4-d sphere. +1000 random points on a 4\[hy]d sphere. .TP rbox c D5 O0.5 -a 5-d hypercube with one corner at the origin. +a 5\[hy]d hypercube with one corner at the origin. .TP rbox d D10 -a 10-d diamond. +a 10\[hy]d diamond. .TP rbox x 1000 r W0 100 random points on the surface of a fixed simplex .TP rbox y D12 -a 12-d simplex. +a 12\[hy]d simplex. .TP rbox l 10 10 random points along a spiral @@ -62,22 +62,22 @@ rbox 1000 L10000 D4 s 1000 random points on the surface of a narrow lens. .TP rbox c G2 d G3 -a cube with coordinates +2/-2 and a diamond with coordinates +3/-3. +a cube with coordinates +2/\-2 and a diamond with coordinates +3/\-3. .TP rbox 64 M3,4 z -a rotated, {0,1,2,3} x {0,1,2,3} x {0,1,2,3} lattice (Mesh) of integer points. -'rbox 64 M1,0' is orthogonal. +a rotated, {0,1,2,3} x {0,1,2,3} x {0,1,2,3} lattice (Mesh) of integer +points. 'rbox 64 M1,0' is orthogonal. .TP rbox P0 P0 P0 P0 P0 -5 copies of the origin in 3-d. Try 'rbox P0 P0 P0 P0 P0 | qhull QJ'. +5 copies of the origin in 3\-d. Try 'rbox P0 P0 P0 P0 P0 | qhull QJ'. .TP r 100 s Z1 G0.1 -two cospherical 100-gons plus another cospherical point. +two cospherical 100\-gons plus another cospherical point. .TP 100 s Z1 a cone of points. .TP -100 s Z1e-7 +100 s Z1e\-7 a narrow cone of points with many precision errors. .SH OPTIONS .TP @@ -85,22 +85,22 @@ n number of points .TP Dn -dimension n-d (default 3-d) +dimension n\[hy]d (default 3\[hy]d) .TP Bn bounding box coordinates (default 0.5) .TP l -spiral distribution, available only in 3-d +spiral distribution, available only in 3\[hy]d .TP Ln lens distribution of radius n. May be used with 's', 'r', 'G', and 'W'. .TP Mn,m,r -lattice (Mesh) rotated by {[n,-m,0], [m,n,0], [0,0,r], ...}. +lattice (Mesh) rotated by {[n,\-m,0], [m,n,0], [0,0,r], ...}. Use 'Mm,n' for a rigid rotation with r = sqrt(n^2+m^2). 'M1,0' is an -orthogonal lattice. For example, '27 M1,0' is {0,1,2} x {0,1,2} x {0,1,2}. -'27 M3,4 z' is a rotated integer lattice. +orthogonal lattice. For example, '27 M1,0' is {0,1,2} x {0,1,2} x +{0,1,2}. '27 M3,4 z' is a rotated integer lattice. .TP s cospherical points randomly generated in a cube and projected to the unit sphere @@ -118,13 +118,13 @@ c add a unit cube to the output .TP c Gm -add a cube with all combinations of +m and -m to the output +add a cube with all combinations of +m and \-m to the output .TP d add a unit diamond to the output. .TP d Gm -add a diamond made of 0, +m and -m to the output +add a diamond made of 0, +m and \-m to the output .TP Pn,m,r add point [n,m,r] to the output first. Pad coordinates with 0.0. @@ -143,12 +143,12 @@ set the random number seed to n. .TP z generate integer coordinates. Use 'Bn' to change the range. -The default is 'B1e6' for six-digit coordinates. In R^4, seven-digit +The default is 'B1e6' for six\[hy]digit coordinates. In R^4, seven\[hy]digit coordinates will overflow hyperplane normalization. .TP Zn s restrict points to a disk about the z+ axis and the sphere (default Z1.0). -Includes the opposite pole. 'Z1e-6' generates degenerate points under +Includes the opposite pole. 'Z1e\-6' generates degenerate points under single precision. .TP Zn Gm s @@ -168,9 +168,6 @@ qhull(1) .SH AUTHOR .nf C. Bradford Barber -c/o The Geometry Center -400 Lind Hall -207 Church Street S.E. -Minneapolis, MN 55455 +bradb@shore.net .fi diff --git a/html/rbox.txt b/html/rbox.txt index bc45952..3378d5e 100644 --- a/html/rbox.txt +++ b/html/rbox.txt @@ -1,7 +1,7 @@ -rbox(1) rbox(1) +rbox(1) rbox(1) NAME @@ -11,7 +11,7 @@ SYNOPSIS Command "rbox" (w/o arguments) lists the options. DESCRIPTION - rbox generates random or regular points according to the + rbox generates random or regular points according to the options given, and outputs the points to stdout. The points are generated in a cube, unless 's' or given. The format of the output is the following: first line contains @@ -22,73 +22,73 @@ DESCRIPTION EXAMPLES rbox 10 - 10 random points in the unit cube centered at the - origin. + 10 random points in the unit cube centered at the + origin. rbox 10 s D2 - 10 random points on a 2-d circle. + 10 random points on a 2-d circle. rbox 100 W0 - 100 random points on the surface of a cube. + 100 random points on the surface of a cube. rbox 1000 s D4 - 1000 random points on a 4-d sphere. + 1000 random points on a 4-d sphere. rbox c D5 O0.5 - a 5-d hypercube with one corner at the origin. + a 5-d hypercube with one corner at the origin. rbox d D10 - a 10-d diamond. + a 10-d diamond. rbox x 1000 r W0 - 100 random points on the surface of a fixed simplex + 100 random points on the surface of a fixed simplex rbox y D12 - a 12-d simplex. + a 12-d simplex. rbox l 10 - 10 random points along a spiral + 10 random points along a spiral rbox l 10 r - 10 regular points along a spiral plus two end - points + 10 regular points along a spiral plus two end + points rbox 1000 L10000 D4 s - 1000 random points on the surface of a narrow lens. + 1000 random points on the surface of a narrow lens. rbox c G2 d G3 - a cube with coordinates +2/-2 and a diamond with + a cube with coordinates +2/-2 and a diamond with -Geometry Center August 10, 1998 1 +Geometry Center August 10, 1998 1 -rbox(1) rbox(1) +rbox(1) rbox(1) - coordinates +3/-3. + coordinates +3/-3. rbox 64 M3,4 z - a rotated, {0,1,2,3} x {0,1,2,3} x {0,1,2,3} lat- - tice (Mesh) of integer points. + a rotated, {0,1,2,3} x {0,1,2,3} x {0,1,2,3} lat- + tice (Mesh) of integer points. rbox P0 P0 P0 P0 P0 - 5 copies of the origin in 3-d. Try 'rbox P0 P0 P0 - P0 P0 | qhull QJ'. + 5 copies of the origin in 3-d. Try 'rbox P0 P0 P0 + P0 P0 | qhull QJ'. r 100 s Z1 G0.1 - two cospherical 100-gons plus another cospherical - point. + two cospherical 100-gons plus another cospherical + point. 100 s Z1 - a cone of points. + a cone of points. 100 s Z1e-7 - a narrow cone of points with many precision errors. + a narrow cone of points with many precision errors. OPTIONS n number of points @@ -100,40 +100,40 @@ OPTIONS l spiral distribution, available only in 3-d Ln lens distribution of radius n. May be used with - 's', 'r', 'G', and 'W'. + 's', 'r', 'G', and 'W'. - Mn,m,r lattice (Mesh) rotated by {[n,-m,0], [m,n,0], - [0,0,r], ...}. Use 'Mm,n' for a rigid rotation - with r = sqrt(n^2+m^2). 'M1,0' is an orthogonal - lattice. For example, '27 M1,0' is {0,1,2} x - {0,1,2} x {0,1,2}. + Mn,m,r lattice (Mesh) rotated by {[n,-m,0], [m,n,0], + [0,0,r], ...}. Use 'Mm,n' for a rigid rotation + with r = sqrt(n^2+m^2). 'M1,0' is an orthogonal + lattice. For example, '27 M1,0' is {0,1,2} x + {0,1,2} x {0,1,2}. s cospherical points randomly generated in a cube and - projected to the unit sphere + projected to the unit sphere x simplicial distribution. It is fixed for option - 'r'. May be used with 'W'. + 'r'. May be used with 'W'. - y simplicial distribution plus a simplex. Both 'x' - and 'y' generate the same points. + y simplicial distribution plus a simplex. Both 'x' + and 'y' generate the same points. - Wn restrict points to distance n of the surface of a - sphere or a cube + Wn restrict points to distance n of the surface of a + sphere or a cube c add a unit cube to the output c Gm add a cube with all combinations of +m and -m to - the output + the output -Geometry Center August 10, 1998 2 +Geometry Center August 10, 1998 2 -rbox(1) rbox(1) +rbox(1) rbox(1) d add a unit diamond to the output. @@ -141,40 +141,40 @@ rbox(1) rbox(1) d Gm add a diamond made of 0, +m and -m to the output Pn,m,r add point [n,m,r] to the output first. Pad coordi- - nates with 0.0. + nates with 0.0. n Remove the command line from the first line of out- - put. + put. On offset the data by adding n to each coordinate. t use time in seconds as the random number seed - (default is command line). + (default is command line). tn set the random number seed to n. z generate integer coordinates. Use 'Bn' to change - the range. The default is 'B1e6' for six-digit - coordinates. In R^4, seven-digit coordinates will - overflow hyperplane normalization. + the range. The default is 'B1e6' for six-digit + coordinates. In R^4, seven-digit coordinates will + overflow hyperplane normalization. Zn s restrict points to a disk about the z+ axis and the - sphere (default Z1.0). Includes the opposite pole. - 'Z1e-6' generates degenerate points under single - precision. + sphere (default Z1.0). Includes the opposite pole. + 'Z1e-6' generates degenerate points under single + precision. Zn Gm s - same as Zn with an empty center (default G0.5). + same as Zn with an empty center (default G0.5). r s D2 generate a regular polygon r s Z1 G0.1 - generate a regular cone + generate a regular cone BUGS Some combinations of arguments generate odd results. - Report bugs to qhull_bug@qhull.org, other correspon- + Report bugs to qhull_bug@qhull.org, other correspon- dence to qhull@qhull.org SEE ALSO @@ -182,17 +182,14 @@ SEE ALSO AUTHOR C. Bradford Barber - c/o The Geometry Center - 400 Lind Hall - 207 Church Street S.E. - Minneapolis, MN 55455 + bradb@shore.net + - -Geometry Center August 10, 1998 3 +Geometry Center August 10, 1998 3 diff --git a/index.htm b/index.htm index 8ca94d7..d7681cd 100644 --- a/index.htm +++ b/index.htm @@ -63,7 +63,7 @@ and higher. </p> www.qhull.org <p> <li><a href="http://www.qhull.org/news/qhull-news.html#users">How</a> is Qhull used?</li> - <li><a href="http://citeseer.ist.psu.edu/context/86585/83502">CiteSeer</a> references to Qhull + <li><a href="http://citeseerx.ist.psu.edu/showciting?doi=10.1.1.54.6345&sort=cite">CiteSeer</a> references to Qhull </p> <li> <a href=http://www.google.com/search?as_q=qhull+-debian+-cvs+-gentoo+-pool+-mirrors&num=100>Google</a> Qhull, @@ -214,7 +214,7 @@ href="http://www.geomview.org">Geomview</a>. An alternative is <a href=http://www.vtk.org/>VTK</a>.</p> <p>For an article about Qhull, download from <a -href="http://citeseer.ist.psu.edu/83502.html">CiteSeer</a> or <a +href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.6345">CiteSeer</a> or <a href="http://portal.acm.org/citation.cfm?doid=235815.235821">www.acm.org</a>: </p> diff --git a/qhull.ilk b/qhull.ilk new file mode 100644 index 0000000000000000000000000000000000000000..6c31410ad03e6c994a7dd1a623eeb1155ae5da2e GIT binary patch literal 485320 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 X29;hGHP?+|P50vqwtj*B7~<3awChAu literal 0 HcmV?d00001 diff --git a/qtpro/libqhull/libqhull.pro b/qtpro/libqhull/libqhull.pro index ddff30f..079f2c0 100644 --- a/qtpro/libqhull/libqhull.pro +++ b/qtpro/libqhull/libqhull.pro @@ -2,9 +2,13 @@ # libqhull.pro -- Qt project for Qhull static library # ------------------------------------------------- -CONFIG += staticlib -TEMPLATE = lib DESTDIR = ../.. +TEMPLATE = lib +CONFIG += staticlib warn_on +CONFIG -= app_bundle qt +QMAKE_CFLAGS_DEBUG += -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings +QMAKE_CFLAGS_DEBUG += -Wno-sign-conversion # Many size_t vs. int errors +#QMAKE_CFLAGS_DEBUG += -Wconversion # no workaround for bit-field conversion errors build_pass:CONFIG(debug, debug|release):{ TARGET = qhulld OBJECTS_DIR = ../../tmp/libqhull/Debug @@ -12,7 +16,6 @@ build_pass:CONFIG(debug, debug|release):{ TARGET = qhull OBJECTS_DIR = ../../tmp/libqhull/Release } -CONFIG -= app_bundle qt MOC_DIR = ../../tmp/moc RCC_DIR = ../../tmp/rcc @@ -33,6 +36,39 @@ SOURCES += src/stat.c SOURCES += src/user.c SOURCES += src/usermem.c SOURCES += src/userprintf.c +OTHER_FILES += Announce.txt +OTHER_FILES += COPYING.txt +OTHER_FILES += File_id.diz +OTHER_FILES += html/index.htm +OTHER_FILES += html/qconvex.htm +OTHER_FILES += html/qdelau_f.htm +OTHER_FILES += html/qdelaun.htm +OTHER_FILES += html/qhalf.htm +OTHER_FILES += html/qh-code.htm +OTHER_FILES += html/qh-eg.htm +OTHER_FILES += html/qh-faq.htm +OTHER_FILES += html/qh-get.htm +OTHER_FILES += html/qh-impre.htm +OTHER_FILES += html/qh-optc.htm +OTHER_FILES += html/qh-optf.htm +OTHER_FILES += html/qh-optg.htm +OTHER_FILES += html/qh-opto.htm +OTHER_FILES += html/qh-optp.htm +OTHER_FILES += html/qh-optq.htm +OTHER_FILES += html/qh-optt.htm +OTHER_FILES += html/qh-quick.htm +OTHER_FILES += html/qhull.htm +OTHER_FILES += html/qhull.man +OTHER_FILES += html/qhull.txt +OTHER_FILES += html/qhull-cpp.xml +OTHER_FILES += html/qvoron_f.htm +OTHER_FILES += html/qvoronoi.htm +OTHER_FILES += html/rbox.htm +OTHER_FILES += html/rbox.man +OTHER_FILES += html/rbox.txt +OTHER_FILES += index.htm +OTHER_FILES += README.txt +OTHER_FILES += REGISTER.txt OTHER_FILES += src/Changes.txt OTHER_FILES += src/index.htm OTHER_FILES += src/Make-config.sh diff --git a/qtpro/libqhullcpp/libqhullcpp.pro b/qtpro/libqhullcpp/libqhullcpp.pro index 6c40613..38793b0 100644 --- a/qtpro/libqhullcpp/libqhullcpp.pro +++ b/qtpro/libqhullcpp/libqhullcpp.pro @@ -3,22 +3,26 @@ # ------------------------------------------------- DESTDIR = ../.. -CONFIG += shared TEMPLATE = lib +CONFIG += shared warn_on +CONFIG -= app_bundle +LIBS += -L../.. build_pass:CONFIG(debug, debug|release):{ TARGET = qhullcppd - LIBS += ../../libqhulld.a + LIBS += libqhulld OBJECTS_DIR = ../../tmp/libqhullcpp/Debug }else:build_pass:CONFIG(release, debug|release):{ TARGET = qhullcpp - LIBS += ../../libqhull.a + LIBS += libqhull OBJECTS_DIR = ../../tmp/libqhullcpp/Release } QT -= gui -CONFIG -= app_bundle MOC_DIR = ../../tmp/moc RCC_DIR = ../../tmp/rcc INCLUDEPATH = ../../cpp;../../cpp/road;../../tmp +#FIXUP QMAKE_CXXFLAGS_DEBUG += -Wall -Wextra -Wshadow -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 VPATH = ../.. SOURCES += cpp/Coordinates.cpp diff --git a/qtpro/qhull-all.pro b/qtpro/qhull-all.pro new file mode 100644 index 0000000..ff58d66 --- /dev/null +++ b/qtpro/qhull-all.pro @@ -0,0 +1,13 @@ +# ------------------------------------------------- +# qhull-all.pro -- Qt project to build all files +# ------------------------------------------------- + +TEMPLATE = subdirs +CONFIG += ordered + +SUBDIRS += libqhull +SUBDIRS += libqhullcpp +SUBDIRS += qhull +SUBDIRS += qhulltest +SUBDIRS += rbox +SUBDIRS += user_eg3 diff --git a/qtpro/qhull/qhull.pro b/qtpro/qhull/qhull.pro index 6459103..cb63646 100644 --- a/qtpro/qhull/qhull.pro +++ b/qtpro/qhull/qhull.pro @@ -5,16 +5,17 @@ TARGET = qhull DESTDIR = ../.. TEMPLATE = app -CONFIG += console +CONFIG += console warn_on +CONFIG -= app_bundle +LIBS += -L../.. build_pass:CONFIG(debug, debug|release):{ - LIBS += ../../libqhulld.a + LIBS += libqhulld OBJECTS_DIR = ../../tmp/qhull/Debug }else:build_pass:CONFIG(release, debug|release):{ - LIBS += ../../libqhull.a + LIBS += libqhull OBJECTS_DIR = ../../tmp/qhull/Release } QT -= gui -CONFIG -= app_bundle MOC_DIR = ../../tmp/moc RCC_DIR = ../../tmp/rcc INCLUDEPATH = ../../cpp;../../cpp/road;../../tmp diff --git a/qtpro/qhulltest/qhulltest.pro b/qtpro/qhulltest/qhulltest.pro index c199cf6..acf2a40 100644 --- a/qtpro/qhulltest/qhulltest.pro +++ b/qtpro/qhulltest/qhulltest.pro @@ -5,16 +5,17 @@ TARGET = qhulltest DESTDIR = ../.. TEMPLATE = app -CONFIG += console qtestlib +CONFIG += console qtestlib warn_on +CONFIG -= app_bundle +LIBS += -L../.. build_pass:CONFIG(debug, debug|release):{ - LIBS += ../../qhullcppd.dll + LIBS += libqhullcppd OBJECTS_DIR = ../../tmp/qhulltest/Debug }else:build_pass:CONFIG(release, debug|release):{ - LIBS += ../../qhullcpp.dll + LIBS += libqhullcpp OBJECTS_DIR = ../../tmp/qhulltest/Release } QT -= gui -CONFIG -= app_bundle MOC_DIR = ../../tmp/moc RCC_DIR = ../../tmp/rcc INCLUDEPATH = ../../cpp;../../cpp/road;../../tmp diff --git a/qtpro/rbox/rbox.pro b/qtpro/rbox/rbox.pro index d93aacf..72afc82 100644 --- a/qtpro/rbox/rbox.pro +++ b/qtpro/rbox/rbox.pro @@ -5,11 +5,12 @@ TARGET = rbox DESTDIR = ../.. TEMPLATE = app CONFIG += console +LIBS += -L../.. build_pass:CONFIG(debug, debug|release):{ - LIBS += ../../libqhulld.a + LIBS += libqhulld OBJECTS_DIR = ../../tmp/rbox/Debug }else:build_pass:CONFIG(release, debug|release):{ - LIBS += ../../libqhull.a + LIBS += libqhull OBJECTS_DIR = ../../tmp/rbox/Release } QT -= gui diff --git a/qtpro/user_eg3/user_eg3.pro b/qtpro/user_eg3/user_eg3.pro index a3a847e..5b987d7 100644 --- a/qtpro/user_eg3/user_eg3.pro +++ b/qtpro/user_eg3/user_eg3.pro @@ -5,11 +5,12 @@ TARGET = user_eg3 DESTDIR = ../.. TEMPLATE = app CONFIG += console +LIBS += -L../.. build_pass:CONFIG(debug, debug|release):{ - LIBS += ../../qhullcppd.dll + LIBS += libqhullcppd OBJECTS_DIR = ../../tmp/user_eg3/Debug }else:build_pass:CONFIG(release, debug|release):{ - LIBS += ../../qhullcpp.dll + LIBS += libqhullcpp OBJECTS_DIR = ../../tmp/user_eg3/Release } QT -= gui diff --git a/rbox.ilk b/rbox.ilk new file mode 100644 index 0000000000000000000000000000000000000000..8eef05d0678a46175a773033c843eee6a71fb6bf GIT binary patch literal 484968 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 literal 0 HcmV?d00001 diff --git a/src/Changes.txt b/src/Changes.txt index 0e874cd..c01f010 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -1,16 +1,14 @@ .............This file lists all changes to qhull and rbox..................... -Doc -- qhullcpplib must be before qhull.lib _qh_fprintf already defined in qhull.lib +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 +- How to handle 64-bit possible loss of data. WARN64 - 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]' +- 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 +- Rules for use of qh_qh and multi processes UsingQhull errorIfAnotherUser ~QhullPoints() needs ownership of qh_qh @@ -19,16 +17,18 @@ Rules for use of qh_qh and multi processes 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 - need a page with all QHnnnn for web lookups - - Update citeseer reference in index.htm#ref - QhullVertex.dimension() is not quite correct, epensive - Check globalAngleEpsilon - Deprecate save_qhull() + - Review email for doc changes -Suggestions +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 @@ -42,12 +42,19 @@ Suggestions - Fix doc comments Qhull cpp questions + - iterator Coordinates::operator++() { return iterator(++i); } //FIXUP 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 - - Qhull and RboxPoints messaging - - change qh_printf() to a virtual function + - 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? + - 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 @@ -57,128 +64,162 @@ Qhull cpp questions - 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" - - Alsoo --, +=, and -= + - Also --, +=, and -= iterator &operator++() { return iterator(i++); } - if vector<coordT> inheritance is bad, is QhullVertexSet OK? To do - ConvexHull is a submodule to git. How to get rid of? - ** Change to static link library before shipping, or define Qt for static linking. - - Configure qhull-qt.dll - - ignore Warnings? How to configure Qhull output. Trace and results should go to stdout/stderr - Review Warn64 - - review all FIXUP. Add dates? - - Clear out QhullQh -- it is just the POD type - void checkIfQhullRan(); - void errorAnotherUser(); - void startQhullAccess(); - void stopQhullAccess(); - - Redo .pro files for shared cpp library and static qhull library - - Add dependencies between the .pro files, or define in the .pro files - If you want to specify it in the pro file then you can follow the following steps to get the dependencies to be generated automatically: - 1a) there is a Lib/DLL project with the target name (the .lib is used, not the .dll of course) being that of what is used on link line of an other project in your solution - 1b) there is a Exe project with the target name being that of what is used in a custom build-step of an other project in your solution - 2) you don't use paths in the TARGET variable (use DESTDIR/DLLDESTDIR for that), like TARGET=$(SOME_VARIABLE)/myLib, won't work - 3) if you have a special location for your libs, you specify the -Lmy/library/path and LIBS += mylib, instead of just using LIBS += my/library/path/mylib - 4) the leaf projects are created before you generate the solution file. (You can use the recursive flag for qmake to do this, like "qmake -tp vc -r [yourproject.pro]" - -This is achievable by utilizing the MAKEFILE variable to indicate what you want to call the makefile, as for the location of it then you just need to call qmake from where you want it to be generated in. To get the pro file how you want it something like: - - -Pick up changes from Kent Williams - -qhull 2009.0.1 2009/12/08 - - Reordered #include from specific to general. Move up .h for module. - - 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 - - Bug report http://gcc.gnu.org/ml/gcc-bugs/2007-09/msg00474.html + - SUBDIRS to sln -- qmake -tp vc + - review all #pragma + - review all FIXUP [^0-9] + - clean up warnings for libqhullcpp + - Decide on citeseer 10.1.1.117.405 or 10.1.1.54.6345 + - Abandon savannah + - Add config directory to Qhull + - Fix README Visual C++ quickstart + - Review changes with Kent Williams + Keep size of qh_set as int, set.h, global.c + Keep size of qh_mem as int, mem.h, global.c + Why rename index in qh_initthresholds(), poly2.c, qhull.c -- Seems OK + - Run qhull regression tests + - Measure performance of Qhull + +qhull 2010.0.1 2010/01/02 + +New Features: + - Added option 'Ta' to annotate output with message codes + +Preliminary C++ support: + - Warning: 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 - - Renamed html/qh-in.htm to html/qh-code.htm - - Report not enough points if d points, Delaunay, and not Qz - - Multithreaded -- call largest dimension for infinityPoint() and origin() - - Oh... Ztotcheck, btw, I had to add to the statistics enum in the qh_KEEPstatistics=0 case in stat.h; otherwise stat.c gets an undefined symbol error. [R. Gardener] + - 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] + - Allow quoted filenames for 'TO ...' and 'TI ...' + - 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: + - 'rbox tN' takes an integer (previously allowed floats) + - Renamed qh.coplanarset to coplanarfacetset. Avoids conflict with facetT.coplanarset - qh_restore_qhull() zeroes out qh.old_qhstat and qh.old_tempstack. Ownership moved. - - Removed qh.old_stat -- never used - - Removed qhmem.curlong. qa_memfreeshort computes curlong from cntlong and cntfree - Rewrote save_qhull/restore_qhull + - Add Ztotcheck to zzdef_ [R. Gardener] - Add message code to error messages and warnings (e.g., QH6012) - - Renamed qh.coplanarset to coplanarfacetset. Avoids conflict with facetT.coplanarset + - 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: + - 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 + - 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 + - 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 - - Added full tracing for short memory allocations. - - Memory tracing (T5) redone for sort order by object + - 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) - - Fixed parentheses around warning for missing 'Qc' [qh_initqhull_outputflags] + - 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_ + 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] + - Change literal strings to const char* [kwilliams] + - 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 - - Clear qh.ERREXITcalled at end of qh_errexit(). - - Documented Qhull's C++ interface [http://../html/qh-code.htm#cpp] - - Renamed qh-in.htm to qh-code.htm - - Removed qhull_interface.cpp - - Documented <A href="qh-code.htm#cpp">C++ interface</a> - - qh_printfacet [io.c] Removed extra space for neighboring facets - - Allow 'd' and 'v' as the filename for 'TO ..' and 'TI ...' in qdelaunay [M. Jambon] - - Allow quoted filenames for 'TO ...' and 'TI ...' - - qh_printcenter [io.c] removed unreachable fprintf argument - - qh_product_output [io.c] may be called multiple times (C++ interface) - - qh_getarea() [geom2.c] checks facet->isarea. Set by QhullFacet.facetArea() - - qh_getarea() [geom2.c] ignored on multiple calls (qh.hasAreaVolume) - - qh_triangulate() [poly2.c] ignored on multiple calls (qh.hasTriangulation) + - qh_produce_output [io.c] may be called multiple times (C++ interface) - Moved SETsizeaddr_() to qset.h for use by QhullSet.cpp - - Add statistics for vertex_visit and visit_id to buildtracing - - Add reference to 'Qt' to 'i' - - Add reference to 'FS' to 'FA' - - qh-impre.htm discusses precision issues for halfspace intersection - - Defined qh_OPTIONline [user.h] as max length of option line ('FO') - Option 'Tz' sets flag qh.USEstdout for QhullPoints.cpp - - Add cross references between options 'FA' and 'FS' - - Report all hidden options before exiting in qh_checkflags() - - Added option 'Ta' to annotate output with message codes - 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 - - Updated copyright to 2008 - Moved qh_strtod/qh_strtol from global.c to random.c for use in rboxlib.c - - 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 rbox ignoring flags that were not separated by spaces - - Fixed rbox buffer overflow of 'command' when appending seedbuf - - Fixed upper bound of sanity check for qh_RANDOMmax in qh_initqhull_globals() - - Report error if negative arguments to rbox 'G', 'L', 'Z' - - Unknown rbox flag changed from a warning to an error - Split out random functions into random.c - - Defined scale and offset parameters for qh_randomfactor - - Set error status 4 qh_ERRmem if rbox runs out of memory - - In qh_printafacet(), changed error output to 'qh ferr' - Added message codes to qh_fprintf(). See its definition in user.c - - In mem.h, changed ptr_intT to long. qh_meminit() checks that it holds a 'void*' - - Fixed 64-bit warnings (marked with "WARN64") - - qhull.exe is ... faster/slower - - Add sln and vcproj files for building Qhull -- add to README notes - - Removed extra spaces at end of line - - Fixed warnings at VC8, level 4 - - In libqhull.c, added explicit casts from long to float, Avoids warning - - In global.c, cast time() to int for QRandom-seed. Avoids warning - 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 - - Fixed mindist initialization if !testcentrum in io.c findbest_test [Ratcliff] + - 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 + - Renamed qh-in.htm to 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 - Updated Qhull citation with page numbers. - Proposed project: constructing Voronoi diagram - Proposed project: computing Voronoi volumes - - Fixed qh_findfacet_all(), "REALmin" should be "-REALmax" [L.A. Taylor]. - Effects library users for convex hulls and halfspace intersections. + +qhull 2009.1 2009/6/11 + +This is a maintenance release done by Rafael Laboissiere <rafael@debian.org>. + - 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 qhull 2003.1 2003/12/30 diff --git a/src/geom.c b/src/geom.c index ceb534f..5a050b8 100644 --- a/src/geom.c +++ b/src/geom.c @@ -6,9 +6,9 @@ see qh-geom.htm and geom.h - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/geom.c#25 $$Change: 1047 $ - $DateTime: 2009/09/12 21:08:23 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/geom.c#28 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ infrequent code goes into geom2.c */ @@ -892,7 +892,8 @@ void qh_normalize2 (coordT *normal, int dim, boolT toporient, */ pointT *qh_projectpoint(pointT *point, facetT *facet, realT dist) { pointT *newpoint, *np, *normal; - int normsize= qh normal_size,k; + int normsize= qh normal_size; + int k; void **freelistp; /* used !qh_NOmem */ qh_memalloc_(normsize, freelistp, newpoint, pointT); @@ -928,7 +929,8 @@ pointT *qh_projectpoint(pointT *point, facetT *facet, realT dist) { void qh_setfacetplane(facetT *facet) { pointT *point; vertexT *vertex, **vertexp; - int k,i, normsize= qh normal_size, oldtrace= 0; + int normsize= qh normal_size; + int k,i, oldtrace= 0; realT dist; void **freelistp; /* used !qh_NOmem */ coordT *coord, *gmcoord; diff --git a/src/geom.h b/src/geom.h index 038a036..aa9d651 100644 --- a/src/geom.h +++ b/src/geom.h @@ -6,9 +6,9 @@ see qh-geom.htm and geom.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/geom.h#15 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/geom.h#17 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFgeom @@ -153,8 +153,8 @@ int qh_mindiff(realT *vecA, realT *vecB, int dim); boolT qh_orientoutside(facetT *facet); void qh_outerinner(facetT *facet, realT *outerplane, realT *innerplane); coordT qh_pointdist(pointT *point1, pointT *point2, int dim); -void qh_printmatrix(FILE *fp, char *string, realT **rows, int numrow, int numcol); -void qh_printpoints(FILE *fp, char *string, setT *points); +void qh_printmatrix(FILE *fp, const char *string, realT **rows, int numrow, int numcol); +void qh_printpoints(FILE *fp, const char *string, setT *points); void qh_projectinput(void); void qh_projectpoints(signed char *project, int n, realT *points, int numpoints, int dim, realT *newpoints, int newdim); diff --git a/src/geom2.c b/src/geom2.c index 52296a9..5150b91 100644 --- a/src/geom2.c +++ b/src/geom2.c @@ -7,9 +7,9 @@ see qh-geom.htm and geom.h - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/geom2.c#25 $$Change: 1059 $ - $DateTime: 2009/10/30 18:26:26 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/geom2.c#28 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ frequently used code goes into geom.c */ @@ -28,13 +28,13 @@ coordT *qh_copypoints(coordT *points, int numpoints, int dimension) { int size; coordT *newpoints; - size= numpoints * dimension * sizeof(coordT); - if (!(newpoints=(coordT*)qh_malloc(size))) { + size= numpoints * dimension * (int)sizeof(coordT); + if (!(newpoints=(coordT*)qh_malloc((size_t)size))) { qh_fprintf(qh ferr, 6004, "qhull error: insufficient memory to copy %d points\n", numpoints); qh_errexit(qh_ERRmem, NULL, NULL); } - memcpy((char *)newpoints, (char *)points, size); + memcpy((char *)newpoints, (char *)points, (size_t)size); return newpoints; } /* copypoints */ @@ -470,7 +470,7 @@ realT qh_facetarea(facetT *facet) { centrum= qh_getcentrum(facet); FOREACHridge_(facet->ridges) area += qh_facetarea_simplex(qh hull_dim, centrum, ridge->vertices, - NULL, (ridge->top == facet), facet->normal, &facet->offset); + NULL, (boolT)(ridge->top == facet), facet->normal, &facet->offset); if (qh CENTERtype != qh_AScentrum) qh_memfree(centrum, qh normal_size); } @@ -871,7 +871,7 @@ boolT qh_inthresholds(coordT *normal, realT *angle) { sets the Delaunay projection */ void qh_joggleinput(void) { - int size, i, seed; + int i, seed, size; coordT *coordp, *inputp; realT randr, randa, randb; @@ -879,7 +879,7 @@ void qh_joggleinput(void) { qh input_points= qh first_point; qh input_malloc= qh POINTSmalloc; size= qh num_points * qh hull_dim * sizeof(coordT); - if (!(qh first_point=(coordT*)qh_malloc(size))) { + if (!(qh first_point=(coordT*)qh_malloc((size_t)size))) { qh_fprintf(qh ferr, 6009, "qhull error: insufficient memory to joggle %d points\n", qh num_points); qh_errexit(qh_ERRmem, NULL, NULL); @@ -1340,7 +1340,7 @@ coordT qh_pointdist(pointT *point1, pointT *point2, int dim) { notes: print a vector by qh_printmatrix(fp, "", &vect, 1, len) */ -void qh_printmatrix(FILE *fp, char *string, realT **rows, int numrow, int numcol) { +void qh_printmatrix(FILE *fp, const char *string, realT **rows, int numrow, int numcol) { realT *rowp; realT r; /*bug fix*/ int i,k; @@ -1364,7 +1364,7 @@ void qh_printmatrix(FILE *fp, char *string, realT **rows, int numrow, int numcol print pointids to fp for a set of points if string, prints string and 'p' point ids */ -void qh_printpoints(FILE *fp, char *string, setT *points) { +void qh_printpoints(FILE *fp, const char *string, setT *points) { pointT *point, **pointp; if (string) { @@ -1428,7 +1428,7 @@ void qh_projectinput(void) { realT paraboloid, maxboloid= 0; project= (signed char*)qh_memalloc(size); - memset((char*)project, 0, size); + memset((char*)project, 0, (size_t)size); for (k=0; k < qh input_dim; k++) { /* skip Delaunay bound */ if (qh lower_bound[k] == 0 && qh upper_bound[k] == 0) { project[k]= -1; @@ -1465,7 +1465,7 @@ void qh_projectinput(void) { qh_projectpoints(project, qh input_dim, qh feasible_point, 1, qh input_dim, qh feasible_point, newdim); } - qh_memfree(project, ((qh input_dim+1)*sizeof(*project))); + qh_memfree(project, (qh input_dim+1)*sizeof(*project)); if (qh POINTSmalloc) qh_free(qh first_point); qh first_point= newpoints; diff --git a/src/global.c b/src/global.c index eb636eb..bf943c7 100644 --- a/src/global.c +++ b/src/global.c @@ -11,9 +11,9 @@ see qhull_a.h for internal functions - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/global.c#47 $$Change: 1111 $ - $DateTime: 2009/12/10 22:15:38 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/global.c#50 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -47,7 +47,7 @@ qhT qh_qh; /* all global variables. recompile user_eg.c, rbox.c, libqhull.c, qconvex.c, qdelaun.c qvoronoi.c, qhalf.c */ -char *qh_version = "2009.0.1 2009/12/08"; +const char *qh_version = "2010.0.1 2010/01/02"; /*-<a href="qh-globa.htm#TOC" >-------------------------------</a><a name="appendprint">-</a> @@ -83,7 +83,8 @@ void qh_appendprint(qh_PRINT format) { qh_initflags() initializes Qhull according to commandStr */ void qh_checkflags(char *command, char *hiddenflags) { - char *s= command, *t, *chkerr, key, opt, prevopt; + char *s= command, *t, *chkerr; /* qh_skipfilename is non-const */ + char key, opt, prevopt; char chkkey[]= " "; char chkopt[]= " "; char chkopt2[]= " "; @@ -349,7 +350,7 @@ void qh_freebuild(boolT allmem) { if (vertex->next) qh_delvertex(vertex); else { - qh_memfree(vertex, sizeof(vertexT)); + qh_memfree(vertex, (int)sizeof(vertexT)); qh newvertex_list= qh vertex_list= NULL; } } @@ -376,7 +377,7 @@ void qh_freebuild(boolT allmem) { FOREACHridge_(facet->ridges) { if (ridge->seen) { qh_setfree(&(ridge->vertices)); - qh_memfree(ridge, sizeof(ridgeT)); + qh_memfree(ridge, (int)sizeof(ridgeT)); }else ridge->seen= True; } @@ -388,7 +389,7 @@ void qh_freebuild(boolT allmem) { if (facet->next) qh_delfacet(facet); else { - qh_memfree(facet, sizeof(facetT)); + qh_memfree(facet, (int)sizeof(facetT)); qh visible_list= qh newfacet_list= qh facet_list= NULL; } } @@ -407,7 +408,7 @@ void qh_freebuild(boolT allmem) { qh_memfree(qh interior_point, qh normal_size); qh interior_point= NULL; FOREACHmerge_(qh facet_mergeset) /* usually empty */ - qh_memfree(merge, sizeof(mergeT)); + qh_memfree(merge, (int)sizeof(mergeT)); qh facet_mergeset= NULL; /* temp set */ qh degen_mergeset= NULL; /* temp set */ qh_settempfree_all(); @@ -570,7 +571,7 @@ void qh_init_B(coordT *points, int numpoints, int dim, boolT ismalloc) { */ void qh_init_qhull_command(int argc, char *argv[]) { - if (!qh_argv_to_command(argc, argv, qh qhull_command, sizeof(qh qhull_command))){ + if (!qh_argv_to_command(argc, argv, qh qhull_command, (int)sizeof(qh qhull_command))){ qh_exit(qh_ERRinput); /* error reported, can not use qh_errexit */ } } /* init_qhull_command */ @@ -722,11 +723,11 @@ void qh_initflags(char *command) { qh_strtod(s, &t); } if (start < t) { - if (!(qh feasible_string= (char*)calloc(t-start+1, 1))) { + if (!(qh feasible_string= (char*)calloc((size_t)(t-start+1), (size_t)1))) { qh_fprintf(qh ferr, 6034, "qhull error: insufficient memory for 'Hn,n,n'\n"); qh_errexit(qh_ERRmem, NULL, NULL); } - strncpy(qh feasible_string, start, t-start); + strncpy(qh feasible_string, start, (size_t)(t-start)); qh_option("Halfspace-about", NULL, NULL); qh_option(qh feasible_string, NULL, NULL); }else @@ -1308,7 +1309,7 @@ void qh_initflags(char *command) { { char filename[qh_FILENAMElen]; - qh_copyfilename(filename, sizeof(filename), s, (int)(t-s)); /* WARN64 */ + qh_copyfilename(filename, (int)sizeof(filename), s, (int)(t-s)); /* WARN64 */ s= t; if (!freopen(filename, "r", stdin)) { qh_fprintf(qh ferr, 6041, "qhull error: could not open file \"%s\".", filename); @@ -1328,7 +1329,7 @@ void qh_initflags(char *command) { { char filename[qh_FILENAMElen]; - qh_copyfilename(filename, sizeof(filename), s, (int)(t-s)); /* WARN64 */ + qh_copyfilename(filename, (int)sizeof(filename), s, (int)(t-s)); /* WARN64 */ s= t; if (!freopen(filename, "w", stdout)) { qh_fprintf(qh ferr, 6044, "qhull error: could not open file \"%s\".", filename); @@ -1668,12 +1669,12 @@ void qh_initqhull_mem(void) { numsizes= 8+10; qh_meminitbuffers(qh IStracing, qh_MEMalign, numsizes, qh_MEMbufsize,qh_MEMinitbuf); - qh_memsize(sizeof(vertexT)); + qh_memsize((int)sizeof(vertexT)); if (qh MERGING) { - qh_memsize(sizeof(ridgeT)); - qh_memsize(sizeof(mergeT)); + qh_memsize((int)sizeof(ridgeT)); + qh_memsize((int)sizeof(mergeT)); } - qh_memsize(sizeof(facetT)); + qh_memsize((int)sizeof(facetT)); i= sizeof(setT) + (qh hull_dim - 1) * SETelemsize; /* ridge.vertices */ qh_memsize(i); qh_memsize(qh normal_size); /* normal */ @@ -1909,7 +1910,7 @@ void qh_initqhull_start2(FILE *infile, FILE *outfile, FILE *errfile) { void qh_initthresholds(char *command) { realT value; int index, maxdim, k; - char *s= command; + char *s= command; /* non-const due to strtol */ char key; maxdim= qh input_dim; @@ -2016,7 +2017,7 @@ void qh_initthresholds(char *command) { will be printed with statistics ('Ts') and errors strlen(option) < 40 */ -void qh_option(char *option, int *i, realT *r) { +void qh_option(const char *option, int *i, realT *r) { char buf[200]; int len, maxlen; @@ -2031,9 +2032,9 @@ void qh_option(char *option, int *i, realT *r) { maximize_(maxlen, 0); if (qh qhull_optionlen >= qh_OPTIONline && maxlen > 0) { qh qhull_optionlen= len; - strncat(qh qhull_options, "\n", maxlen--); + strncat(qh qhull_options, "\n", (size_t)(maxlen--)); } - strncat(qh qhull_options, buf, maxlen); + strncat(qh qhull_options, buf, (size_t)maxlen); } /* option */ #if qh_QHpointer diff --git a/src/index.htm b/src/index.htm index 94eba87..0555d14 100644 --- a/src/index.htm +++ b/src/index.htm @@ -86,7 +86,7 @@ to <a href="mailto:qhull-bug@qhull.org">qhull-bug@qhull.org</a>. </p> </blockquote> -<p><b>Copyright © 1997-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1997-2010 The Geometry Center, Minneapolis MN</b></p> <hr> diff --git a/src/io.c b/src/io.c index e8b95ec..91b522c 100644 --- a/src/io.c +++ b/src/io.c @@ -13,9 +13,9 @@ unix.c and user.c are the only callers of io.c functions This allows the user to avoid loading io.o from qhull.a - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/io.c#30 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/io.c#33 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -70,8 +70,8 @@ void qh_produce_output2(void) { qh_fprintf(qh ferr, 8040, "\ size in bytes: merge %d ridge %d vertex %d facet %d\n\ normal %d ridge vertices %d facet vertices or neighbors %d\n", - sizeof(mergeT), sizeof(ridgeT), - sizeof(vertexT), sizeof(facetT), + (int)sizeof(mergeT), (int)sizeof(ridgeT), + (int)sizeof(vertexT), (int)sizeof(facetT), qh normal_size, d_1, d_1 + SETelemsize); } if (qh_setsize((setT*)qhmem.tempstack) != tempsize) { @@ -125,7 +125,7 @@ void dvertex(unsigned id) { used by qsort() to order vertices by point id */ int qh_compare_vertexpoint(const void *p1, const void *p2) { - vertexT *a= *((vertexT **)p1), *b= *((vertexT **)p2); + const vertexT *a= *((vertexT *const*)p1), *b= *((vertexT *const*)p2); return((qh_pointid(a->point) > qh_pointid(b->point)?1:-1)); } /* compare_vertexpoint */ @@ -137,7 +137,7 @@ int qh_compare_vertexpoint(const void *p1, const void *p2) { used by qsort() to order facets by area */ int qh_compare_facetarea(const void *p1, const void *p2) { - facetT *a= *((facetT **)p1), *b= *((facetT **)p2); + const facetT *a= *((facetT *const*)p1), *b= *((facetT *const*)p2); if (!a->isarea) return -1; @@ -157,7 +157,7 @@ int qh_compare_facetarea(const void *p1, const void *p2) { used by qsort() to order facets by number of merges */ int qh_compare_facetmerge(const void *p1, const void *p2) { - facetT *a= *((facetT **)p1), *b= *((facetT **)p2); + const facetT *a= *((facetT *const*)p1), *b= *((facetT *const*)p2); return(a->nummerge - b->nummerge); } /* compare_facetvisit */ @@ -169,7 +169,7 @@ int qh_compare_facetmerge(const void *p1, const void *p2) { used by qsort() to order facets by visit id or id */ int qh_compare_facetvisit(const void *p1, const void *p2) { - facetT *a= *((facetT **)p1), *b= *((facetT **)p2); + const facetT *a= *((facetT *const*)p1), *b= *((facetT *const*)p2); int i,j; if (!(i= a->visitid)) @@ -188,7 +188,7 @@ int qh_compare_facetvisit(const void *p1, const void *p2) { notes: see qh_skipfilename() for syntax */ -void qh_copyfilename(char *filename, int size, char* source, int length) { +void qh_copyfilename(char *filename, int size, const char* source, int length) { char c= *source; if (length > size + 1) { @@ -489,7 +489,7 @@ setT *qh_detvridge(vertexT *vertex) { } } } - qsort(SETaddr_(centers, facetT), qh_setsize(centers), + qsort(SETaddr_(centers, facetT), (size_t)qh_setsize(centers), sizeof(facetT *), qh_compare_facetvisit); qh_settempfree(&tricenters); return centers; @@ -690,7 +690,7 @@ int qh_eachvoronoi(FILE *fp, printvridgeT printvridge, vertexT *atvertex, boolT /*-<a href="qh-poly.htm#TOC" >-------------------------------</a><a name="eachvoronoi_all">-</a> - qh_eachvoronoi_all( fp, printvridge, isupper, innerouter, inorder ) + qh_eachvoronoi_all( fp, printvridge, isUpper, innerouter, inorder ) visit all Voronoi ridges innerouter: @@ -702,7 +702,7 @@ int qh_eachvoronoi(FILE *fp, printvridgeT printvridge, vertexT *atvertex, boolT returns total number of ridges - if isupper == facet->upperdelaunay (i.e., a Vornoi vertex) + if isUpper == facet->upperdelaunay (i.e., a Vornoi vertex) facet->visitid= Voronoi vertex index(same as 'o' format) else facet->visitid= 0 @@ -715,7 +715,7 @@ int qh_eachvoronoi(FILE *fp, printvridgeT printvridge, vertexT *atvertex, boolT Not used for qhull.exe same effect as qh_printvdiagram but ridges not sorted by point id */ -int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isupper, qh_RIDGE innerouter, boolT inorder) { +int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isUpper, qh_RIDGE innerouter, boolT inorder) { facetT *facet; vertexT *vertex; int numcenters= 1; /* vertex 0 is vertex-at-infinity */ @@ -730,7 +730,7 @@ int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isupper, qh_RID facet->seen2= True; } FORALLfacets { - if (facet->upperdelaunay == isupper) + if (facet->upperdelaunay == isUpper) facet->visitid= numcenters++; } FORALLvertices @@ -899,7 +899,7 @@ void qh_markkeep(facetT *facetlist) { } size= qh_setsize(facets); if (qh KEEParea) { - qsort(SETaddr_(facets, facetT), size, + qsort(SETaddr_(facets, facetT), (size_t)size, sizeof(facetT *), qh_compare_facetarea); if ((count= size - qh KEEParea) > 0) { FOREACHfacet_(facets) { @@ -910,7 +910,7 @@ void qh_markkeep(facetT *facetlist) { } } if (qh KEEPmerge) { - qsort(SETaddr_(facets, facetT), size, + qsort(SETaddr_(facets, facetT), (size_t)size, sizeof(facetT *), qh_compare_facetmerge); if ((count= size - qh KEEPmerge) > 0) { FOREACHfacet_(facets) { @@ -939,12 +939,12 @@ void qh_markkeep(facetT *facetlist) { /*-<a href="qh-io.htm#TOC" >-------------------------------</a><a name="markvoronoi">-</a> - qh_markvoronoi( facetlist, facets, printall, islower, numcenters ) + qh_markvoronoi( facetlist, facets, printall, isLower, numcenters ) mark voronoi vertices for printing by site pairs returns: temporary set of vertices indexed by pointid - islower set if printing lower hull (i.e., at least one facet is lower hull) + isLower set if printing lower hull (i.e., at least one facet is lower hull) numcenters= total number of Voronoi vertices bumps qh.printoutnum for vertex-at-infinity clears all facet->seen and sets facet->seen2 @@ -959,11 +959,11 @@ void qh_markkeep(facetT *facetlist) { notes: ignores qh.ATinfinity, if defined */ -setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *islowerp, int *numcentersp) { +setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isLowerp, int *numcentersp) { int numcenters=0; facetT *facet, **facetp; setT *vertices; - boolT islower= False; + boolT isLower= False; qh printoutnum++; qh_clearcenters(qh_ASvoronoi); /* in case, qh_printvdiagram2 called by user */ @@ -976,7 +976,7 @@ setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isl FORALLfacet_(facetlist) { if (printall || !qh_skipfacet(facet)) { if (!facet->upperdelaunay) { - islower= True; + isLower= True; break; } } @@ -984,13 +984,13 @@ setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isl FOREACHfacet_(facets) { if (printall || !qh_skipfacet(facet)) { if (!facet->upperdelaunay) { - islower= True; + isLower= True; break; } } } FORALLfacets { - if (facet->normal && (facet->upperdelaunay == islower)) + if (facet->normal && (facet->upperdelaunay == isLower)) facet->visitid= 0; /* facetlist or facets may overwrite */ else facet->visitid= qh visit_id; @@ -1006,9 +1006,9 @@ setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isl if (printall || !qh_skipfacet(facet)) facet->visitid= numcenters++; } - *islowerp= islower; + *isLowerp= isLower; *numcentersp= numcenters; - trace2((qh ferr, 2007, "qh_markvoronoi: islower %d numcenters %d\n", islower, numcenters)); + trace2((qh ferr, 2007, "qh_markvoronoi: isLower %d numcenters %d\n", isLower, numcenters)); return vertices; } /* markvoronoi */ @@ -1108,7 +1108,7 @@ void qh_prepare_output(void) { call appropriate routine for format or output results directly */ -void qh_printafacet(FILE *fp, int format, facetT *facet, boolT printall) { +void qh_printafacet(FILE *fp, qh_PRINT format, facetT *facet, boolT printall) { realT color[4], offset, dist, outerplane, innerplane; boolT zerodiv; coordT *point, *normp, *coordp, **pointp, *feasiblep; @@ -1278,6 +1278,8 @@ void qh_printafacet(FILE *fp, int format, facetT *facet, boolT printall) { qh_fprintf(fp, 9031, " %d", qh_pointid(vertex->point)); qh_fprintf(fp, 9032, "\n"); break; + default: + break; } } /* printafacet */ @@ -1302,7 +1304,7 @@ void qh_printafacet(FILE *fp, int format, facetT *facet, boolT printall) { count facets and related statistics print header for format */ -void qh_printbegin(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall) { +void qh_printbegin(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall) { int numfacets, numsimplicial, numridges, totneighbors, numcoplanars, numtricoplanars; int i, num; facetT *facet, **facetp; @@ -1576,7 +1578,7 @@ void qh_printbegin(FILE *fp, int format, facetT *facetlist, setT *facets, boolT if format=PRINTgeom, adds a 0 if would otherwise be 2-d Same as QhullFacet::printCenter */ -void qh_printcenter(FILE *fp, int format, char *string, facetT *facet) { +void qh_printcenter(FILE *fp, qh_PRINT format, const char *string, facetT *facet) { int k, num; if (qh CENTERtype != qh_ASvoronoi && qh CENTERtype != qh_AScentrum) @@ -1683,7 +1685,7 @@ void qh_printcentrum(FILE *fp, facetT *facet, realT radius) { qh_printbegin() and qh_printafacet() */ -void qh_printend(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall) { +void qh_printend(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall) { int num; facetT *facet, **facetp; @@ -1721,6 +1723,8 @@ void qh_printend(FILE *fp, int format, facetT *facetlist, setT *facets, boolT pr if (qh CDDoutput) qh_fprintf(fp, 9083, "end\n"); break; + default: + break; } } /* printend */ @@ -1799,7 +1803,7 @@ void qh_printend4geom(FILE *fp, facetT *facet, int *nump, boolT printall) { sorted by id same order as qh_printpoints_out if no coplanar/interior points */ -void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, int printall) { +void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, boolT printall) { setT *vertices, *points; pointT *point; vertexT *vertex, **vertexp; @@ -1838,7 +1842,7 @@ void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, int printall) { errors if facets form a loop does not print coplanar points */ -void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, int printall) { +void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, boolT printall) { int numfacets, numridges, totneighbors, numcoplanars, numsimplicial, numtricoplanars; setT *vertices; facetT *facet, *startfacet, *nextfacet; @@ -1895,7 +1899,7 @@ void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, int printall unordered */ -void qh_printextremes_d(FILE *fp, facetT *facetlist, setT *facets, int printall) { +void qh_printextremes_d(FILE *fp, facetT *facetlist, setT *facets, boolT printall) { setT *vertices; vertexT *vertex, **vertexp; boolT upperseen, lowerseen; @@ -2010,10 +2014,10 @@ void qh_printfacet2geom_points(FILE *fp, pointT *point1, pointT *point2, use %16.8f since Mathematica 2.2 does not handle exponential format see qh_printfacet3math */ -void qh_printfacet2math(FILE *fp, facetT *facet, int format, int notfirst) { +void qh_printfacet2math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst) { pointT *point0, *point1; realT mindist; - char *pointfmt; + const char *pointfmt; qh_facet2point(facet, &point0, &point1, &mindist); if (notfirst) @@ -2196,13 +2200,13 @@ void qh_printfacet3geom_simplicial(FILE *fp, facetT *facet, realT color[3]) { use %16.8f since Mathematica 2.2 does not handle exponential format see qh_printfacet2math */ -void qh_printfacet3math(FILE *fp, facetT *facet, int format, int notfirst) { +void qh_printfacet3math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst) { vertexT *vertex, **vertexp; setT *points, *vertices; pointT *point, **pointp; boolT firstpoint= True; realT dist; - char *pointfmt, *endfmt; + const char *pointfmt, *endfmt; if (notfirst) qh_fprintf(fp, 9105, ",\n"); @@ -2248,7 +2252,7 @@ void qh_printfacet3math(FILE *fp, facetT *facet, int format, int notfirst) { prints number of vertices first if format == qh_PRINToff the facet may be non-simplicial */ -void qh_printfacet3vertex(FILE *fp, facetT *facet, int format) { +void qh_printfacet3vertex(FILE *fp, facetT *facet, qh_PRINT format) { vertexT *vertex, **vertexp; setT *vertices; @@ -2376,7 +2380,7 @@ void qh_printfacet4geom_simplicial(FILE *fp, facetT *facet, realT color[3]) { print vertices for an N-d non-simplicial facet triangulates each ridge to the id */ -void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, int format) { +void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, qh_PRINT format) { vertexT *vertex, **vertexp; ridgeT *ridge, **ridgep; @@ -2407,7 +2411,7 @@ void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, int for 2-d facets (orientation preserved by qh_mergefacet2d) PRINToff ('o') for 4-d and higher */ -void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, int format) { +void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, qh_PRINT format) { vertexT *vertex, **vertexp; if (format == qh_PRINToff || format == qh_PRINTtriangles) @@ -2634,7 +2638,7 @@ void qh_printfacetridges(FILE *fp, facetT *facet) { also used for specialized formats ('FO' and summary) turns off 'Rn' option since want actual numbers */ -void qh_printfacets(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall) { +void qh_printfacets(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall) { int numfacets, numsimplicial, numridges, totneighbors, numcoplanars, numtricoplanars; facetT *facet, **facetp; setT *vertices; @@ -2800,7 +2804,7 @@ void qh_printline3geom(FILE *fp, pointT *pointA, pointT *pointB, realT color[3]) calls qh_findgood_all() bumps qh.visit_id */ -void qh_printneighborhood(FILE *fp, int format, facetT *facetA, facetT *facetB, boolT printall) { +void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall) { facetT *neighbor, **neighborp, *facet; setT *facets; @@ -2844,13 +2848,13 @@ void qh_printneighborhood(FILE *fp, int format, facetT *facetA, facetT *facetB, prints id unless it is undefined (-1) Same as QhullPoint's printPoint */ -void qh_printpoint(FILE *fp, char *string, pointT *point) { +void qh_printpoint(FILE *fp, const char *string, pointT *point) { int id= qh_pointid( point); qh_printpointid( fp, string, qh hull_dim, point, id); } /* printpoint */ -void qh_printpointid(FILE *fp, char *string, int dim, pointT *point, int id) { +void qh_printpointid(FILE *fp, const char *string, int dim, pointT *point, int id) { int k; realT r; /*bug fix*/ @@ -2904,7 +2908,7 @@ void qh_printpoint3 (FILE *fp, pointT *point) { if no coplanar/interior points, same order as qh_printextremes */ -void qh_printpoints_out(FILE *fp, facetT *facetlist, setT *facets, int printall) { +void qh_printpoints_out(FILE *fp, facetT *facetlist, setT *facets, boolT printall) { int allpoints= qh num_points + qh_setsize(qh other_points); int numpoints=0, point_i, point_n; setT *vertices, *points; @@ -3131,10 +3135,10 @@ INST geom {define vsphere OFF\n\ if all facets are upperdelaunay, prints upper hull (furthest-site Voronoi diagram) */ -void qh_printvdiagram(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall) { +void qh_printvdiagram(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall) { setT *vertices; int totcount, numcenters; - boolT islower; + boolT isLower; qh_RIDGE innerouter= qh_RIDGEall; printvridgeT printvridge= NULL; @@ -3151,7 +3155,7 @@ void qh_printvdiagram(FILE *fp, int format, facetT *facetlist, setT *facets, boo qh_fprintf(qh ferr, 6219, "Qhull internal error (qh_printvdiagram): unknown print format %d.\n", format); qh_errexit(qh_ERRinput, NULL, NULL); } - vertices= qh_markvoronoi(facetlist, facets, printall, &islower, &numcenters); + vertices= qh_markvoronoi(facetlist, facets, printall, &isLower, &numcenters); totcount= qh_printvdiagram2 (NULL, NULL, vertices, innerouter, False); qh_fprintf(fp, 9231, "%d\n", totcount); totcount= qh_printvdiagram2 (fp, printvridge, vertices, innerouter, True /* inorder*/); @@ -3258,7 +3262,7 @@ void qh_printvertex(FILE *fp, vertexT *vertex) { prints vertices used by a facetlist or facet set tests qh_skipfacet() if !printall */ -void qh_printvertexlist(FILE *fp, char* string, facetT *facetlist, +void qh_printvertexlist(FILE *fp, const char* string, facetT *facetlist, setT *facets, boolT printall) { vertexT *vertex, **vertexp; setT *vertices; @@ -3278,7 +3282,7 @@ void qh_printvertexlist(FILE *fp, char* string, facetT *facetlist, prints vertices in a set duplicated as printVertexSet [QhullVertex.cpp] */ -void qh_printvertices(FILE *fp, char* string, setT *vertices) { +void qh_printvertices(FILE *fp, const char* string, setT *vertices) { vertexT *vertex, **vertexp; qh_fprintf(fp, 9245, "%s", string); @@ -3339,7 +3343,7 @@ void qh_printvneighbors(FILE *fp, facetT* facetlist, setT *facets, boolT printal if (qh hull_dim == 3) qh_order_vertexneighbors(vertex); else if (qh hull_dim >= 4) - qsort(SETaddr_(vertex->neighbors, facetT), numneighbors, + qsort(SETaddr_(vertex->neighbors, facetT), (size_t)numneighbors, sizeof(facetT *), qh_compare_facetvisit); FOREACHneighbor_(vertex) qh_fprintf(fp, 9250, " %d", @@ -3379,15 +3383,15 @@ void qh_printvneighbors(FILE *fp, facetT* facetlist, setT *facets, boolT printal if all facets are upperdelaunay, reverses lower and upper hull */ -void qh_printvoronoi(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall) { +void qh_printvoronoi(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall) { int k, numcenters, numvertices= 0, numneighbors, numinf, vid=1, vertex_i, vertex_n; facetT *facet, **facetp, *neighbor, **neighborp; setT *vertices; vertexT *vertex; - boolT islower; + boolT isLower; unsigned int numfacets= (unsigned int) qh num_facets; - vertices= qh_markvoronoi(facetlist, facets, printall, &islower, &numcenters); + vertices= qh_markvoronoi(facetlist, facets, printall, &isLower, &numcenters); FOREACHvertex_i_(vertices) { if (vertex) { numvertices++; @@ -3440,7 +3444,7 @@ void qh_printvoronoi(FILE *fp, int format, facetT *facetlist, setT *facets, bool qh_order_vertexneighbors(vertex); else if (qh hull_dim >= 4) qsort(SETaddr_(vertex->neighbors, vertexT), - qh_setsize(vertex->neighbors), + (size_t)qh_setsize(vertex->neighbors), sizeof(facetT *), qh_compare_facetvisit); FOREACHneighbor_(vertex) { if (neighbor->visitid == 0) @@ -3505,6 +3509,7 @@ void qh_printvnorm(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, b pointT *normal; realT offset; int k; + QHULL_UNUSED(unbounded); normal= qh_detvnorm(vertex, vertexA, centers, &offset); qh_fprintf(fp, 9271, "%d %d %d ", @@ -3531,6 +3536,7 @@ void qh_printvnorm(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, b */ void qh_printvridge(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded) { facetT *facet, **facetp; + QHULL_UNUSED(unbounded); qh_fprintf(fp, 9275, "%d %d %d", qh_setsize(centers)+2, qh_pointid(vertex->point), qh_pointid(vertexA->point)); @@ -3569,8 +3575,8 @@ void qh_projectdim3 (pointT *source, pointT *destination) { /*-<a href="qh-io.htm#TOC" >-------------------------------</a><a name="readfeasible">-</a> - qh_readfeasible( dim, remainder ) - read feasible point from remainder string and qh.fin + qh_readfeasible( dim, curline ) + read feasible point from current line and qh.fin returns: number of lines read from qh.fin @@ -3583,10 +3589,11 @@ void qh_projectdim3 (pointT *source, pointT *destination) { see: qh_setfeasible */ -int qh_readfeasible(int dim, char *remainder) { +int qh_readfeasible(int dim, const char *curline) { boolT isfirst= True; int linecount= 0, tokcount= 0; - char *s, *t, firstline[qh_MAXfirst+1]; + const char *s; + char *t, firstline[qh_MAXfirst+1]; coordT *coords, value; if (!qh HALFspace) { @@ -3600,7 +3607,7 @@ int qh_readfeasible(int dim, char *remainder) { qh_errexit(qh_ERRmem, NULL, NULL); } coords= qh feasible_point; - while ((s= (isfirst ? remainder : fgets(firstline, qh_MAXfirst, qh fin)))) { + while ((s= (isfirst ? curline : fgets(firstline, qh_MAXfirst, qh fin)))) { if (isfirst) isfirst= False; else @@ -3686,7 +3693,7 @@ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { linecount += qh_readfeasible(dimfeasible, s); else dimfeasible= 0; - }else if (!memcmp(firstline, "begin", 5) || !memcmp(firstline, "BEGIN", 5)) + }else if (!memcmp(firstline, "begin", (size_t)5) || !memcmp(firstline, "BEGIN", (size_t)5)) break; else if (!*qh rbox_command) strncat(qh rbox_command, s, sizeof(qh rbox_command)-1); @@ -3698,7 +3705,7 @@ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { } while (!numinput && (s= fgets(firstline, qh_MAXfirst, qh fin))) { linecount++; - if (!memcmp(s, "begin", 5) || !memcmp(s, "BEGIN", 5)) + if (!memcmp(s, "begin", (size_t)5) || !memcmp(s, "BEGIN", (size_t)5)) wasbegin= True; while (*s) { while (isspace(*s)) @@ -3773,7 +3780,7 @@ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { } qh normal_size= *dimension * sizeof(coordT); /* for tracing with qh_printpoint */ if (qh HALFspace) { - qh half_space= coordp= (coordT*) qh_malloc(qh normal_size + sizeof(coordT)); + qh half_space= coordp= (coordT*)qh_malloc(qh normal_size + sizeof(coordT)); if (qh CDDinput) { offsetp= qh half_space; normalp= offsetp + 1; @@ -3804,7 +3811,7 @@ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { if (!isfirst) { linecount++; if (*s == 'e' || *s == 'E') { - if (!memcmp(s, "end", 3) || !memcmp(s, "END", 3)) { + if (!memcmp(s, "end", (size_t)3) || !memcmp(s, "END", (size_t)3)) { if (qh CDDinput ) break; else if (wasbegin) @@ -3968,7 +3975,7 @@ qhull input error: halfspace intersection needs a feasible point.\n\ Either prepend the input with 1 point or use 'Hn,n,n'. See manual.\n"); qh_errexit(qh_ERRinput, NULL, NULL); } - if (!(qh feasible_point= (pointT*)qh_malloc(dim* sizeof(coordT)))) { + if (!(qh feasible_point= (pointT*)qh_malloc(dim * sizeof(coordT)))) { qh_fprintf(qh ferr, 6079, "qhull error: insufficient memory for 'Hn,n,n'\n"); qh_errexit(qh_ERRmem, NULL, NULL); } @@ -4028,7 +4035,7 @@ boolT qh_skipfacet(facetT *facet) { For qhull, qh_argv_to_command() only uses double quotes */ char *qh_skipfilename(char *filename) { - char *s= filename; + char *s= filename; /* non-const due to return */ char c; while (*s && isspace(*s)) diff --git a/src/io.h b/src/io.h index 9e23867..e622463 100644 --- a/src/io.h +++ b/src/io.h @@ -6,9 +6,9 @@ see README, libqhull.h and io.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/io.h#22 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/io.h#24 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFio @@ -83,7 +83,7 @@ int qh_compare_facetarea(const void *p1, const void *p2); int qh_compare_facetmerge(const void *p1, const void *p2); int qh_compare_facetvisit(const void *p1, const void *p2); int qh_compare_vertexpoint(const void *p1, const void *p2); /* not used */ -void qh_copyfilename(char *filename, int size, char* source, int length); +void qh_copyfilename(char *filename, int size, const char* source, int length); void qh_countfacets(facetT *facetlist, setT *facets, boolT printall, int *numfacetsp, int *numsimplicialp, int *totneighborsp, int *numridgesp, int *numcoplanarsp, int *numnumtricoplanarsp); @@ -91,66 +91,66 @@ pointT *qh_detvnorm(vertexT *vertex, vertexT *vertexA, setT *centers, realT *off setT *qh_detvridge(vertexT *vertex); setT *qh_detvridge3 (vertexT *atvertex, vertexT *vertex); int qh_eachvoronoi(FILE *fp, printvridgeT printvridge, vertexT *atvertex, boolT visitall, qh_RIDGE innerouter, boolT inorder); -int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isupper, qh_RIDGE innerouter, boolT inorder); +int qh_eachvoronoi_all(FILE *fp, printvridgeT printvridge, boolT isUpper, qh_RIDGE innerouter, boolT inorder); void qh_facet2point(facetT *facet, pointT **point0, pointT **point1, realT *mindist); setT *qh_facetvertices(facetT *facetlist, setT *facets, boolT allfacets); void qh_geomplanes(facetT *facet, realT *outerplane, realT *innerplane); void qh_markkeep(facetT *facetlist); -setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *islowerp, int *numcentersp); +setT *qh_markvoronoi(facetT *facetlist, setT *facets, boolT printall, boolT *isLowerp, int *numcentersp); void qh_order_vertexneighbors(vertexT *vertex); void qh_prepare_output(void); -void qh_printafacet(FILE *fp, int format, facetT *facet, boolT printall); -void qh_printbegin(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall); -void qh_printcenter(FILE *fp, int format, char *string, facetT *facet); +void qh_printafacet(FILE *fp, qh_PRINT format, facetT *facet, boolT printall); +void qh_printbegin(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); +void qh_printcenter(FILE *fp, qh_PRINT format, const char *string, facetT *facet); void qh_printcentrum(FILE *fp, facetT *facet, realT radius); -void qh_printend(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall); +void qh_printend(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); void qh_printend4geom(FILE *fp, facetT *facet, int *num, boolT printall); -void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, int printall); -void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, int printall); -void qh_printextremes_d(FILE *fp, facetT *facetlist, setT *facets, int printall); +void qh_printextremes(FILE *fp, facetT *facetlist, setT *facets, boolT printall); +void qh_printextremes_2d(FILE *fp, facetT *facetlist, setT *facets, boolT printall); +void qh_printextremes_d(FILE *fp, facetT *facetlist, setT *facets, boolT printall); void qh_printfacet(FILE *fp, facetT *facet); -void qh_printfacet2math(FILE *fp, facetT *facet, int format, int notfirst); +void qh_printfacet2math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst); void qh_printfacet2geom(FILE *fp, facetT *facet, realT color[3]); void qh_printfacet2geom_points(FILE *fp, pointT *point1, pointT *point2, facetT *facet, realT offset, realT color[3]); -void qh_printfacet3math(FILE *fp, facetT *facet, int format, int notfirst); +void qh_printfacet3math(FILE *fp, facetT *facet, qh_PRINT format, int notfirst); void qh_printfacet3geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]); void qh_printfacet3geom_points(FILE *fp, setT *points, facetT *facet, realT offset, realT color[3]); void qh_printfacet3geom_simplicial(FILE *fp, facetT *facet, realT color[3]); -void qh_printfacet3vertex(FILE *fp, facetT *facet, int format); +void qh_printfacet3vertex(FILE *fp, facetT *facet, qh_PRINT format); void qh_printfacet4geom_nonsimplicial(FILE *fp, facetT *facet, realT color[3]); void qh_printfacet4geom_simplicial(FILE *fp, facetT *facet, realT color[3]); -void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, int format); -void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, int format); +void qh_printfacetNvertex_nonsimplicial(FILE *fp, facetT *facet, int id, qh_PRINT format); +void qh_printfacetNvertex_simplicial(FILE *fp, facetT *facet, qh_PRINT format); void qh_printfacetheader(FILE *fp, facetT *facet); void qh_printfacetridges(FILE *fp, facetT *facet); -void qh_printfacets(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall); +void qh_printfacets(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); void qh_printhyperplaneintersection(FILE *fp, facetT *facet1, facetT *facet2, setT *vertices, realT color[3]); -void qh_printneighborhood(FILE *fp, int format, facetT *facetA, facetT *facetB, boolT printall); +void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall); void qh_printline3geom(FILE *fp, pointT *pointA, pointT *pointB, realT color[3]); -void qh_printpoint(FILE *fp, char *string, pointT *point); -void qh_printpointid(FILE *fp, char *string, int dim, pointT *point, int id); +void qh_printpoint(FILE *fp, const char *string, pointT *point); +void qh_printpointid(FILE *fp, const char *string, int dim, pointT *point, int id); void qh_printpoint3 (FILE *fp, pointT *point); -void qh_printpoints_out(FILE *fp, facetT *facetlist, setT *facets, int printall); +void qh_printpoints_out(FILE *fp, facetT *facetlist, setT *facets, boolT printall); void qh_printpointvect(FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius, realT color[3]); void qh_printpointvect2 (FILE *fp, pointT *point, coordT *normal, pointT *center, realT radius); void qh_printridge(FILE *fp, ridgeT *ridge); void qh_printspheres(FILE *fp, setT *vertices, realT radius); -void qh_printvdiagram(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall); +void qh_printvdiagram(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); int qh_printvdiagram2 (FILE *fp, printvridgeT printvridge, setT *vertices, qh_RIDGE innerouter, boolT inorder); void qh_printvertex(FILE *fp, vertexT *vertex); -void qh_printvertexlist(FILE *fp, char* string, facetT *facetlist, +void qh_printvertexlist(FILE *fp, const char* string, facetT *facetlist, setT *facets, boolT printall); -void qh_printvertices(FILE *fp, char* string, setT *vertices); +void qh_printvertices(FILE *fp, const char* string, setT *vertices); void qh_printvneighbors(FILE *fp, facetT* facetlist, setT *facets, boolT printall); -void qh_printvoronoi(FILE *fp, int format, facetT *facetlist, setT *facets, boolT printall); +void qh_printvoronoi(FILE *fp, qh_PRINT format, facetT *facetlist, setT *facets, boolT printall); void qh_printvnorm(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded); void qh_printvridge(FILE *fp, vertexT *vertex, vertexT *vertexA, setT *centers, boolT unbounded); void qh_produce_output(void); void qh_produce_output2(void); void qh_projectdim3 (pointT *source, pointT *destination); -int qh_readfeasible(int dim, char *remainder); +int qh_readfeasible(int dim, const char *curline); coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc); void qh_setfeasible(int dim); boolT qh_skipfacet(facetT *facet); diff --git a/src/libqhull.c b/src/libqhull.c index 7dfe78f..492dc44 100644 --- a/src/libqhull.c +++ b/src/libqhull.c @@ -10,9 +10,9 @@ see qhull_a.h for internal functions - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/libqhull.c#1 $$Change: 1107 $ - $DateTime: 2009/12/07 21:05:37 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/libqhull.c#3 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -443,8 +443,8 @@ void qh_buildtracing(pointT *furthest, facetT *facet) { if (!furthest) { time(&timedata); tp= localtime(&timedata); - cpu= (float)qh_CPUclock - qh hulltime; - cpu /= qh_SECticks; + cpu= (float)qh_CPUclock - (float)qh hulltime; + cpu /= (float)qh_SECticks; total= zzval_(Ztotmerge) - zzval_(Zcyclehorizon) + zzval_(Zcyclefacettot); qh_fprintf(qh ferr, 8118, "\n\ At %02d:%02d:%02d & %2.5g CPU secs, qhull has created %d facets and merged %d.\n\ @@ -465,8 +465,8 @@ At %02d:%02d:%02d & %2.5g CPU secs, qhull has created %d facets and merged %d.\n qh lastreport= qh facet_id-1; time(&timedata); tp= localtime(&timedata); - cpu= (float)qh_CPUclock - qh hulltime; - cpu /= qh_SECticks; + cpu= (float)qh_CPUclock - (float)qh hulltime; + cpu /= (float)qh_SECticks; total= zzval_(Ztotmerge) - zzval_(Zcyclehorizon) + zzval_(Zcyclefacettot); zinc_(Zdistio); qh_distplane(furthest, facet, &dist); @@ -478,8 +478,8 @@ At %02d:%02d:%02d & %2.5g CPU secs, qhull has created %d facets and merged %d.\n total, qh num_facets, qh num_vertices, qh num_outside+1, furthestid, qh vertex_id, dist, getid_(facet)); }else if (qh IStracing >=1) { - cpu= (float)qh_CPUclock - qh hulltime; - cpu /= qh_SECticks; + cpu= (float)qh_CPUclock - (float)qh hulltime; + cpu /= (float)qh_SECticks; qh_distplane(furthest, facet, &dist); qh_fprintf(qh ferr, 8120, "qh_addpoint: add p%d(v%d) to hull of %d facets(%2.2g above f%d) and %d outside at %4.4g CPU secs. Previous was p%d.\n", furthestid, qh vertex_id, qh num_facets, dist, @@ -1175,7 +1175,7 @@ void qh_partitionvisible(/*visible_list*/ boolT allpoints, int *numoutside) { qh_precision( reason ) restart on precision errors if not merging and if 'QJn' */ -void qh_precision(char *reason) { +void qh_precision(const char *reason) { if (qh ALLOWrestart && !qh PREmerge && !qh MERGEexact) { if (qh JOGGLEmax < REALmax/2) { @@ -1205,7 +1205,7 @@ void qh_printsummary(FILE *fp) { int size, id, nummerged, numvertices, numcoplanars= 0, nonsimplicial=0; int goodused; facetT *facet; - char *s; + const char *s; int numdel= zzval_(Zdelvertextot); int numtricoplanars= 0; @@ -1351,7 +1351,7 @@ Convex hull of %d points in %d-d:\n\n", size, qh hull_dim); } if (!qh RANDOMoutside && qh QHULLfinished) { cpu= (float)qh hulltime; - cpu /= qh_SECticks; + cpu /= (float)qh_SECticks; wval_(Wcpu)= cpu; qh_fprintf(fp, 9333, " CPU seconds to compute hull(after input): %2.4g\n", cpu); } diff --git a/src/libqhull.h b/src/libqhull.h index 45a7d0e..43f0e95 100644 --- a/src/libqhull.h +++ b/src/libqhull.h @@ -6,9 +6,9 @@ see qh-qhull.htm, qhull_a.h - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/libqhull.h#1 $$Change: 1107 $ - $DateTime: 2009/12/07 21:05:37 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/libqhull.h#4 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ NOTE: access to qh_qh is via the 'qh' macro. This allows qh_qh to be either a pointer or a structure. An example @@ -54,13 +54,9 @@ #endif #endif -#ifdef _MSC_VER /* Microsoft Visual C++ -- warning level 4 */ -#pragma warning( disable : 4224) /* FIXUP? nonstandard extension used : formal parameter 'errcode' was previously defined as a type. [errcode was replaced by errno_t] */ -#endif - /*============ constants and basic types ====================*/ -extern char *qh_version; /* defined in global.c */ +extern const char *qh_version; /* defined in global.c */ /*-<a href="qh-geom.htm#TOC" >--------------------------------</a><a name="coordT">-</a> @@ -350,7 +346,7 @@ struct ridgeT { NULL if a degen ridge (matchsame) */ facetT *top; /* top facet this ridge is part of */ facetT *bottom; /* bottom facet this ridge is part of */ - unsigned id:24; /* unique identifier, =>room for 8 flags */ + unsigned id:24; /* unique identifier, =>room for 8 flags, bit field matches qh.ridge_id */ flagT seen:1; /* used to perform operations only once */ flagT tested:1; /* True when ridge is tested for convexity */ flagT nonconvex:1; /* True if getmergeset detected a non-convex neighbor @@ -376,9 +372,9 @@ struct vertexT { pointT *point; /* hull_dim coordinates (coordT) */ setT *neighbors; /* neighboring facets of vertex, qh_vertexneighbors() inits in io.c or after first merge */ - unsigned visitid:31; /* for use with qh vertex_visit */ + unsigned visitid:31; /* for use with qh vertex_visit, size must match */ flagT seen2:1; /* another seen flag */ - unsigned id:24; /* unique identifier */ + unsigned id:24; /* unique identifier, bit field matches qh.vertex_id */ unsigned dim:4; /* dimension of point if non-zero, used by cpp */ /* =>room for 4 flags */ flagT seen:1; /* used to perform operations only once */ @@ -619,8 +615,8 @@ struct qhT { FILE *fout; /* pointer to output file */ FILE *ferr; /* pointer to error file */ pointT *interior_point; /* center point of the initial simplex*/ - int normal_size; /* size in bytes for facet normals and point coords*/ - int center_size; /* size in bytes for Voronoi centers */ + int normal_size; /* size in bytes for facet normals and point coords*/ + int center_size; /* size in bytes for Voronoi centers */ int TEMPsize; /* size for small, temporary sets (in quick mem) */ /*-<a href="qh-globa.htm#TOC" @@ -656,8 +652,8 @@ struct qhT { includes coplanar outsideset points for NARROWhull/qh_outcoplanar() */ int num_good; /* number of good facets (after findgood_all) */ unsigned facet_id; /* ID of next, new facet from newfacet() */ - unsigned ridge_id; /* ID of next, new ridge from newridge() */ - unsigned vertex_id; /* ID of next, new vertex from newvertex() */ + unsigned ridge_id:24; /* ID of next, new ridge from newridge() */ + unsigned vertex_id:24; /* ID of next, new vertex from newvertex() */ /*-<a href="qh-globa.htm#TOC" >--------------------------------</a><a name="qh-var">-</a> @@ -702,7 +698,7 @@ struct qhT { realT totarea; /* 'FA': total facet area computed by qh_getarea, hasAreaVolume */ realT totvol; /* 'FA': total volume computed by qh_getarea, hasAreaVolume */ unsigned int visit_id; /* unique ID for searching neighborhoods, */ - unsigned int vertex_visit; /* unique ID for searching vertices, reset with qh_buildtracing */ + unsigned int vertex_visit:31; /* unique ID for searching vertices, reset with qh_buildtracing */ boolT ZEROall_ok; /* True if qh_checkzero always succeeds */ boolT WAScoplanar; /* True if qh_partitioncoplanar (qh_check_maxout) */ @@ -776,9 +772,9 @@ struct qhT { getid_(p) return ID for facet, ridge, or vertex - return MAXINT if NULL (-1 causes type conversion error ) + FIXUP: return MAXINT if NULL (-1 causes type conversion error ) */ -#define getid_(p) ((p) ? (p)->id : -1) +#define getid_(p) ((p) ? (int)((p)->id) : -1) /*============== FORALL macros ===================*/ @@ -982,7 +978,7 @@ struct qhT { see: <a href="qset.h#FOREACHsetelement_i_">FOREACHsetelement_i_</a> - */ +*/ #define FOREACHvertex_i_(vertices) FOREACHsetelement_i_(vertexT, vertices,vertex) /********* -libqhull.c prototypes (duplicated from qhull_a.h) **********************/ @@ -994,7 +990,7 @@ void qh_printsummary(FILE *fp); /********* -user.c prototypes (alphabetical) **********************/ void qh_errexit(int exitcode, facetT *facet, ridgeT *ridge); -void qh_errprint(char* string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex); +void qh_errprint(const char* string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex); int qh_new_qhull(int dim, int numpoints, coordT *points, boolT ismalloc, char *qhull_cmd, FILE *outfile, FILE *errfile); void qh_printfacetlist(facetT *facetlist, setT *facets, boolT printall); @@ -1004,11 +1000,11 @@ void qh_printhelp_singular(FILE *fp); void qh_user_memsizes(void); /********* -user2.c prototypes (alphabetical) **********************/ -void qh_exit(int errcode); +void qh_exit(int exitcode); void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... ); void qh_fprintf_rbox(FILE *fp, int msgcode, const char *fmt, ... ); void qh_free(void *mem); -void *qh_malloc(unsigned int size); +void *qh_malloc(size_t size); /***** -geom.c/geom2.c/random.c prototypes (duplicated from geom.h, random.h) ****************/ @@ -1047,7 +1043,7 @@ void qh_initqhull_outputflags(void); void qh_initqhull_start(FILE *infile, FILE *outfile, FILE *errfile); void qh_initqhull_start2(FILE *infile, FILE *outfile, FILE *errfile); void qh_initthresholds(char *command); -void qh_option(char *option, int *i, realT *r); +void qh_option(const char *option, int *i, realT *r); #if qh_QHpointer void qh_restore_qhull(qhT **oldqh); qhT *qh_save_qhull(void); @@ -1057,7 +1053,7 @@ qhT *qh_save_qhull(void); void dfacet( unsigned id); void dvertex( unsigned id); -void qh_printneighborhood(FILE *fp, int format, facetT *facetA, facetT *facetB, boolT printall); +void qh_printneighborhood(FILE *fp, qh_PRINT format, facetT *facetA, facetT *facetB, boolT printall); void qh_produce_output(void); coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc); @@ -1089,6 +1085,6 @@ void qh_errexit_rbox(int exitcode); /********* -stat.c prototypes (duplicated from stat.h) **********************/ void qh_collectstatistics(void); -void qh_printallstatistics(FILE *fp, char *string); +void qh_printallstatistics(FILE *fp, const char *string); #endif /* qhDEFlibqhull */ diff --git a/src/mem.c b/src/mem.c index ad1bc4e..0d4232c 100644 --- a/src/mem.c +++ b/src/mem.c @@ -10,8 +10,8 @@ qh_meminit(stderr); qh_meminitbuffers(qh IStracing, qh_MEMalign, 7, qh_MEMbufsize,qh_MEMinitbuf); - qh_memsize(sizeof(facetT)); - qh_memsize(sizeof(facetT)); + qh_memsize((int)sizeof(facetT)); + qh_memsize((int)sizeof(facetT)); ... qh_memsetup(); @@ -29,9 +29,9 @@ qh-mem.htm and mem.h global.c (qh_initbuffers) for an example of using mem.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/mem.c#27 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/mem.c#30 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "mem.h" @@ -44,21 +44,22 @@ typedef struct ridgeT ridgeT; typedef struct facetT facetT; #ifdef _MSC_VER /* Microsoft Visual C++ -- warning level 4 */ #pragma warning( disable : 4127) /* conditional expression is constant */ -#pragma warning( disable : 4224) /* nonstandard extension used : formal parameter 'errcode' was previously defined as a type. [errcode was replaced by errno_t] */ #pragma warning( disable : 4706) /* assignment within conditional function */ #endif void qh_errexit(int exitcode, facetT *, ridgeT *); -void qh_exit(int errcode); -void qh_fprintf(FILE *fp, int msgcode, char *fmt, ... ); +void qh_exit(int exitcode); +void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... ); void qh_free(void *mem); -void *qh_malloc(unsigned int size); +void *qh_malloc(size_t size); #endif /*============ -global data structure ============== see mem.h for definition */ -qhmemT qhmem= {0}; /* remove "= {0}" if this causes a compiler error */ +qhmemT qhmem= {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}; /* remove "= {0}" if this causes a compiler error */ #ifndef qh_NOmem @@ -75,7 +76,7 @@ static int qh_intcompare(const void *i, const void *j); used by qsort and bsearch to compare two integers */ static int qh_intcompare(const void *i, const void *j) { - return(*((int *)i) - *((int *)j)); + return(*((const int *)i) - *((const int *)j)); } /* intcompare */ @@ -113,7 +114,7 @@ void *qh_memalloc(int insize) { int outsize, bufsize; void *object; - if ((unsigned) insize <= (unsigned) qhmem.LASTsize) { + if (insize <= qhmem.LASTsize) { index= qhmem.indextable[insize]; outsize= qhmem.sizetable[index]; qhmem.totshort += outsize; @@ -136,7 +137,7 @@ void *qh_memalloc(int insize) { bufsize= qhmem.BUFinit; else bufsize= qhmem.BUFsize; - if (!(newbuffer= qh_malloc(bufsize))) { + if (!(newbuffer= qh_malloc((size_t)bufsize))) { qh_fprintf(qhmem.ferr, 6080, "qhull error (qh_memalloc): insufficient memory to allocate short memory buffer (%d bytes)\n", bufsize); qh_errexit(qhmem_ERRmem, NULL, NULL); } @@ -175,7 +176,7 @@ void *qh_memalloc(int insize) { qhmem .totlong += outsize; if (qhmem.maxlong < qhmem.totlong) qhmem.maxlong= qhmem.totlong; - if (!(object= qh_malloc(outsize))) { + if (!(object= qh_malloc((size_t)outsize))) { qh_fprintf(qhmem.ferr, 6082, "qhull error (qh_memalloc): insufficient memory to allocate %d bytes\n", outsize); qh_errexit(qhmem_ERRmem, NULL, NULL); } @@ -264,7 +265,7 @@ void qh_memfreeshort(int *curlong, int *totlong) { qh_free(qhmem .sizetable); } ferr= qhmem.ferr; - memset((char *)&qhmem, 0, sizeof qhmem); /* every field is 0, FALSE, NULL */ + memset((char *)&qhmem, 0, sizeof(qhmem)); /* every field is 0, FALSE, NULL */ qhmem.ferr= ferr; } /* memfreeshort */ @@ -277,14 +278,14 @@ void qh_memfreeshort(int *curlong, int *totlong) { */ void qh_meminit(FILE *ferr) { - memset((char *)&qhmem, 0, sizeof qhmem); /* every field is 0, FALSE, NULL */ + memset((char *)&qhmem, 0, sizeof(qhmem)); /* every field is 0, FALSE, NULL */ qhmem.ferr= ferr; if (sizeof(void*) < sizeof(int)) { - qh_fprintf(ferr, 6083, "qhull internal error (qh_meminit): sizeof(void*) < sizeof(int). qset.c will not work\n"); + qh_fprintf(ferr, 6083, "qhull internal error (qh_meminit): sizeof(void*) %d < sizeof(int) %d. qset.c will not work\n", (int)sizeof(void*), (int)sizeof(int)); qh_exit(qhmem_ERRqhull); /* can not use qh_errexit() */ } if (sizeof(void*) > sizeof(ptr_intT)) { - qh_fprintf(ferr, 6084, "qhull internal error (qh_meminit): sizeof(void*) > sizeof(ptr_intT). Change ptr_intT in mem.h to 'long long'\n"); + qh_fprintf(ferr, 6084, "qhull internal error (qh_meminit): sizeof(void*) %d > sizeof(ptr_intT) %d. Change ptr_intT in mem.h to 'long long'\n", (int)sizeof(void*), (int)sizeof(ptr_intT)); qh_exit(qhmem_ERRqhull); /* can not use qh_errexit() */ } } /* meminit */ @@ -311,8 +312,8 @@ void qh_meminitbuffers(int tracelevel, int alignment, int numsizes, int bufsize, qh_fprintf(qhmem.ferr, 6085, "qhull internal error (qh_meminit): memory alignment %d is not a power of 2\n", alignment); qh_errexit(qhmem_ERRqhull, NULL, NULL); } - qhmem.sizetable= (int *) calloc(numsizes, sizeof(int)); - qhmem.freelists= (void **) calloc(numsizes, sizeof(void *)); + qhmem.sizetable= (int *) calloc((size_t)numsizes, sizeof(int)); + qhmem.freelists= (void **) calloc((size_t)numsizes, sizeof(void *)); if (!qhmem.sizetable || !qhmem.freelists) { qh_fprintf(qhmem.ferr, 6086, "qhull error (qh_meminit): insufficient memory\n"); qh_errexit(qhmem_ERRmem, NULL, NULL); @@ -330,7 +331,7 @@ void qh_meminitbuffers(int tracelevel, int alignment, int numsizes, int bufsize, void qh_memsetup(void) { int k,i; - qsort(qhmem.sizetable, qhmem.TABLEsize, sizeof(int), qh_intcompare); + qsort(qhmem.sizetable, (size_t)qhmem.TABLEsize, sizeof(int), qh_intcompare); qhmem.LASTsize= qhmem.sizetable[qhmem.TABLEsize-1]; if (qhmem .LASTsize >= qhmem .BUFsize || qhmem.LASTsize >= qhmem .BUFinit) { qh_fprintf(qhmem.ferr, 6087, "qhull error (qh_memsetup): largest mem size %d is >= buffer size %d or initial buffer size %d\n", @@ -421,7 +422,7 @@ void qh_memstatistics(FILE *fp) { qhmem .totbuffer, qhmem .BUFsize, qhmem .BUFinit); if (qhmem.cntlarger) { qh_fprintf(fp, 9279, "%7d calls to qh_setlarger\n%7.2g average copy size\n", - qhmem.cntlarger, ((float) qhmem.totlarger)/ qhmem.cntlarger); + qhmem.cntlarger, ((float)qhmem.totlarger)/(float)qhmem.cntlarger); qh_fprintf(fp, 9280, " freelists(bytes->count):"); } for (i=0; i < qhmem.TABLEsize; i++) { @@ -448,7 +449,7 @@ void qh_memstatistics(FILE *fp) { void *qh_memalloc(int insize) { void *object; - if (!(object= qh_malloc(insize))) { + if (!(object= qh_malloc((size_t)insize))) { qh_fprintf(qhmem.ferr, 6090, "qhull error (qh_memalloc): insufficient memory\n"); qh_errexit(qhmem_ERRmem, NULL, NULL); } @@ -475,15 +476,15 @@ void qh_memfree(void *object, int insize) { void qh_memfreeshort(int *curlong, int *totlong) { *totlong= qhmem .totlong; *curlong= qhmem .cntlong - qhmem .freelong; - memset((char *)&qhmem, 0, sizeof qhmem); /* every field is 0, FALSE, NULL */ + memset((char *)&qhmem, 0, sizeof(qhmem)); /* every field is 0, FALSE, NULL */ } void qh_meminit(FILE *ferr) { - memset((char *)&qhmem, 0, sizeof qhmem); /* every field is 0, FALSE, NULL */ + memset((char *)&qhmem, 0, sizeof(qhmem)); /* every field is 0, FALSE, NULL */ qhmem.ferr= ferr; if (sizeof(void*) < sizeof(int)) { - qh_fprintf(ferr, 6091, "qhull internal error (qh_meminit): sizeof(void*) < sizeof(int). qset.c will not work\n"); + qh_fprintf(ferr, 6091, "qhull internal error (qh_meminit): sizeof(void*) %d < sizeof(int) %d. qset.c will not work\n", (int)sizeof(void*), (int)sizeof(int)); qh_errexit(qhmem_ERRqhull, NULL, NULL); } } diff --git a/src/mem.h b/src/mem.h index 3d2d997..4690034 100644 --- a/src/mem.h +++ b/src/mem.h @@ -11,9 +11,9 @@ and qh_errexit(qhmem_ERRqhull, NULL, NULL) otherwise - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/mem.h#22 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/mem.h#25 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFmem @@ -74,7 +74,8 @@ Trace short and quick memory allocations at T5 On 64-bit machines, a pointer may be larger than an 'int'. qh_meminit()/mem.c checks that 'ptr_intT' holds a 'void*' ptr_intT is not defined as 'long long' for portability to older compilers - size_t is typically an unsigned int + size_t is typically unsigned, but should match the parameter type + Qhull uses int instead of size_t except for system calls such as malloc, qsort, qh_malloc, etc. */ typedef long ptr_intT; @@ -99,6 +100,7 @@ typedef long ptr_intT; typedef struct qhmemT qhmemT; extern qhmemT qhmem; +/* Update qhmem in mem.c if add or remove fields */ struct qhmemT { /* global memory management variables */ int BUFsize; /* size of memory allocation buffer */ int BUFinit; /* initial size of memory allocation buffer */ diff --git a/src/merge.c b/src/merge.c index 13435c4..be39f75 100644 --- a/src/merge.c +++ b/src/merge.c @@ -20,9 +20,9 @@ merges occur in qh_mergefacet and in qh_mergecycle vertex->neighbors not set until the first merge occurs - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/merge.c#22 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/merge.c#24 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -126,7 +126,7 @@ void qh_premerge(vertexT *apex, realT maxcentrum, realT maxangle) { determine non-convex facets merge all non-convex facets */ -void qh_postmerge(char *reason, realT maxcentrum, realT maxangle, +void qh_postmerge(const char *reason, realT maxcentrum, realT maxangle, boolT vneighbors) { facetT *newfacet; boolT othermerges= False; @@ -230,7 +230,7 @@ void qh_all_merges(boolT othermerge, boolT vneighbors) { facet1= merge->facet1; facet2= merge->facet2; mergetype= merge->type; - qh_memfree_(merge, sizeof(mergeT), freelistp); + qh_memfree_(merge, (int)sizeof(mergeT), freelistp); if (facet1->visible || facet2->visible) /*deleted facet*/ continue; if ((facet1->newfacet && !facet1->tested) @@ -325,7 +325,7 @@ void qh_appendmergeset(facetT *facet, facetT *neighbor, mergeType mergetype, rea return; if (facet->degenerate && mergetype == MRGdegen) return; - qh_memalloc_(sizeof(mergeT), freelistp, merge, mergeT); + qh_memalloc_((int)sizeof(mergeT), freelistp, merge, mergeT); merge->facet1= facet; merge->facet2= neighbor; merge->type= mergetype; @@ -567,7 +567,7 @@ boolT qh_checkzero(boolT testall) { used by qsort() to order merges by angle */ int qh_compareangle(const void *p1, const void *p2) { - mergeT *a= *((mergeT **)p1), *b= *((mergeT **)p2); + const mergeT *a= *((mergeT *const*)p1), *b= *((mergeT *const*)p2); return((a->angle > b->angle) ? 1 : -1); } /* compareangle */ @@ -579,7 +579,7 @@ int qh_compareangle(const void *p1, const void *p2) { used by qsort() to order merges */ int qh_comparemerge(const void *p1, const void *p2) { - mergeT *a= *((mergeT **)p1), *b= *((mergeT **)p2); + const mergeT *a= *((mergeT *const*)p1), *b= *((mergeT *const*)p2); return(a->type - b->type); } /* comparemerge */ @@ -591,7 +591,7 @@ int qh_comparemerge(const void *p1, const void *p2) { used by qsort() to order vertices by their visitid */ int qh_comparevisit(const void *p1, const void *p2) { - vertexT *a= *((vertexT **)p1), *b= *((vertexT **)p2); + const vertexT *a= *((vertexT *const*)p1), *b= *((vertexT *const*)p2); return(a->visitid - b->visitid); } /* comparevisit */ @@ -800,13 +800,13 @@ vertexT *qh_find_newvertex(vertexT *oldvertex, setT *vertices, setT *ridges) { vertexp--; /* repeat since deleted this vertex */ } } - qh vertex_visit += qh_setsize(ridges); + qh vertex_visit += (unsigned int)qh_setsize(ridges); if (!qh_setsize(vertices)) { trace4((qh ferr, 4023, "qh_find_newvertex: vertices not in ridges for v%d\n", oldvertex->id)); return NULL; } - qsort(SETaddr_(vertices, vertexT), qh_setsize(vertices), + qsort(SETaddr_(vertices, vertexT), (size_t)qh_setsize(vertices), sizeof(vertexT *), qh_comparevisit); /* can now use qh vertex_visit */ if (qh PRINTstatistics) { @@ -1009,7 +1009,7 @@ void qh_flippedmerges(facetT *facetlist, boolT *wasmerge) { } FOREACHmerge_(othermerges) { if (merge->facet1->visible || merge->facet2->visible) - qh_memfree(merge, sizeof(mergeT)); + qh_memfree(merge, (int)sizeof(mergeT)); else qh_setappend(&qh facet_mergeset, merge); } @@ -1102,7 +1102,7 @@ void qh_forcedmerges(boolT *wasmerge) { } FOREACHmerge_(othermerges) { if (merge->type == MRGridge) - qh_memfree(merge, sizeof(mergeT)); + qh_memfree(merge, (int)sizeof(mergeT)); else qh_setappend(&qh facet_mergeset, merge); } @@ -1177,9 +1177,9 @@ void qh_getmergeset(facetT *facetlist) { } nummerges= qh_setsize(qh facet_mergeset); if (qh ANGLEmerge) - qsort(SETaddr_(qh facet_mergeset, mergeT), nummerges,sizeof(mergeT *),qh_compareangle); + qsort(SETaddr_(qh facet_mergeset, mergeT), (size_t)nummerges, sizeof(mergeT *), qh_compareangle); else - qsort(SETaddr_(qh facet_mergeset, mergeT), nummerges,sizeof(mergeT *),qh_comparemerge); + qsort(SETaddr_(qh facet_mergeset, mergeT), (size_t)nummerges, sizeof(mergeT *), qh_comparemerge); if (qh POSTmerging) { zadd_(Zmergesettot2, nummerges); }else { @@ -1242,9 +1242,9 @@ void qh_getmergeset_initial(facetT *facetlist) { } nummerges= qh_setsize(qh facet_mergeset); if (qh ANGLEmerge) - qsort(SETaddr_(qh facet_mergeset, mergeT), nummerges,sizeof(mergeT *),qh_compareangle); + qsort(SETaddr_(qh facet_mergeset, mergeT), (size_t)nummerges, sizeof(mergeT *), qh_compareangle); else - qsort(SETaddr_(qh facet_mergeset, mergeT), nummerges,sizeof(mergeT *),qh_comparemerge); + qsort(SETaddr_(qh facet_mergeset, mergeT), (size_t)nummerges, sizeof(mergeT *), qh_comparemerge); if (qh POSTmerging) { zadd_(Zmergeinittot2, nummerges); }else { @@ -1589,7 +1589,7 @@ int qh_merge_degenredundant(void) { facet1= merge->facet1; facet2= merge->facet2; mergetype= merge->type; - qh_memfree(merge, sizeof(mergeT)); + qh_memfree(merge, (int)sizeof(mergeT)); if (facet1->visible) continue; facet1->degenerate= False; @@ -1884,7 +1884,7 @@ void qh_mergecycle_all(facetT *facetlist, boolT *wasmerge) { if (nummerge > qh_MAXnummerge) horizon->nummerge= qh_MAXnummerge; else - horizon->nummerge= nummerge; + horizon->nummerge= (short unsigned int)nummerge; zzinc_(Zcyclehorizon); total += facets; zzadd_(Zcyclefacettot, facets); @@ -2113,12 +2113,12 @@ void qh_mergecycle_ridges(facetT *samecycle, facetT *newfacet) { } if (neighbor == newfacet) { qh_setfree(&(ridge->vertices)); - qh_memfree_(ridge, sizeof(ridgeT), freelistp); + qh_memfree_(ridge, (int)sizeof(ridgeT), freelistp); numold++; }else if (neighbor->visitid == samevisitid) { qh_setdel(neighbor->ridges, ridge); qh_setfree(&(ridge->vertices)); - qh_memfree_(ridge, sizeof(ridgeT), freelistp); + qh_memfree_(ridge, (int)sizeof(ridgeT), freelistp); numold++; }else { qh_setappend(&newfacet->ridges, ridge); @@ -2348,7 +2348,7 @@ too strong.\n", qh hull_dim+1); if (nummerge >= qh_MAXnummerge) facet2->nummerge= qh_MAXnummerge; else - facet2->nummerge= nummerge; + facet2->nummerge= (short unsigned int)nummerge; facet2->newmerge= True; facet2->dupridge= False; qh_updatetested (facet1, facet2); @@ -2677,7 +2677,7 @@ void qh_mergesimplex(facetT *facet1, facetT *facet2, boolT mergeapex) { if (otherfacet == facet2) { qh_setdel(facet2->ridges, ridge); qh_setfree(&(ridge->vertices)); - qh_memfree(ridge, sizeof(ridgeT)); + qh_memfree(ridge, (int)sizeof(ridgeT)); qh_setdel(facet2->neighbors, facet1); }else { qh_setappend(&facet2->ridges, ridge); @@ -3614,7 +3614,7 @@ void qh_willdelete(facetT *facet, facetT *replace) { #else /* qh_NOmerge */ void qh_premerge(vertexT *apex, realT maxcentrum, realT maxangle) { } -void qh_postmerge(char *reason, realT maxcentrum, realT maxangle, +void qh_postmerge(const char *reason, realT maxcentrum, realT maxangle, boolT vneighbors) { } boolT qh_checkzero(boolT testall) { diff --git a/src/merge.h b/src/merge.h index 00861c2..5495783 100644 --- a/src/merge.h +++ b/src/merge.h @@ -6,9 +6,9 @@ see qh-merge.htm and merge.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/merge.h#17 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/merge.h#19 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFmerge @@ -114,7 +114,7 @@ struct mergeT { /* initialize in qh_appendmergeset */ /*============ prototypes in alphabetical order after pre/postmerge =======*/ void qh_premerge(vertexT *apex, realT maxcentrum, realT maxangle); -void qh_postmerge(char *reason, realT maxcentrum, realT maxangle, +void qh_postmerge(const char *reason, realT maxcentrum, realT maxangle, boolT vneighbors); void qh_all_merges(boolT othermerge, boolT vneighbors); void qh_appendmergeset(facetT *facet, facetT *neighbor, mergeType mergetype, realT *angle); diff --git a/src/poly.c b/src/poly.c index 6682ea3..8326ab9 100644 --- a/src/poly.c +++ b/src/poly.c @@ -9,9 +9,9 @@ infrequent code is in poly2.c (all but top 50 and their callers 12/3/95) - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/poly.c#21 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/poly.c#23 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -143,7 +143,7 @@ void qh_attachnewfacets(void ) { if (!neighbor->visible) /* delete ridge for simplicial horizon */ qh_setdel(neighbor->ridges, ridge); qh_setfree(&(ridge->vertices)); /* delete on 2nd visit */ - qh_memfree(ridge, sizeof(ridgeT)); + qh_memfree(ridge, (int)sizeof(ridgeT)); } } SETfirst_(visible->ridges)= NULL; @@ -269,7 +269,7 @@ void qh_delfacet(facetT *facet) { qh_setfree(&(facet->outsideset)); if (facet->coplanarset) qh_setfree(&(facet->coplanarset)); - qh_memfree_(facet, sizeof(facetT), freelistp); + qh_memfree_(facet, (int)sizeof(facetT), freelistp); } /* delfacet */ @@ -481,7 +481,7 @@ facetT *qh_makenewfacet(setT *vertices, boolT toporient,facetT *horizon) { } newfacet= qh_newfacet(); newfacet->vertices= vertices; - newfacet->toporient= toporient; + newfacet->toporient= (unsigned char)toporient; if (horizon) qh_setappend(&(newfacet->neighbors), horizon); qh_appendfacet(newfacet); @@ -568,7 +568,7 @@ facetT *qh_makenew_nonsimplicial(facetT *visible, vertexT *apex, int *numnew) { if (!qh ONLYgood) { if (neighbor->visitid == qh visit_id) { qh_setfree(&(ridge->vertices)); /* delete on 2nd visit */ - qh_memfree_(ridge, sizeof(ridgeT), freelistp); + qh_memfree_(ridge, (int)sizeof(ridgeT), freelistp); } } }else { /* neighbor is an horizon facet */ @@ -605,7 +605,7 @@ facetT *qh_makenew_nonsimplicial(facetT *visible, vertexT *apex, int *numnew) { if (neighbor->simplicial) { qh_setdel(neighbor->ridges, ridge); qh_setfree(&(ridge->vertices)); - qh_memfree(ridge, sizeof(ridgeT)); + qh_memfree(ridge, (int)sizeof(ridgeT)); }else { qh_setappend(&(newfacet->ridges), ridge); if (toporient) @@ -717,16 +717,17 @@ facetT *qh_makenew_simplicial(facetT *visible, vertexT *apex, int *numnew) { void qh_matchneighbor(facetT *newfacet, int newskip, int hashsize, int *hashcount) { boolT newfound= False; /* True, if new facet is already in hash chain */ boolT same, ismatch; - int hash, scan; + unsigned hash; + int scan; facetT *facet, *matchfacet; int skip, matchskip; - hash= (int)qh_gethash(hashsize, newfacet->vertices, qh hull_dim, 1, + hash= qh_gethash(hashsize, newfacet->vertices, qh hull_dim, 1, SETelem_(newfacet->vertices, newskip)); - trace4((qh ferr, 4050, "qh_matchneighbor: newfacet f%d skip %d hash %d hashcount %d\n", + trace4((qh ferr, 4050, "qh_matchneighbor: newfacet f%d skip %d hash %ud hashcount %d\n", newfacet->id, newskip, hash, *hashcount)); zinc_(Zhashlookup); - for (scan= hash; (facet= SETelemt_(qh hash_table, scan, facetT)); + for (scan= (int)hash; (facet= SETelemt_(qh hash_table, scan, facetT)); scan= (++scan >= hashsize ? 0 : scan)) { if (facet == newfacet) { newfound= True; @@ -741,7 +742,7 @@ void qh_matchneighbor(facetT *newfacet, int newskip, int hashsize, int *hashcoun facet->id, newfacet->id); qh_errexit2 (qh_ERRprec, facet, newfacet); } - ismatch= (same == (newfacet->toporient ^ facet->toporient)); + ismatch= (same == (boolT)((newfacet->toporient ^ facet->toporient))); matchfacet= SETelemt_(facet->neighbors, skip, facetT); if (ismatch && !matchfacet) { SETelem_(facet->neighbors, skip)= newfacet; @@ -780,7 +781,7 @@ void qh_matchneighbor(facetT *newfacet, int newskip, int hashsize, int *hashcoun *hashcount += 2; } } - trace4((qh ferr, 4052, "qh_matchneighbor: new f%d skip %d duplicates ridge for f%d skip %d matching f%d ismatch %d at hash %d\n", + trace4((qh ferr, 4052, "qh_matchneighbor: new f%d skip %d duplicates ridge for f%d skip %d matching f%d ismatch %d at hash %ud\n", newfacet->id, newskip, facet->id, skip, (matchfacet == qh_DUPLICATEridge ? -2 : getid_(matchfacet)), ismatch, hash)); @@ -790,7 +791,7 @@ void qh_matchneighbor(facetT *newfacet, int newskip, int hashsize, int *hashcoun if (!newfound) SETelem_(qh hash_table, scan)= newfacet; /* same as qh_addhash */ (*hashcount)++; - trace4((qh ferr, 4053, "qh_matchneighbor: no match for f%d skip %d at hash %d\n", + trace4((qh ferr, 4053, "qh_matchneighbor: no match for f%d skip %d at hash %ud\n", newfacet->id, newskip, hash)); } /* matchneighbor */ @@ -973,8 +974,8 @@ facetT *qh_newfacet(void) { facetT *facet; void **freelistp; /* used !qh_NOmem */ - qh_memalloc_(sizeof(facetT), freelistp, facet, facetT); - memset((char *)facet, 0, sizeof(facetT)); + qh_memalloc_((int)sizeof(facetT), freelistp, facet, facetT); + memset((char *)facet, (size_t)0, sizeof(facetT)); if (qh facet_id == qh tracefacet_id) qh tracefacet= facet; facet->id= qh facet_id++; @@ -1006,15 +1007,15 @@ ridgeT *qh_newridge(void) { ridgeT *ridge; void **freelistp; /* used !qh_NOmem */ - qh_memalloc_(sizeof(ridgeT), freelistp, ridge, ridgeT); - memset((char *)ridge, 0, sizeof(ridgeT)); + qh_memalloc_((int)sizeof(ridgeT), freelistp, ridge, ridgeT); + memset((char *)ridge, (size_t)0, sizeof(ridgeT)); zinc_(Ztotridges); if (qh ridge_id == 0xFFFFFF) { qh_fprintf(qh ferr, 7074, "\ qhull warning: more than %d ridges. ID field overflows and two ridges\n\ may have the same identifier. Otherwise output ok.\n", 0xFFFFFF); } - ridge->id= qh ridge_id++; + ridge->id= qh ridge_id++; trace4((qh ferr, 4056, "qh_newridge: created ridge r%d\n", ridge->id)); return(ridge); } /* newridge */ diff --git a/src/poly.h b/src/poly.h index cc2506f..7413f19 100644 --- a/src/poly.h +++ b/src/poly.h @@ -6,9 +6,9 @@ see qh-poly.htm, libqhull.h and poly.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/poly.h#19 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/poly.h#20 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFpoly diff --git a/src/poly2.c b/src/poly2.c index 57abb2f..1626f58 100644 --- a/src/poly2.c +++ b/src/poly2.c @@ -8,9 +8,9 @@ frequently used code is in poly.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/poly2.c#33 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/poly2.c#35 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -323,9 +323,9 @@ void qh_check_points(void) { trace1((qh ferr, 1025, "qh_check_points: check all points below %2.2g of all facet planes\n", maxoutside)); if (qh num_good) /* miss counts other_points and !good facets */ - total= (float) qh num_good * qh num_points; + total= (float)qh num_good * (float)qh num_points; else - total= (float) qh num_facets * qh num_points; + total= (float)qh num_facets * (float)qh num_points; if (total >= qh_VERIFYdirect && !qh maxoutdone) { if (!qh_QUICKhelp && qh SKIPcheckmax && qh MERGING) qh_fprintf(qh ferr, 7075, "\n\ @@ -390,7 +390,7 @@ all %sfacets. Will make %2.0f distance computations.\n", qh_errexit2( qh_ERRprec, errfacet1, errfacet2 ); }else if (errfacet1 && qh outside_err > REALmax/2) qh_errexit2( qh_ERRprec, errfacet1, errfacet2 ); - /* else if errfacet1, the error was logged to qh.ferr but does not effect the output */ + /* else if errfacet1, the error was logged to qh.ferr but does not effect the output */ trace0((qh ferr, 21, "qh_check_points: max distance outside %2.2g\n", maxdist)); } } /* check_points */ @@ -895,7 +895,7 @@ void qh_checkpolygon(facetT *facetlist) { } } } - qh vertex_visit += numfacets; + qh vertex_visit += (unsigned int)numfacets; if (facetlist == qh facet_list) { if (numfacets != qh num_facets - qh num_visible) { qh_fprintf(qh ferr, 6140, "qhull internal error (qh_checkpolygon): actual number of facets is %d, cumulative facet count is %d - %d visible facets\n", @@ -1045,7 +1045,7 @@ void qh_createsimplex(setT *vertices) { newfacet= qh_newfacet(); newfacet->vertices= qh_setnew_delnthsorted(vertices, vertex_n, vertex_i, 0); - newfacet->toporient= toporient; + newfacet->toporient= (unsigned char)toporient; qh_appendfacet(newfacet); newfacet->newfacet= True; qh_appendvertex(vertex); @@ -1081,7 +1081,7 @@ void qh_delridge(ridgeT *ridge) { qh_setdel(ridge->top->ridges, ridge); qh_setdel(ridge->bottom->ridges, ridge); qh_setfree(&(ridge->vertices)); - qh_memfree_(ridge, sizeof(ridgeT), freelistp); + qh_memfree_(ridge, (int)sizeof(ridgeT), freelistp); } /* delridge */ @@ -1101,7 +1101,7 @@ void qh_delvertex(vertexT *vertex) { qh tracevertex= NULL; qh_removevertex(vertex); qh_setfree(&vertex->neighbors); - qh_memfree(vertex, sizeof(vertexT)); + qh_memfree(vertex, (int)sizeof(vertexT)); } /* delvertex */ @@ -1765,7 +1765,7 @@ void qh_initialhull(setT *vertices) { qh_distplane(qh interior_point, firstfacet, &dist); if (dist > 0) { FORALLfacets - facet->toporient ^= True; + facet->toporient ^= (unsigned char)True; } FORALLfacets qh_setfacetplane(facet); @@ -1774,7 +1774,7 @@ void qh_initialhull(setT *vertices) { trace1((qh ferr, 1031, "qh_initialhull: initial orientation incorrect. Correct all facets\n")); facet->flipped= False; FORALLfacets { - facet->toporient ^= True; + facet->toporient ^= (unsigned char)True; qh_orientoutside(facet); } break; @@ -2050,7 +2050,7 @@ void qh_matchduplicates(facetT *atfacet, int atskip, int hashsize, int *hashcoun continue; zinc_(Zhashtests); if (qh_matchvertices(1, newfacet->vertices, newskip, facet->vertices, &skip, &same)) { - ismatch= (same == (newfacet->toporient ^ facet->toporient)); + ismatch= (same == (boolT)(newfacet->toporient ^ facet->toporient)); if (SETelemt_(facet->neighbors, skip, facetT) != qh_DUPLICATEridge) { if (!makematch) { qh_fprintf(qh ferr, 6155, "qhull internal error (qh_matchduplicates): missing dupridge at f%d skip %d for new f%d skip %d hash %d\n", @@ -2264,8 +2264,8 @@ vertexT *qh_newvertex(pointT *point) { vertexT *vertex; zinc_(Ztotvertices); - vertex= (vertexT *)qh_memalloc(sizeof(vertexT)); - memset((char *) vertex, 0, sizeof(vertexT)); + vertex= (vertexT *)qh_memalloc((int)sizeof(vertexT)); + memset((char *) vertex, (size_t)0, sizeof(vertexT)); if (qh vertex_id == 0xFFFFFF) { qh_fprintf(qh ferr, 6159, "qhull input error: more than %d vertices. ID field overflows and two vertices\n\ may have the same identifier. Vertices not sorted correctly.\n", 0xFFFFFF); @@ -2275,8 +2275,8 @@ may have the same identifier. Vertices not sorted correctly.\n", 0xFFFFFF); qh tracevertex= vertex; vertex->id= qh vertex_id++; vertex->point= point; - vertex->dim= (qh hull_dim <= MAX_vdim ? qh hull_dim : 0); - trace4((qh ferr, 4060, "qh_newvertex: vertex p%d(v%d) created\n", qh_pointid(vertex->point), + vertex->dim= (unsigned char)(qh hull_dim <= MAX_vdim ? qh hull_dim : 0); + trace4((qh ferr, 4060, "qh_newvertex: vertex p%d(v%d) created\n", qh_pointid(vertex->point), vertex->id)); return(vertex); } /* newvertex */ @@ -2755,7 +2755,7 @@ void qh_triangulate(void /*qh facet_list*/) { facet1= merge->facet1; facet2= merge->facet2; mergetype= merge->type; - qh_memfree(merge, sizeof(mergeT)); + qh_memfree(merge, (int)sizeof(mergeT)); if (mergetype == MRGmirror) { zinc_(Ztrimirror); qh_triangulate_mirror(facet1, facet2); diff --git a/src/qh-geom.htm b/src/qh-geom.htm index c14969e..9709a52 100644 --- a/src/qh-geom.htm +++ b/src/qh-geom.htm @@ -54,7 +54,7 @@ computations is determined at initialization. The roundoff error in halfspace computation is accounted for by computing the distance from vertices to the halfspace. </p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <p><a href="#TOP">»</a> <b>Geom</b> <a name="TOC">•</a> <a href="qh-globa.htm#TOC">Global</a> • diff --git a/src/qh-globa.htm b/src/qh-globa.htm index ff9650e..8ea5e00 100644 --- a/src/qh-globa.htm +++ b/src/qh-globa.htm @@ -42,7 +42,7 @@ dynamically allocated with malloc(). See <a href="user.h#QHpointer">QHpointer</a>. </p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <p><a href="#TOP">»</a> <a href="qh-geom.htm#TOC">Geom</a> <a name="TOC">•</a> <b>Global</b> • diff --git a/src/qh-io.htm b/src/qh-io.htm index b85f1fb..1bbb352 100644 --- a/src/qh-io.htm +++ b/src/qh-io.htm @@ -53,7 +53,7 @@ the same driver: </p> qh_skipfacet() is tested. </p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> • diff --git a/src/qh-mem.htm b/src/qh-mem.htm index 2be8ec0..d227178 100644 --- a/src/qh-mem.htm +++ b/src/qh-mem.htm @@ -40,7 +40,7 @@ from a reserved buffer. </p> <p>Use 'T5' to trace memory allocations.</p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> • diff --git a/src/qh-merge.htm b/src/qh-merge.htm index 976e2f4..265d6ca 100644 --- a/src/qh-merge.htm +++ b/src/qh-merge.htm @@ -98,7 +98,7 @@ structure.This is called a <em>redundant vertex</em>. </li> </ul> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> diff --git a/src/qh-poly.htm b/src/qh-poly.htm index 97e566a..e4723cb 100644 --- a/src/qh-poly.htm +++ b/src/qh-poly.htm @@ -119,7 +119,7 @@ joggled input, they may have zero area or flipped orientation. </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> diff --git a/src/qh-qhull.htm b/src/qh-qhull.htm index 5d88bda..9bb25fd 100644 --- a/src/qh-qhull.htm +++ b/src/qh-qhull.htm @@ -41,7 +41,7 @@ the n-d beneath-beyond algorithm. See functions and base data types. The top-level header file, <tt>libqhull.h</tt>, contains prototypes for these functions.</p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> @@ -93,6 +93,8 @@ macros</a></h3> <ul> <li><a href="qhull_a.h#traceN">traceN</a> print trace message if <em>qh.IStracing >= N</em>. </li> +<li><a href="qhull_a.h#QHULL_UNUSED">QHULL_UNUSED</a> declare an + unused variable to avoid warnings. </li> </ul> <h3><a href="qh-qhull.htm#TOC">»</a><a name="qfunc">Quickhull diff --git a/src/qh-set.htm b/src/qh-set.htm index bbd162b..49b9f91 100644 --- a/src/qh-set.htm +++ b/src/qh-set.htm @@ -60,7 +60,7 @@ If a set is full, appending an element copies the set to a larger array. </p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> • diff --git a/src/qh-stat.htm b/src/qh-stat.htm index 7e124e5..c976908 100644 --- a/src/qh-stat.htm +++ b/src/qh-stat.htm @@ -41,7 +41,7 @@ Statistics may be turned off in user.h. If so, all but the 'zz' statistics are ignored.</p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> diff --git a/src/qh-user.htm b/src/qh-user.htm index c7ecd9f..4042ab3 100644 --- a/src/qh-user.htm +++ b/src/qh-user.htm @@ -35,7 +35,7 @@ href="http://www.qhull.org">Home page</a> for Qhull<br> user may want to change. </p> </blockquote> -<p><b>Copyright © 1995-2009 The Geometry Center, Minneapolis MN</b></p> +<p><b>Copyright © 1995-2010 The Geometry Center, Minneapolis MN</b></p> <hr> <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> diff --git a/src/qhull.h b/src/qhull.h index 877bda8..3354218 100644 --- a/src/qhull.h +++ b/src/qhull.h @@ -5,9 +5,9 @@ Proxy for libqhull.h for backwards compatability - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/qhull.h#49 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/qhull.h#50 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFqhull diff --git a/src/qhull_a.h b/src/qhull_a.h index 41895e9..ad35036 100644 --- a/src/qhull_a.h +++ b/src/qhull_a.h @@ -12,9 +12,9 @@ defines internal functions for libqhull.c global.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/qhull_a.h#23 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/qhull_a.h#25 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ Notes: grep for ((" and (" to catch fprintf("lkasdjf"); full parens around (x?y:z) @@ -89,6 +89,25 @@ #define trace5(args) {} #endif /* qh_NOtrace */ +/*-<a href="qh-qhull.htm#TOC" + >--------------------------------</a><a name="QHULL_UNUSED">-</a> + +*/ + +/* See Qt's qglobal.h */ +#if !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) +# define QHULL_OS_WIN +#elif defined(__MWERKS__) && defined(__INTEL__) +# define QHULL_OS_WIN +#endif +#if defined(__INTEL_COMPILER) && !defined(QHULL_OS_WIN) +template <typename T> +inline void qhullUnused(T &x) { (void)x; } +# define QHULL_UNUSED(x) qhullUnused(x); +#else +# define QHULL_UNUSED(x) (void)x; +#endif + /***** -libqhull.c prototypes (alphabetical after qhull) ********************/ void qh_qhull(void); @@ -103,7 +122,7 @@ void qh_partitionall(setT *vertices, pointT *points,int npoints); void qh_partitioncoplanar(pointT *point, facetT *facet, realT *dist); void qh_partitionpoint(pointT *point, facetT *facet); void qh_partitionvisible(boolT allpoints, int *numpoints); -void qh_precision(char *reason); +void qh_precision(const char *reason); void qh_printsummary(FILE *fp); /***** -global.c internal prototypes (alphabetical) ***********************/ diff --git a/src/qset.c b/src/qset.c index 1c8c027..7c0059c 100644 --- a/src/qset.c +++ b/src/qset.c @@ -7,9 +7,9 @@ see qh-set.htm and qset.h - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/qset.c#24 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/qset.c#26 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qset.h" @@ -25,7 +25,7 @@ typedef struct ridgeT ridgeT; typedef struct facetT facetT; void qh_errexit(int exitcode, facetT *, ridgeT *); -void qh_fprintf(FILE *fp, int msgcode, char *fmt, ... ); +void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... ); # ifdef _MSC_VER /* Microsoft Visual C++ -- warning level 4 */ # pragma warning( disable : 4127) /* conditional expression is constant */ # pragma warning( disable : 4706) /* assignment within conditional function */ @@ -173,7 +173,7 @@ void qh_setappend_set(setT **setp, setT *setA) { } *sizep= size+sizeA+1; /* memcpy may overwrite */ if (sizeA > 0) - memcpy((char *)&((*setp)->e[size].p), (char *)&(setA->e[0].p), SETelemsize *(sizeA+1)); + memcpy((char *)&((*setp)->e[size].p), (char *)&(setA->e[0].p), (size_t)(sizeA+1) * SETelemsize); } /* setappend_set */ @@ -219,7 +219,7 @@ void qh_setappend2ndlast(setT **setp, void *newelem) { design: checks that maxsize, actual size, and NULL terminator agree */ -void qh_setcheck(setT *set, char *tname, int id) { +void qh_setcheck(setT *set, const char *tname, unsigned id) { int maxsize, size; int waserr= 0; @@ -304,7 +304,7 @@ setT *qh_setcopy(setT *set, int extra) { SETreturnsize_(set, size); newset= qh_setnew(size+extra); *SETsizeaddr_(newset)= size+1; /* memcpy may overwrite */ - memcpy((char *)&(newset->e[0].p), (char *)&(set->e[0].p), SETelemsize *(size+1)); + memcpy((char *)&(newset->e[0].p), (char *)&(set->e[0].p), (size_t)(size+1) * SETelemsize); return(newset); } /* setcopy */ @@ -534,7 +534,7 @@ setT *qh_setduplicate(setT *set, int elemsize) { newSet= qh_setnew(size); FOREACHelem_(set) { newElem= qh_memalloc(elemsize); - memcpy(newElem, elem, elemsize); + memcpy(newElem, elem, (size_t)elemsize); qh_setappend(&newSet, newElem); } return newSet; @@ -830,7 +830,7 @@ void qh_setlarger(setT **oldsetp) { newset= qh_setnew(2 * size); oldp= SETaddr_(oldset, void); newp= SETaddr_(newset, void); - memcpy((char *)newp, (char *)oldp, (size+1) * SETelemsize); + memcpy((char *)newp, (char *)oldp, (size_t)(size+1) * SETelemsize); sizep= SETsizeaddr_(newset); *sizep= size+1; FOREACHset_((setT *)qhmem.tempstack) { @@ -894,7 +894,7 @@ setT *qh_setnew(int setsize) { if (!setsize) setsize++; size= sizeof(setT) + setsize * SETelemsize; - if ((unsigned) size <= (unsigned) qhmem.LASTsize) { + if (size <= qhmem.LASTsize) { qh_memalloc_(size, freelistp, set, setT); #ifndef qh_NOmem sizereceived= qhmem.sizetable[ qhmem.indextable[size]]; @@ -965,7 +965,7 @@ setT *qh_setnew_delnthsorted(setT *set, int size, int nth, int prepend) { *(newp++)= *oldp++; break; default: - memcpy((char *)newp, (char *)oldp, nth * SETelemsize); + memcpy((char *)newp, (char *)oldp, (size_t)nth * SETelemsize); newp += nth; oldp += nth; break; @@ -993,7 +993,7 @@ setT *qh_setnew_delnthsorted(setT *set, int size, int nth, int prepend) { *(newp++)= *oldp++; break; default: - memcpy((char *)newp, (char *)oldp, tailsize * SETelemsize); + memcpy((char *)newp, (char *)oldp, (size_t)tailsize * SETelemsize); newp += tailsize; } *newp= NULL; @@ -1010,7 +1010,7 @@ setT *qh_setnew_delnthsorted(setT *set, int size, int nth, int prepend) { notes: never errors */ -void qh_setprint(FILE *fp, char* string, setT *set) { +void qh_setprint(FILE *fp, const char* string, setT *set) { int size, k; if (!set) @@ -1294,7 +1294,7 @@ void qh_setzero(setT *set, int index, int size) { } set->e[set->maxsize].i= size+1; /* may be overwritten */ count= size - index + 1; /* +1 for NULL terminator */ - memset((char *)SETelemaddr_(set, index, void), 0, count * SETelemsize); + memset((char *)SETelemaddr_(set, index, void), 0, (size_t)count * SETelemsize); } /* setzero */ diff --git a/src/qset.h b/src/qset.h index c188d6a..6fec13f 100644 --- a/src/qset.h +++ b/src/qset.h @@ -16,9 +16,9 @@ - every set is NULL terminated - sets may be sorted or unsorted, the caller must distinguish this - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/qset.h#16 $$Change: 1099 $ - $DateTime: 2009/12/04 22:49:19 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/qset.h#18 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFset @@ -95,7 +95,7 @@ struct setT { SETelemsize size of a set element in bytes */ -#define SETelemsize sizeof(setelemT) +#define SETelemsize ((int)sizeof(setelemT)) /*=========== -macros- =========================*/ @@ -447,7 +447,7 @@ void qh_setaddnth(setT **setp, int nth, void *newelem); void qh_setappend(setT **setp, void *elem); void qh_setappend_set(setT **setp, setT *setA); void qh_setappend2ndlast(setT **setp, void *elem); -void qh_setcheck(setT *set, char *tname, int id); +void qh_setcheck(setT *set, const char *tname, unsigned id); void qh_setcompact(setT *set); setT *qh_setcopy(setT *set, int extra); void *qh_setdel(setT *set, void *elem); @@ -468,7 +468,7 @@ void qh_setlarger(setT **setp); void *qh_setlast(setT *set); setT *qh_setnew(int size); setT *qh_setnew_delnthsorted(setT *set, int size, int nth, int prepend); -void qh_setprint(FILE *fp, char* string, setT *set); +void qh_setprint(FILE *fp, const char* string, setT *set); void qh_setreplace(setT *set, void *oldelem, void *newelem); int qh_setsize(setT *set); setT *qh_settemp(int setsize); diff --git a/src/random.h b/src/random.h index 9eacdd9..cb20ab6 100644 --- a/src/random.h +++ b/src/random.h @@ -6,9 +6,9 @@ see qh-geom.htm and random.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/random.h#9 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/random.h#10 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #ifndef qhDEFrandom diff --git a/src/rbox.c b/src/rbox.c index 886c6a1..00b3b25 100644 --- a/src/rbox.c +++ b/src/rbox.c @@ -84,7 +84,7 @@ int main(int argc, char **argv) { } command_size= qh_argv_to_command_size(argc, argv); - if ((command= (char *)qh_malloc(command_size))) { + if ((command= (char *)qh_malloc((size_t)command_size))) { qh_argv_to_command(argc, argv, command, command_size); return_status= qh_rboxpoints(stdout, stderr, command); qh_free(command); diff --git a/src/rboxlib.c b/src/rboxlib.c index f74fcd2..a9bd5e1 100644 --- a/src/rboxlib.c +++ b/src/rboxlib.c @@ -41,7 +41,7 @@ void out3n( double a, double b, double c); void qh_fprintf_rbox(FILE *fp, int msgcode, const char *fmt, ... ); void qh_free(void *mem); -void *qh_malloc(unsigned int size); +void *qh_malloc(size_t size); int qh_rand( void); void qh_srand( int seed); @@ -176,7 +176,7 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { case 't': istime= 1; if (isdigit(*s)) { - seed= qh_strtod(s, &s); + seed= qh_strtol(s, &s); israndom= 0; }else israndom= 1; @@ -220,13 +220,15 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { ismesh= 1; if (*s) meshn= qh_strtod(s, &s); - if (*s == ',') - meshm= qh_strtod(++s, &s); - else + if (*s == ',') { + ++s; + meshm= qh_strtod(s, &s); + }else meshm= 0.0; - if (*s == ',') - meshr= qh_strtod(++s, &s); - else + if (*s == ',') { + ++s; + meshr= qh_strtod(s, &s); + }else meshr= sqrt(meshn*meshn + meshm*meshm); if (*s && !isspace(*s)) { qh_fprintf_rbox(rbox.ferr, 7069, "rbox warning: assuming 'M3,4,5' since mesh args are not integers or reals\n"); @@ -268,7 +270,7 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { if (rbox.isinteger && !isbox) box= qh_DEFAULTzbox; if (addcube) { - cubesize= floor(ldexp(1.0,dim)+0.5); + cubesize= (int)floor(ldexp(1.0,dim)+0.5); if (cube == 0.0) cube= box; }else @@ -457,7 +459,7 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { /* ============= mesh distribution =============== */ if (ismesh) { - nthroot= pow(numpoints, 1.0/dim) + 0.99999; + nthroot= (int)(pow((double)numpoints, 1.0/dim) + 0.99999); for (k=dim; k--; ) mult[k]= 0; for (i=0; i < numpoints; i++) { @@ -561,7 +563,7 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { y= sin(angle); if (iscdd) out1( 1.0); - out3n( box*x, box*y, 0); + out3n( box*x, box*y, 0.0); x *= 1-gap; y *= 1-gap; if (iscdd) @@ -747,13 +749,13 @@ int roundi( double a) { qh_fprintf_rbox(rbox.ferr, 6200, "rbox input error: negative coordinate %2.2g is too large. Reduce 'Bn'\n", a); qh_errexit_rbox(qh_ERRinput); } - return a - 0.5; + return (int)(a - 0.5); }else { if (a + 0.5 > INT_MAX) { qh_fprintf_rbox(rbox.ferr, 6201, "rbox input error: coordinate %2.2g is too large. Reduce 'Bn'\n", a); qh_errexit_rbox(qh_ERRinput); } - return a + 0.5; + return (int)(a + 0.5); } } /* roundi */ diff --git a/src/stat.c b/src/stat.c index 9a51463..0661125 100644 --- a/src/stat.c +++ b/src/stat.c @@ -6,9 +6,9 @@ see qh-stat.htm and stat.h - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/stat.c#22 $$Change: 1059 $ - $DateTime: 2009/10/30 18:26:26 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/stat.c#25 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "qhull_a.h" @@ -470,9 +470,9 @@ void qh_initstatistics(void) { qh_allstatG(); qh_allstatH(); qh_allstatI(); - if (qhstat next > sizeof(qhstat id)) { + if (qhstat next > (int)sizeof(qhstat id)) { qh_fprintf(qhmem.ferr, 6184, "qhull error (qh_initstatistics): increase size of qhstat.id[].\n\ - qhstat.next %d should be <= sizeof(qhstat id) %d\n", qhstat next, sizeof(qhstat id)); + qhstat.next %d should be <= sizeof(qhstat id) %d\n", qhstat next, (int)sizeof(qhstat id)); #if 0 /* for locating error, Znumridges should be duplicated */ for(i=0; i < ZEND; i++) { int j; @@ -552,7 +552,7 @@ boolT qh_nostatistic(int i) { qh_printallstatistics( fp, string ) print all statistics with header 'string' */ -void qh_printallstatistics(FILE *fp, char *string) { +void qh_printallstatistics(FILE *fp, const char *string) { qh_allstatistics(); qh_collectstatistics(); @@ -571,7 +571,7 @@ void qh_printallstatistics(FILE *fp, char *string) { see: qh_printallstatistics() */ -void qh_printstatistics(FILE *fp, char *string) { +void qh_printstatistics(FILE *fp, const char *string) { int i, k; realT ave; diff --git a/src/stat.h b/src/stat.h index 6dcb90d..9415436 100644 --- a/src/stat.h +++ b/src/stat.h @@ -6,9 +6,9 @@ see qh-stat.htm and stat.c - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/stat.h#22 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/stat.h#25 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ recompile qhull if you change this file @@ -494,7 +494,7 @@ extern qhstatT qh_qhstat; struct qhstatT { intrealT stats[ZEND]; /* integer and real statistics */ unsigned char id[ZEND+10]; /* id's in print order */ - char *doc[ZEND]; /* array of documentation strings */ + const char *doc[ZEND]; /* array of documentation strings */ short int count[ZEND]; /* -1 if none, else index of count to use */ char type[ZEND]; /* type, see ztypes above */ char printed[ZEND]; /* true, if statistic has been printed */ @@ -525,8 +525,8 @@ void qh_freestatistics(void); void qh_initstatistics(void); boolT qh_newstats(int index, int *nextindex); boolT qh_nostatistic(int i); -void qh_printallstatistics(FILE *fp, char *string); -void qh_printstatistics(FILE *fp, char *string); +void qh_printallstatistics(FILE *fp, const char *string); +void qh_printstatistics(FILE *fp, const char *string); void qh_printstatlevel(FILE *fp, int id, int start); void qh_printstats(FILE *fp, int index, int *nextindex); realT qh_stddev(int num, realT tot, realT tot2, realT *ave); diff --git a/src/unix.c b/src/unix.c index be6b3cf..d74b403 100644 --- a/src/unix.c +++ b/src/unix.c @@ -7,9 +7,9 @@ see qh-qhull.htm - copyright (c) 1993-2009 The Geometry Center. - $Id: //product/qhull/main/rel/src/unix.c#24 $$Change: 1102 $ - $DateTime: 2009/12/07 20:26:04 $$Author: bbarber $ + copyright (c) 1993-2010 The Geometry Center. + $Id: //product/qhull/main/rel/src/unix.c#25 $$Change: 1137 $ + $DateTime: 2010/01/02 21:58:11 $$Author: bbarber $ */ #include "mem.h" diff --git a/src/user.c b/src/user.c index a6742ed..6e6287e 100644 --- a/src/user.c +++ b/src/user.c @@ -129,7 +129,7 @@ int qh_new_qhull(int dim, int numpoints, coordT *points, boolT ismalloc, qh_meminit(errfile); firstcall= False; } - if (strncmp(qhull_cmd,"qhull ", 6)) { + if (strncmp(qhull_cmd,"qhull ", (size_t)6)) { qh_fprintf(errfile, 6186, "qhull error (qh_new_qhull): start qhull_cmd argument with \"qhull \"\n"); qh_exit(qh_ERRinput); } @@ -253,7 +253,7 @@ void qh_errexit(int exitcode, facetT *facet, ridgeT *ridge) { notes: except for string, any parameter may be NULL */ -void qh_errprint(char *string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex) { +void qh_errprint(const char *string, facetT *atfacet, facetT *otherfacet, ridgeT *atridge, vertexT *atvertex) { int i; if (atfacet) { diff --git a/src/user.h b/src/user.h index 472144d..5cbf142 100644 --- a/src/user.h +++ b/src/user.h @@ -427,7 +427,7 @@ stop after qh_JOGGLEmaxretry attempts If using gcc, best alignment is #define qh_MEMalign fmax_(__alignof__(realT),__alignof__(void *)) */ -#define qh_MEMalign fmax_(sizeof(realT), sizeof(void *)) +#define qh_MEMalign ((int)(fmax_(sizeof(realT), sizeof(void *)))) /*-<a href="qh-user.htm#TOC" >--------------------------------</a><a name="MEMbufsize">-</a> diff --git a/src/user_eg2.c b/src/user_eg2.c index fa2cc47..da2c77f 100644 --- a/src/user_eg2.c +++ b/src/user_eg2.c @@ -302,7 +302,7 @@ void addhalf (coordT *points, int numpoints, int numnew, int dim, coordT *feasib offset= -1.0; for (k=dim; k--; ) { if (j/2 == k) { - normal[k]= sqrt (dim); /* to normalize as in makehalf */ + normal[k]= sqrt((coordT)dim); /* to normalize as in makehalf */ if (j & 1) normal[k]= -normal[k]; }else diff --git a/src/usermem.c b/src/usermem.c index 82b7a43..134a415 100644 --- a/src/usermem.c +++ b/src/usermem.c @@ -25,14 +25,14 @@ /*-<a href="qh-user.htm#TOC" >-------------------------------</a><a name="qh_exit">-</a> - qh_exit( errstatus ) + qh_exit( exitcode ) exit program notes: same as exit() */ -void qh_exit(int errstatus) { - exit(errstatus); +void qh_exit(int exitcode) { + exit(exitcode); } /* exit */ /*-<a href="qh-user.htm#TOC" @@ -57,7 +57,7 @@ void qh_free(void *mem) { notes: same as malloc() */ -void *qh_malloc(unsigned int size) { +void *qh_malloc(size_t size) { return malloc(size); } /* malloc */ diff --git a/user_eg3.ilk b/user_eg3.ilk new file mode 100644 index 0000000000000000000000000000000000000000..dd16733fcdf03fb95d39af078eccfc3ff3497085 GIT binary patch literal 982096 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 R9YwJ}a@QPZ1%BH5^nb}EP;&qP literal 0 HcmV?d00001 -- GitLab