diff --git a/Announce.txt b/Announce.txt index 7433d4a153f123764b0dff2291943bbbbc093cbf..9154b41f857c065e0b94615794bd322a3a4167f4 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 a7aba9b1591c271516f250cc5c14d74d6d612f87..daccfaeeb6132828769190265d1bed43834b23e4 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 38a9f58131506fa67a462594952d9ee4f8710bee..1f38a2cb4a269e90a2669d39bce37b880ed20f7f 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 51d90cfbeed9b0e0873cce5611a51d0e9f55f1d5..f5bd644d51d6f0285aaeb279bd01055267ce8bca 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 61280a81e12f26a7a9988c9d9b6d24777b2dfbbc..c8c1cd84d075a852b3cdcb71e3135e724c8aa1ef 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 cb7eb30090f5444e340cdf9476e12f924efd2978..bc6e56c008232ea1e30d1783e2eadc9d8a6e1d65 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 2c950fd717e6395a2419e89adda8a21f3696f7c9..ec6d8ebab1449de681997030ec1dac39c33e3c64 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 a1cd4d7a91fabbaec93f6942907b481197a23a58..03a14c93b53d3d1f80c8ede53c41eb58fe170aca 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 2a8404ec820cb33cafb02fcb81110d14aa44c0bf..7f66e36aaa60a5bfd3b9d0e824801eb4af431366 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 6fa4e632e8726f0c67a22778f6c71a22a40ca32a..7e6c071ae6213346b80e84159c215bbd2bb2d833 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 850eabd44872a8ebf9d55caafa05b6bc9997abe3..1de32fe57b33188a4396afc7008c284ac44bf88f 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 fc9ff12236ae0ad89a32da53560ea392379d4897..01e44be1b360bf866981bb6ebadb42bfbb4c57e6 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 e9f3ec0d2f70b83e5a43be3b6f92b016255c028b..6cead8a97ad47d1ecb24ac241aebdf7855247ce9 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 6928d61535f8403e9138764ab11384cc87c0dbb4..96f7f147e32c7d62e2c8c3a9628f327ea8a1ddb4 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 12f23d0eeb10b73560ff1248823a308a3b5b2e96..e9d7aa136d4d93cd2173169fc8ff7d01c63b946b 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 54fa54d0a460af6d9a825cc004ffd529ab1fbd5b..b7a898f60845526a31ba4997ddd579ca6711c014 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 9db1bbb692c18f885a48ace06c1bf0e2322be3e4..c9903e373b6aa1604021202b94a8be510a201506 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 31a62daa4d73d0a4bb55381feb094c8c620664e9..a847aee8cb05f2b7466b23c6b8fc6ba7c76399e2 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 86dc78f3197b84ceb43cf0cc2366e6552394337b..25a91ebe00d8638243502e4aa6553a9e7c391b19 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 dd13c70c60bb7536a71634e52182caa45011c2c8..9d5fd6654432f6d3a8f22e251b35f0227b2f553e 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 06a7f5012905d52ce6b3e870beb02493f79224c5..634be5dec7dea7e7e134e0e9424448b3777bcb67 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 9f44a741ec2588435ad154446e02efa7fc0e517f..1354e5f54256dcdc4a178172a435a8e0992b5757 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 c747d687cbe5b7c4d1dce7b13f0b0bf66e425901..6fe762edd6dba5d3954162164ef47cc017b7ee5f 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 50e1ca0becfce231e4db27d5acc466379d832716..bb3c1478013bb45cd40ef42bac2e124cde859ccf 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 9aa38750f0dd6213f7f70b26e23e172b9f7134fb..ff3669a94a0cceae9afd6f6cf51012bef3ff07f3 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 ebb185c81779de5b777a49f45c0ea363a917a795..ba0b6a5950ced47d5603983c99b9e1163738c08c 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 5e04e423bf7ea3077f55810b709561dbf2235172..996810bb13fa80004a78e77350d24da6c0247d2d 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 750b5cea141ea2914ecb34489fea07371225a03a..bd515aa072fbfda236acec90634bd2abc6a70339 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 2b134c848bb762e5a36dba94bbeb84e7bd6dd1cc..fa983dc55e7df02720800b2ce5c41fc07d1a4330 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 46082ce4e284878e844f29e60e2eb378c8d420b1..f1e2bd3edbc329786b03b20886d6d54feb03c60b 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 83114116ce20869617d3d6e8eaa5413017acd37d..9e652d9dd6fe3384b5b234bbe15efc48ff44e9ed 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 e74f3280e2ba013e17633020d3d3ea3dcd8cdc64..d85f1d0630763f607b0d490edea8c506f23124ca 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 b25ebfc7be5a9455f0281afc76ae21a024fdd9f8..34864be0468b23b074c38fd134bdf3972729ff64 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 cc228d899db24f1c57a565c6c193f926c6d7621c..ba198a09bd52bd495f406ac3caa405c44c96ea05 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 7ea431b6779c323564f1d2afd39e78c846358cc4..f43e3ddd5baa6148e1e67229ec9c2a08ae4f1f8d 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 ee769cdd8c2006ac11ffed9bebf691441db5983a..c2e3ef88dcf481ab7735ee7a283f6ec1d13bacd3 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 dce0253a4d22e7c1521483a3e3932622c05eca58..439f867b561a1894925d6a4ee3614c7f25a832e5 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 952cc26db522c60737df658ec726aa67c70f6f0b..32e269f8d0445c0cd7a94543519b19ee2073e7a2 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 7a638d1c5f160aca599675ae857e87d5a15ef2b4..abce85aed0b7a8115ca2322257370ddc23fd557d 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 8329f6d1177e41208e7f9390dd43a60e5a3b6fca..c8849bd0986650becbae4762c7e042b6274215cb 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 c743e7c12f0c5fbe31b9763cda403cfdb98ac3e5..a4b3a5fb5a3a7d06e62a6e542f400f2f5abd22e4 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 b079bdbfbec37457bf06191709f635b4e8034d8a..6ef3efbf1a6a91679a167d9c62b627d888f58e3d 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 82761cc0fa4766340a37ed166e3bdb803abca2ab..016cd0938211bf026b4b2e22d6f90d6af09c6109 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 4c9c3400dca7d2c28fc3424767c4321cbce86e6b..653a28d070575f9bf3d3ff49cc70a802cd5ecabe 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 3678685a5a7a0cd94b2aa3bade75e4e70650ed05..065d2b57c38c0b9daeef82725b43323d7ce68a94 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 b318207ebf7922fc468b96ee5a941c1d2fb7f3af..146b19136c1ba757badae2ca3062f8af72511421 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 c4c6469a079721acf900d18fe80d211d2be76072..d03e31dfc19b291c6b4fe1b3261086b3aa0e555f 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 e979b74a18bf6913cdd9dfe31fd7df0101b2ce63..01b71d2fe0cc49d846a31458173b7365854ab204 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 7ec085ad4dc197cfec894b5c6e7f26b5fab2e399..6795b83f26ab9b5089f14c8f32517b87cbabc47b 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 482b5a8ec79e4664404b4a3a3dd0ec216a4dcb0f..303d68a212983b599fdd3e289a016477074d4b26 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 648afbd7192fe7fd624c776fd1d985d4efa82593..15554e49bab69f1e8d4c04b2608c469db0ed8446 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 3c4ded544300a53accc13d545b15346a96e9e81e..00759ccff33815a791c0eab060daf3c457aa6f32 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 c0e35bf1bd813203c68fde591aadee98b8faeafc..0d3d1d92aa8ace091b741cac1e544458404ba644 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 54243912227b6f5b5bdbd9f2b9047845c22cac04..9eb9bc4f411713bdcedc8c228340c108f8ccdbbd 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 d1ee25c80a9e32517dbe1f723ca6422635f5f948..cbb3194dbbf379c712daa9d6e5bbc595fcbdf784 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 1688fee2756d26adf759713adefb23aa3a49e57a..3c7d41b32a2dcf871610ba0b8c273d559e4b12ce 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 d6880792b6468e6e0b1ae9c1f508c5dfc5b671fe..e47c0a90bab9f7b743c2e4ff9289622a971b61de 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 a824d6a1fade159b79ae57326fe285625f9f6ae7..42bf7fa6a311399096090619cd71e7890d142b0e 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 f502b0a4488f470b6ce57f51664fdc92abfbb13f..38352033bf65da7e2e254fef0deb969e676669a7 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 177cd9389857b89adf59f688d52d18b5b47d27ea..3f89d10708d420a601462f3c9bb743b95a219964 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 31ee3447155cf48518c978506b72be58562594b0..a281058b9ae63a1b371308365a880739587d9da1 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 a8314265d1cb6bc0d41678315cbebe18a5230c7c..06a18c838f2122504326f5e249dd52aa6f767bdb 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 cbc697be3f41d996901ab951a61571b9d0be9f42..4f296df04deb9d67a766c89d035f4553a939dc92 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 2300b7186933a814dccd54f00b6695c81b273776..9132a185a3cd2135494c60315b9ba852541e6eff 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 63f73a8098511904005b1838c8d0203a31e837eb..6dc0a126cbb03698c4655589d5c70b888cf8127e 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 53855f7da24718b82ea269e6cc195f65d1542158..67a72b04f2b6d13deebc2020f67b940bf5a61aea 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 43dcea7916e7170d3dcaf7b1889ddeb9b4e18209..485d3b03234550b9010679972e57d9207e0b9271 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 3cbb0f55ed78b44869c5db94f27bf3c5fbb1efdc..6126a5a3d71736246fbb1e8702e6022e8abcee34 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 c45c5b50bc19a24a5eb17d66397ca15abbb69285..3f2123fb382a1ae72d040c6417b558ffe32853d2 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 31b56d86ef36008e12b32dc788f6462091e3821a..790872f47489f29ed0282c3072f95512c18f6f9c 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 44f05104de62c6339fa1962431c01ae0e0cc87e6..b31b61da1827fa72892bf9e399dbaaf240981907 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 2f7fd93c3f10cd6c5631b7dc5abb7115c065753f..05e129b287e62ff2d4f2dd56cc674123c86d1133 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 4a3e5f73ec2adcb33e9e7246c1353a88bc3b8d87..e99aeffa6d5af61d50d1f35569aa989a3807e4a5 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 9957a022e72a6e5052d4267935280ba45e1840d6..88111effe476e9faf67398850509b9961df43ef8 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 75026cf8980fa89189c022b8f2712254e1b6fa2a..4c83335afe4c61027d29b5ee837334169411c2c2 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 764d0cdd2bd17749824361dd854aff0fbcc871ab..3b27f0fc8e0bb0812807b69c0f2de8a3df0ae6e6 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 06dde1e3f148ca887d0e5618d6cfadf6f57c8bc8..1cce267faef20d7ced9165f535fc52c88301fde3 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 2772f8575bac124fe2718f8070bbd7d8c2226ea3..302344afe38bd395adf7c28cff57b2e3c9dc900a 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 02330f8c563cf8aff5e14d4df76a52ef599c83af..ab06522f7b487e793e6459840897e50eaae961b4 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 168221b243d553df6770314fa5fc472cc5066e0a..9e37a095e51bef10eab4daaa7b04552d0dc7e18f 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 2800611c04b5640504c680b5ad8c4408abd8ee08..d5e535c5a1fd9a022776c8c1b4a1fbe5f86ccb55 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 4bfa8afe651eba60d704e71f1cf6d920886fd644..39c5b00005672fb460abe695343400fac1643f10 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 7a9ef1530516e08074cfbd175ceb99441e62d373..a5fb10e0fec4977a95c712609d752a68b96bce21 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 22f45fcfe633c27be94f330022eedb1ebdf11946..bfe2ac89fae6baaf709f2fb48673091caf020c1d 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 680489bfedcb4078c8b416aa426870dcf84a8dd3..c6b9852c5dd275c8bbef85846344370d616d7836 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 309d1a9e2b0ea8347a9c77cf9773f1a77f75b86a..8a396f149aa5bccd603a4255ca324c4c11d8e76e 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 8f5891fcee895610f3e5a925db1e2ce6ca686e68..17b584cfb19fce432e215e29af9662539c5331b7 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 3d02d6d5461a4d5680502a88339fc5ca9675aa13..9903d9cd399c52f4e70e1fb090bdf223e916e633 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 7efc74961af70656fef6c74edbe01eae2362ebfb..8f09661a2a7665e9bf8c80fb19d01e2cdfc26d82 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 2ddbfde6772efeb95befe4af5036a8be050b09f4..b74338b28c09c4d65b6b7aecd50712535f0e8ca9 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 d0036b7e8ec8977df09c3e61a5fe4b9fc6686ecf..723b7739a318a5e880837c953c873932e7a962e8 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 0cd5cae07236e376dcb87d62dcd17b12eabb47da..2d77d1fdb973eac15b4e0b6c3b05dba1c5ab23d0 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 b25a5693bbac107ab5a268295bbf9773d1f41da1..6d934f68f03067feb5801f6cda44877d1d1c0d82 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 5b0f72323da033990c4ef964be3802c85a1a98b1..ea845e4d7d1f7b2b4aeb4ca3aac73f9f77e88dd7 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 4ad3299cfafa3ec7bc247ff3827ee64e340fdc3b..b40d7e069dec5d6fc7836b796ab00aeda468adc3 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 712716f8a6b68cbe8c8a513abe1d85e487733048..19fbb5269f1545d8256fc594a72f7fcdaad680f1 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 88b94a4860a32f10e4f88dd3e4b035984de17385..409d9a5756cc607040507d94909c2cf2cdf6c37d 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 13ad4a38cfbacceb44926b595a389516c66b3900..e0b0dc83ada5051688c2517a700242414cc085c7 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 bc459525fe97fb3ea9ac062e1eba7f7279f0e733..3378d5ebc09051c5f5a0332340f8d90f46b6b30d 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 8ca94d7dcaed12b160b54cb087cd97c886872905..d7681cd1601e866f41e12b67cee63eeac1194e96 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 Binary files /dev/null and b/qhull.ilk differ diff --git a/qtpro/libqhull/libqhull.pro b/qtpro/libqhull/libqhull.pro index ddff30f69b1504f4cbc359bc78019e3fe59a0c37..079f2c08cfbbd6e63b8501b2b3506294c17e1152 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 6c40613ae674c92e7fa9089c5da3a49f74b574da..38793b0be4872b85cdec8cf13430d5655584e5fe 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 0000000000000000000000000000000000000000..ff58d667cd7aec6175161727227fa1a0bef8cf07 --- /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 645910306d5691d362ca1360a918d64dd3deff8e..cb63646378ca622b81ea18750e39fa7cedc494fc 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 c199cf610d7e954520030f03457fb4de1e6814da..acf2a4085cd80522b71f2c4e5b210d6ea002f2d8 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 d93aacf274bdf42e485b51410a48a0e7176beb83..72afc82a181c450b5aac211aec6a0124a7e8c288 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 a3a847e186bdac773f5ecd2e91b85b5d9072a646..5b987d76bcd74bfd3abc2ee74af61db063790f3e 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 Binary files /dev/null and b/rbox.ilk differ diff --git a/src/Changes.txt b/src/Changes.txt index 0e874cd6b50d06b7f838d336b0aba334d7872e10..c01f0101528cd71ca20f35733160e0b26c38ec72 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 ceb534fe3b7527fae282d99c42c5010e31be25c0..5a050b86cb7e1e5f765810f8e842e531dcfb8ceb 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 038a0360adcd5e8371bc029ab300ef45b59bdee3..aa9d651b47cd950d1fdbacaf1cb5aa43dc4dd841 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 52296a9d813d46bcdc81d230452f3b49ab2e268d..5150b91a08ef7d2de8759cb849d91a2ecc670da5 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 eb636ebb660ae92d611d9ac42439e67b9697bc5e..bf943c757c2c1047af6b464e7c0b209082eb850a 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 94eba872ad206ad4feb50c1fd15f9b7ba9b862ca..0555d1408bbaf0a07097fc50326d4992d214afa9 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 e8b95ecfa8f87d56742fee8b12ad711ff1c1d158..91b522c86a3dc6c312c080129a0fa99113002745 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 9e238673a63911aef973a147b018e923e6df65ac..e622463faac6faaf4bfc385d0ffc35e00050b394 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 7dfe78f1070ca562d0ed83245decc71b0036043b..492dc44634ea1fa004100a80953c01726da8ca55 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 45a7d0ef275ff4b1a79ead2328a5df4a2d150c76..43f0e9570c89bfa418e7c7947b6a63917c69d3b6 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 ad1bc4eda05bbe575523edfabffb34bb3497a8dc..0d4232c9a995fc0f3dd2624341dce723e0cbd8c8 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 3d2d997a88937d81d7f4a56d25cccc1f1925def4..4690034061e7cdbd5f43d604dcaf15ad7b729806 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 13435c438ffac6f2f841400ffc664defbf219c01..be39f75fd9ff7573afb510c5ee77dceb54036105 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 00861c260683a49820d55d49ac24639b58075121..5495783bb93630297d2e350d4a13b4a04312dd25 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 6682ea3f8b81ea2eb83d9b2ae072e51b497fdd69..8326ab96b0573581ec8f12dcd12550f5e0bbcca9 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 cc2506f029c8bc196bb9368d608f019705e919f1..7413f193c8d94c706e2d20b5cdb51a8d482c07ec 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 57abb2ff8bbe771495878987c38b1883f8fcbccb..1626f5875879bb4f03a531a1853644d9866f320e 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 c14969e5b45edba4fac8f3f7ceaac6a76db72a4a..9709a52e0971b7bab14c2226ce97ede96567a097 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 ff9650ef996ac2803af9d467036d880f63b713b6..8ea5e006e0092569ca65782381bc8fdd551602d3 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 b85f1fbe094c51745cc96f73204cd4531431400b..1bbb352b5e64f11f5d5ad399b901111cd5816ac8 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 2be8ec0a1d1fc9be940c0c343ea2867e50fe9655..d227178023b5d5ef8fb60db64d6552a8042ab1a9 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 976e2f41182c836d6797a52c2e6386f1be787c35..265d6ca578756dc1ccca741152d97b846def4d9e 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 97e566a7338beca82968e686b3e3b079f04781a8..e4723cb67a5535659c583dfeb6133bf1964819aa 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 5d88bdacd3bf1785f0e3f7a46030fe1ce3b3525c..9bb25fd98c43d7ffdce5d3294ba4c1b83271563e 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 bbd162b3dfb0d262a919c20fbffbabfcdf329bca..49b9f91d518d82d423e007f4cd822bc71334d03c 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 7e124e579b68db922d44394e4c01ccb5ca2cf53a..c976908cd3c31b769863d158dc4a4bc04387b448 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 c7ecd9f5d1b7ee51708bfde8c6ba522bdb2fe21f..4042ab3faca15a4d2efaa26e3e19284ea76b3760 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 877bda884f5b2dc8410b094886a105c6205e184f..3354218cc199e483844bd717de860da17c6f52c1 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 41895e9c966759e51c9e9e4f6cfa6be39d963bca..ad35036bec9c9838417aba017ed62ca4a31fb293 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 1c8c0275c51fe48489b5bd73abfee265b908bc93..7c0059c44b37b7cd7019085293ce017e866dbf41 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 c188d6a495ce7cf326b928cd826c17f267730975..6fec13f558f651c3912223f4724023d6f66c15f4 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 9eacdd945369a8fd3455207b58efdca6cd80a3a1..cb20ab6107d3c1116ef7425efe4e3f9cd6b7f7ca 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 886c6a138097497edecef51be55259d15d18fcfc..00b3b25dfa0aa2f5c2c575ec7ca161837e49fdd3 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 f74fcd2cb83dfd17316df2301e880eaeaa6f8d7c..a9bd5e1d760e245343f5684a76fcca039c44c783 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 9a51463608b8239bb1eff65006ca00415a998758..066112597e58fb2ad4f36bd6f98d6f5afd48f26d 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 6dcb90ddfab10ccf40b62dfcb86437533a545c32..9415436249243a4d088c9a8056c6c4b05aaa5661 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 be6b3cfc6667b7fd041a3c5ee82b399987795496..d74b403735ea05519646c81ddaf504d39af08ff4 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 a6742ed8f02db759ab028cecf17ed89e23c56f87..6e6287e8ddc3b0047c4c3d8b9dcb77661b841fe4 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 472144d268d37f766361d7db6e86263d1faaca00..5cbf14291a53c87d7882e014a64e56b919a6fb00 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 fa2cc47c5ee350eb67de4269758cce76e73f6108..da2c77fe7658952e1e571b1ecdb0e250ef51601c 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 82b7a43bb773ea20ec0139fdc547affc27c7f53e..134a415ee05131a441c3244b1ec4a8cf8a590c7b 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 Binary files /dev/null and b/user_eg3.ilk differ