diff --git a/Announce.txt b/Announce.txt index 7436c1402ff1450a284a3c10e5ddfbd995d84ffd..0d6193f9b7e0eaccdf6e3adc801aa02bbf29ca2c 100644 --- a/Announce.txt +++ b/Announce.txt @@ -3,7 +3,6 @@ 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 http://www.geom.uiuc.edu @@ -22,7 +21,6 @@ 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: diff --git a/cpp/Coordinates.h b/cpp/Coordinates.h index 8414ad2fe6377f215adfd696c8beacdc553bacd4..a062c42a0d8b2c144f929e1e94311b23ea1c2fc5 100644 --- a/cpp/Coordinates.h +++ b/cpp/Coordinates.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Coordinates.h#34 $$Change: 1176 $ -** $DateTime: 2010/01/11 19:40:05 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/Coordinates.h#35 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -221,7 +221,7 @@ public: bool operator>(const const_iterator &other) const { return i>other.i; } bool operator>=(const const_iterator &other) const { return i>=other.i; } - const_iterator operator++() { return const_iterator(++i); } //FIXUP QH10000 -- too much copying + const_iterator operator++() { return const_iterator(++i); } //FIXUP QH10014 -- too much copying const_iterator operator++(int) { return const_iterator(i++); } const_iterator operator--() { return const_iterator(--i); } const_iterator operator--(int) { return const_iterator(i--); } diff --git a/cpp/QhullHyperplane.h b/cpp/QhullHyperplane.h index cde6f48d6748c1d5495d09df6afb12d0ec0e8323..ae3835f79098972fb68ceab3a64af6141cf26ede 100644 --- a/cpp/QhullHyperplane.h +++ b/cpp/QhullHyperplane.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#12 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#13 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -116,7 +116,7 @@ QHULL_DECLARE_SEQUENTIAL_ITERATOR(QhullHyperplane, coordT) #//Global functions std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane::PrintHyperplane &pr); -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane &p); //FIXUP QH10000 -- multiple instances if define here +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane &p); //FIXUP QH10015 -- multiple instances if define here #endif // QHHYPERPLANE_H diff --git a/cpp/QhullLinkedList.h b/cpp/QhullLinkedList.h index be22b8099345daa5bae78b6adfc069040520cd07..4c03a3c66cc435c57179cf7c8931919edfab0af9 100644 --- a/cpp/QhullLinkedList.h +++ b/cpp/QhullLinkedList.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#32 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#33 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -177,7 +177,7 @@ public: };//QhullLinkedList template <typename T> -class QhullLinkedListIterator // FiXUP QH10000 define QhullMutableLinkedListIterator +class QhullLinkedListIterator // FiXUP QH10016 define QhullMutableLinkedListIterator { typedef typename QhullLinkedList<T>::const_iterator const_iterator; const QhullLinkedList<T> *c; diff --git a/cpp/QhullPoint.h b/cpp/QhullPoint.h index f0221e84c1e364d407922c7673a71d0ea5eeeed0..785877a19eb834d2bf7513ffc71571431c348d02 100644 --- a/cpp/QhullPoint.h +++ b/cpp/QhullPoint.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#33 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#34 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -124,7 +124,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 QH10000 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 QH10017 OK in c program but not inline { os << p.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } #endif // QHPOINT_H diff --git a/cpp/QhullPointSet.h b/cpp/QhullPointSet.h index 75d75bfca2ca6d5dee2767562e1fe6110fbface1..bc4498097cc55819f66c940a1cb83d8d524d92f2 100644 --- a/cpp/QhullPointSet.h +++ b/cpp/QhullPointSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#19 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#20 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -45,7 +45,7 @@ public: typedef QhullPoint value_type; typedef ptrdiff_t difference_type; typedef int size_type; - //typedef const value_type *const_pointer; // FIXUP QH10000: QhullPointSet does not define pointer or reference due to point_dimension + //typedef const value_type *const_pointer; // FIXUP QH10019: QhullPointSet does not define pointer or reference due to point_dimension //typedef const value_type &const_reference; //typedef value_type *pointer; //typedef value_type &reference; @@ -223,7 +223,7 @@ public: };//QhullPointSet //derived from qiterator.h -class QhullPointSetIterator { // FiXUP QH10000 define QhullMutablePointSetIterator +class QhullPointSetIterator { // FiXUP QH10020 define QhullMutablePointSetIterator typedef QhullPointSet::const_iterator const_iterator; const QhullPointSet *c; const_iterator i; diff --git a/cpp/QhullPoints.h b/cpp/QhullPoints.h index e5ddb3fbe6c8ec83c389978a06b60172d8df8269..2e913e653659ba60fcdd01dee4e2f86363b98a2c 100644 --- a/cpp/QhullPoints.h +++ b/cpp/QhullPoints.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#30 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#31 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -158,7 +158,7 @@ public: difference_type operator-(iterator other) const { QHULL_ASSERT(dimension()==other.dimension()); return (coordinates()-other.coordinates())/dimension(); } };//QhullPoints::iterator -#//QhullPoints::const_iterator -- FIXUP QH10000 const_iterator same as iterator +#//QhullPoints::const_iterator -- FIXUP QH10018 const_iterator same as iterator class const_iterator : public QhullPoint { public: diff --git a/cpp/QhullSet.cpp b/cpp/QhullSet.cpp index f746b4793938ee105ce70880872198da63ae8d5b..3c9ea410a6563ff03bb2b40d1e5696fd5efd96d7 100644 --- a/cpp/QhullSet.cpp +++ b/cpp/QhullSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#19 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#20 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -33,7 +33,7 @@ int QhullSetBase::count(const setT *set) if ((size= *sizep)) { size--; if (size > set->maxsize) { - // FIXUP QH10000 How to add additional output to a error? -- qh_setprint(qhmem.ferr, "set: ", set); + // FIXUP QH10022 How to add additional output to a error? -- qh_setprint(qhmem.ferr, "set: ", set); throw QhullError(10032, "QhullSet internal error: current set size %d is greater than maximum size %d\n", size, set->maxsize); } diff --git a/cpp/UsingLibQhull.cpp b/cpp/UsingLibQhull.cpp index c69461dbeb283c6f763c1d32d99c59d5cc79330e..446ce75fc65d8df134817705c71813453018952f 100644 --- a/cpp/UsingLibQhull.cpp +++ b/cpp/UsingLibQhull.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#6 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#7 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -45,7 +45,7 @@ int UsingLibQhull:: s_points_dimension= 0; int UsingLibQhull:: -s_vertex_dimension= 0; // FIXUP QH10000: s_vertex_dimension is required if dimension>15. Cannot store in QhullVertex +s_vertex_dimension= 0; // FIXUP QH10023: s_vertex_dimension is required if dimension>15. Cannot store in QhullVertex bool UsingLibQhull:: s_has_points= false; @@ -94,7 +94,7 @@ UsingLibQhull(Qhull *q) qhullqh->old_qhstat= 0; qhullqh->old_tempstack= 0; #else - #error FIXUP QH10000 static qh_qh not tested. Delete the line to try. + #error FIXUP QH10024 static qh_qh not tested. Delete the line to try. if(qhullqh!=&qh_qh){ throw QhullError(10040, "Qhull internal error: Qhull.qhullQh() is not qh_qh (%x, static). Overwrite?", 0,0,0.0, &qh_qh); } diff --git a/cpp/qhulltest/QhullFacetSet_test.cpp b/cpp/qhulltest/QhullFacetSet_test.cpp index 9401f7afdb300295dcc6a139b93568e22e62d62a..642a1d1ca2e82675a8c25baf7bb16f56ab526635 100644 --- a/cpp/qhulltest/QhullFacetSet_test.cpp +++ b/cpp/qhulltest/QhullFacetSet_test.cpp @@ -1,14 +1,14 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetSet_test.cpp#14 $$Change: 1176 $ -** $DateTime: 2010/01/11 19:40:05 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullFacetSet_test.cpp#15 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ //pre-compiled headers #include <iostream> -#include "../road/RoadTest.h" // FIXUP First for QHULL_USES_QT +#include "../road/RoadTest.h" #include "QhullFacetSet.h" #include "QhullError.h" @@ -70,9 +70,9 @@ void QhullFacetSet_test:: t_convert() { RboxPoints rcube("c"); - Qhull q(rcube,"QR0 QV2"); // rotated unit cube - QhullFacet f= q.firstFacet(); - QhullFacetSet fs2= f.neighborFacets(); + Qhull q2(rcube,"QR0 QV2"); // rotated unit cube + QhullFacet f2= q2.firstFacet(); + QhullFacetSet fs2= f2.neighborFacets(); QVERIFY(!fs2.isSelectAll()); QCOMPARE(fs2.count(),2); std::vector<QhullFacet> fv= fs2.toStdVector(); diff --git a/cpp/qhulltest/QhullLinkedList_test.cpp b/cpp/qhulltest/QhullLinkedList_test.cpp index dcd97ec474e544d22010b637ec588fb15e1fa14a..2e8c7fc878ccf524655c9ec561b8365e1d4c1636 100644 --- a/cpp/qhulltest/QhullLinkedList_test.cpp +++ b/cpp/qhulltest/QhullLinkedList_test.cpp @@ -1,14 +1,14 @@ /**************************************************************************** ** ** Copyright (f) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullLinkedList_test.cpp#15 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullLinkedList_test.cpp#16 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ //pre-compiled headers #include <QtCore/QList> -#include "../road/RoadTest.h"// FIXUP First for QHULL_USES_QT +#include "../road/RoadTest.h" #include "QhullLinkedList.h" #include "Qhull.h" @@ -54,7 +54,6 @@ t_construct() { Qhull q(rcube,"Qt QR0"); // triangulation of rotated unit cube QCOMPARE(q.facetCount(), 12); - // FIXUP -- iterator or vertex for vertexList? QhullVertexList vs = QhullVertexList(q.beginVertex(), q.endVertex()); QCOMPARE(vs.count(), 8); QCOMPARE(vs.size(), 8u); @@ -65,7 +64,7 @@ t_construct() QVERIFY(!vs2.isEmpty()); QVERIFY(!vs2.empty()); QVERIFY(vs==vs2); - // vs= vs2; // private (compiler error) + // vs= vs2; // disabled. Would not copy the vertices QhullVertexList vs3= vs2; // copy constructor QVERIFY(vs3==vs2); } diff --git a/cpp/qhulltest/QhullSet_test.cpp b/cpp/qhulltest/QhullSet_test.cpp index a948d4a7a9d7ae34671540876b65565a832f2d36..b309c5086dc764863e48572979da78a486bba734 100644 --- a/cpp/qhulltest/QhullSet_test.cpp +++ b/cpp/qhulltest/QhullSet_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (f) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullSet_test.cpp#20 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/QhullSet_test.cpp#21 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -11,6 +11,7 @@ #include <QtCore/QList> #include "../road/RoadTest.h" // QT_VERSION +#include "QhullRidge.h" #include "QhullFacetSet.h" #include "Qhull.h" @@ -50,16 +51,19 @@ cleanup() RoadTest::cleanup(); } +// Test QhullFacetSet and QhullSet. +// Use QhullRidgeSet to test methods overloaded by QhullFacetSet + void QhullSet_test:: t_qhullsetbase() { RboxPoints rcube("c"); { - Qhull q(rcube,"Qt QR0"); // triangulation of rotated unit cube + Qhull q(rcube,"QR0"); // triangulation of rotated unit cube // Fake an empty set. Default constructor not defined. No memory allocation. QhullFacet f4 = q.beginFacet(); QhullFacetSet fs = f4.neighborFacets(); - fs.defineAs(q.qhullQh()->other_points); + fs.defineAs(q.qhullQh()->other_points); // Force an empty set QVERIFY(fs.isEmpty()); QVERIFY(fs.empty()); QCOMPARE(fs.count(), 0); @@ -67,11 +71,22 @@ t_qhullsetbase() QCOMPARE(fs.begin(), fs.end()); // beginPointer(), endPointer() QVERIFY(QhullSetBase::isEmpty(fs.getSetT())); - QCOMPARE(q.facetCount(), 12); + QhullRidgeSet rs = f4.ridges(); + QVERIFY(!rs.isEmpty()); + QVERIFY(!rs.empty()); + QCOMPARE(rs.count(), 4); + QCOMPARE(rs.size(), 4u); + QVERIFY(rs.begin()!=rs.end()); + QVERIFY(!QhullSetBase::isEmpty(rs.getSetT())); + QhullRidgeSet rs2= rs; // copy constructor + // rs= rs2; // disabled. Would not copy ridges + QCOMPARE(rs2, rs); + + QCOMPARE(q.facetCount(), 6); QhullFacet f = q.beginFacet(); QhullFacetSet fs2 = f.neighborFacets(); - QCOMPARE(fs2.count(), 3); - QCOMPARE(fs2.size(), 3u); + QCOMPARE(fs2.count(), 4); + QCOMPARE(fs2.size(), 4u); QVERIFY(!fs2.isEmpty()); QVERIFY(!QhullSetBase::isEmpty(fs2.getSetT())); QVERIFY(!fs2.empty()); @@ -82,7 +97,7 @@ t_qhullsetbase() QCOMPARE(fs[1], fs2[1]); // elementPointer QhullFacetSet fs3(fs2); QVERIFY(fs3==fs); - // fs= fs2; // private (compiler error) + // fs= fs2; // disabled. Would not copy facets QhullFacetSet fs4= fs2; // copy constructor QVERIFY(fs4==fs2); } @@ -95,10 +110,25 @@ t_convert() { RboxPoints rcube("c"); { - Qhull q(rcube,"Qt QR0"); // triangulation of rotated unit cube - QCOMPARE(q.facetCount(), 12); - QhullFacet f = q.beginFacet(); - QhullFacetSet fs = f.neighborFacets(); + Qhull q(rcube,"QR0"); // rotated unit cube + QhullFacet f= q.firstFacet(); + f= f.next(); + QhullRidgeSet rs= f.ridges(); + QCOMPARE(rs.count(),4); + std::vector<QhullRidge> rv= rs.toStdVector(); + QCOMPARE(rv.size(), 4u); + QList<QhullRidge> rv2= rs.toQList(); + QCOMPARE(rv2.size(), 4); + std::vector<QhullRidge>::iterator i= rv.begin(); + foreach(QhullRidge r, rv2){ // Qt only + QhullRidge r2= *i++; + QCOMPARE(r, r2); + } + + Qhull q2(rcube,"Qt QR0"); // triangulation of rotated unit cube + QCOMPARE(q2.facetCount(), 12); + QhullFacet f2 = q2.beginFacet(); + QhullFacetSet fs = f2.neighborFacets(); QCOMPARE(fs.size(), 3U); std::vector<QhullFacet> vs= fs.toStdVector(); QCOMPARE(vs.size(), fs.size()); @@ -386,14 +416,18 @@ t_io() RboxPoints rcube("c"); Qhull q(rcube,"QR0"); // rotated unit cube // Fake an empty set. Default constructor not defined. No memory allocation. - QhullFacet f = q.beginFacet(); - QhullFacetSet fs = f.neighborFacets(); + QhullFacet f= q.beginFacet(); + QhullFacetSet fs= f.neighborFacets(); fs.defineAs(q.qhullQh()->other_points); cout << "INFO: empty set" << fs << std::endl; - QhullFacet f2 = q.beginFacet(); - QhullFacetSet fs2 = f2.neighborFacets(); - cout << "INFO: " << fs2 << std::endl; - //FIXUP do not use QhullFacetSet to test set + QhullFacet f2= q.beginFacet(); + QhullFacetSet fs2= f2.neighborFacets(); + cout << "INFO: Neighboring facets\n"; + cout << fs2 << std::endl; + + QhullRidgeSet rs= f.ridges(); + cout << "INFO: Ridges for a facet\n"; + cout << rs << std::endl; }//t_io }//namespace orgQhull diff --git a/cpp/qhulltest/Qhull_test.cpp b/cpp/qhulltest/Qhull_test.cpp index aa4530fc64aac82470583e4fe25c14687b392938..de286c1f69e6170c17429e2ec3595d18b8877118 100644 --- a/cpp/qhulltest/Qhull_test.cpp +++ b/cpp/qhulltest/Qhull_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#37 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#38 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -137,11 +137,11 @@ t_message() const char *s= e.what(); cout << "INFO : Caught " << s; QCOMPARE(QString::fromStdString(s).left(6), QString("QH6029")); - // Cleared when copied to QhullError + // FIXUP QH10025 -- review decision to clearQhullMessage at QhullError() // Cleared when copied to QhullError QVERIFY(!q.hasQhullMessage()); // QCOMPARE(q.qhullMessage(), QString::fromStdString(s).remove(0, 7)); // QCOMPARE(q.qhullStatus(), 6029); - q.clearQhullMessage(); // FIXUP -- review decision to clearQhullMessage at QhullError() + q.clearQhullMessage(); QVERIFY(!q.hasQhullMessage()); } q.appendQhullMessage("Append 1"); @@ -300,7 +300,7 @@ t_foreach() QCOMPARE(ps.count(), 8); QhullPointSet ps2= q.otherPoints(); QCOMPARE(ps2.count(), 0); - // ps2= q.otherPoints(); //FIXUP disabled OK? + // ps2= q.otherPoints(); //disabled, would not copy the points QCOMPARE(q.facetCount(), 6); QCOMPARE(q.vertexCount(), 8); coordT *c= q.pointCoordinateBegin(); // of q.points() diff --git a/cpp/qhulltest/qhulltest.cpp b/cpp/qhulltest/qhulltest.cpp index e68ffcb0c1f9d590f987b9b79bf42a9d2f5461a5..753643cc561816af3802eb917a8dc0150fd819ff 100644 --- a/cpp/qhulltest/qhulltest.cpp +++ b/cpp/qhulltest/qhulltest.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/qhulltest.cpp#54 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/qhulltest.cpp#55 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -22,7 +22,7 @@ namespace orgQhull { void addQhullTests(QStringList &args) { - TESTadd_(add_PointCoordinates_test); //copy + TESTadd_(add_QhullSet_test); //copy if(args.contains("--all")){ args.removeAll("--all"); diff --git a/cpp/road/RoadError.h b/cpp/road/RoadError.h index 795afe0473b8be6f8f067e956c8975728e554a1d..b8c1f7be3e699a501a09e05b01653b6615aec5a6 100644 --- a/cpp/road/RoadError.h +++ b/cpp/road/RoadError.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#21 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#22 $$Change: 1179 $ +** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ ** ****************************************************************************/ @@ -70,7 +70,7 @@ public: #//GetSet bool defined() const { return log_event.defined(); } int errorCode() const { return error_code; }; - // FIXUP QH10000 should RoadError provide errorMessage(). Currently what() + // FIXUP QH10021 should RoadError provide errorMessage(). Currently what() RoadLogEvent roadLogEvent() const { return log_event; }; #//Update diff --git a/html/qh-get.htm b/html/qh-get.htm index 60ff4f54c88007045eb77d2ba0043be13898c9e1..dbe0b777608990cde079c0f9d83353394a0f1fba 100644 --- a/html/qh-get.htm +++ b/html/qh-get.htm @@ -71,23 +71,11 @@ width="100" height="100"></a> Qhull Downloads</h1> <!--- - <li><a href=http://savannah.nongnu.org/files/?group=qhull>Download: Qhull 2002.1 for Unix</a> - - <p>Includes documentation, source files, and a configure Makefile. - Includes Debian configuration files. Includes downloads of Qhull's current and previous - versions.</p> - - <p>B. Pearlmutter created a + <li>B. Pearlmutter created a <a href=http://packages.debian.org/stable/math/qhull-bin.html>Debian build</a> of Qhull 3.1 and upgraded it to 2002.1. </li> - <li><a href=http://savannah.nongnu.org/projects/qhull/>Qhull@Savannah</a> - <p>Type: CVS repository</b> - - <p>CVS repositiory of Qhull sources, documentation, and Makefiles. No longer active. Use gitorious instead. - </p> - </li> <li><a href="http://www.qhull.org/download/qhull-2003.1-1mdk.i686.rpm">Download: Qhull version 2003.1 i686 rpm</a> (670K) <p>Type: rpm build for Mandrake 9.2 and RedHat [<a href="http://www.qhull.org/download/qhull.spec">qhull.spec</a>]</p> @@ -95,13 +83,12 @@ and upgraded it to 2002.1. <p>For other Linux systems, use the <a href="http://www.qhull.org/download/qhull-2003.1-1mdk.src.rpm">src rpm</a> [L. Mazet] </li> - <li><a href="http://packages.debian.org/search?keywords=qhull">Download: Qhull 2003.1 for Debian</a> <p>Type: Debian packages <p>Includes documentation, source files, and previous distributions [R. Laboissiere].</p> </li> - --> + --> <li><a href=http://www6.uniovi.es/ftp/pub/mirrors/geom.umn.edu/software/ghindex.html>Spanish mirror site</a> <p>Download Qhull's diff --git a/html/qhull.man b/html/qhull.man index 908782b0093bb6cf6a3c010513f03e635a32b370..6db5fb8d9f80da18ce7ca52f311a9328281a0130 100644 --- a/html/qhull.man +++ b/html/qhull.man @@ -14,7 +14,7 @@ .\" .TH qhull 1 "2003/12/30" "Geometry Center" .SH NAME -qhull \- convex hull, Delaunay triangulation, Voronoi diagram, +qhull \- convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point, hull volume, facet area .SH SYNOPSIS .nf @@ -22,7 +22,7 @@ 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 - + options (qh-quick.htm): d - Delaunay triangulation by lifting points to a paraboloid v - Voronoi diagram via the Delaunay triangulation @@ -33,7 +33,7 @@ options (qh-quick.htm): 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) @@ -48,7 +48,7 @@ Output options (subset): Tv - verify result: structure, convexity, and point inclusion p - vertex coordinates (centers for Voronoi) i - vertices incident to each facet - + example: rbox 1000 s | qhull Tv s FA .fi @@ -56,16 +56,16 @@ example: - 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> + - WWW: <http://www.qhull.org> + - GIT: <git@gitorious.org:qhull/qhull.git> + - 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> + - FAQ: <http://exaflop.org/docs/cgafaq/cga6.html> - email: qhull@qhull.org - bug reports: qhull_bug@qhull.org - + The sections are: - INTRODUCTION - DESCRIPTION, a description of Qhull @@ -90,10 +90,10 @@ 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\[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\[hy]off errors from floating +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\[hy]off errors from floating point arithmetic. It can approximate a convex hull. The program includes options for hull volume, facet area, partial hulls, @@ -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\[hy]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. @@ -118,8 +118,8 @@ other output formats. Qhull implements the Quickhull algorithm for convex hull. This algorithm combines 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 +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 precision problems. .PP @@ -127,26 +127,26 @@ 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\[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 +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\[hy]simplicial -facet. A non\[hy]simplicial facet has more than d neighbors and may share more than +facet. A non\[hy]simplicial facet has more than d neighbors and may share more than one ridge with a neighbor. .PP -.SH IMPRECISION +.SH IMPRECISION .PP 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\[hy]d, 3\[hy]d, and 4\[hy]d, or -option 'Qx' in 5\[hy]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\[hy]convex facets while constructing the hull. The remaining facets are -clearly convex. With 'Qx', Qhull merges +clearly convex. With 'Qx', Qhull merges coplanar horizon facets, flipped facets, concave facets and duplicated ridges. It merges coplanar facets after constructing the hull. @@ -154,12 +154,12 @@ With 'Qx', coplanar points may be missed, but it appears to be unlikely. .PP To guarantee triangular output, joggle the input with option 'QJ'. Facet -merging will not occur. +merging will not occur. .SH OPTIONS .PP 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 list of options, +execute 'qhull \-'. To get a complete, concise list of options, execute 'qhull .'. Options can be in any order. @@ -176,33 +176,33 @@ Compute the convex hull of the input points. Report a summary of the result. .TP 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' +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\[hy]simplicial -facets. +facets. .TP v -Compute the Voronoi diagram from the Delaunay triangulation. -The 'p' option prints the Voronoi vertices. +Compute the Voronoi diagram from the Delaunay triangulation. +The 'p' option prints the Voronoi vertices. 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 +indicates the infinity vertex. Its coordinates are qh_INFINITE (\-10.101). It indicates unbounded Voronoi regions or degenerate Delaunay triangles. .TP Hn,n,... -Compute halfspace intersection about [n,n,0,...]. +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., +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. @@ -213,19 +213,19 @@ option produces a feasible point for a convex hull. .TP d Qu Compute the furthest\[hy]site Delaunay triangulation from the upper -convex hull. The 'o' option prints the input points and facets. +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\[hy]simplicial -facets. +facets. .TP v Qu Compute the furthest\[hy]site Voronoi diagram. -The 'p' option prints the Voronoi vertices. +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 +indicates the infinity vertex at infinity. Its coordinates are qh_INFINITE (\-10.101). It indicates unbounded Voronoi regions and degenerate Delaunay triangles. .PP @@ -237,7 +237,7 @@ Print out all facets and all fields of each facet. .TP G Output the hull in Geomview format. For imprecise hulls, -Geomview displays the inner and outer hull. Geomview can also +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. @@ -246,14 +246,14 @@ corresponding paraboloid. For halfspace intersection, 'G' displays the dual polytope. .TP i -Output the incident vertices for each facet. +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 +vertices of each facet. One facet is printed per line. The numbers are the 0\[hy]relative indices of the corresponding input points. The facets -are oriented. +are oriented. -In 4d and higher, +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 @@ -269,13 +269,13 @@ visualized by "Show[Graphics[list]] ". For 3\[hy]d objects the command is "Show[Graphics3D[list]]". .TP n -Output the normal equation for each facet. +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. .TP o -Output the facets in OFF file format. +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 coordinates of the input points and the vertices for each facet. Each facet is on @@ -285,27 +285,27 @@ oriented in 2\[hy]d, 3\[hy]d, and in simplicial facets. 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. +the Voronoi vertices are sorted by index. See the 'v' option for more information. .TP p -Output the coordinates of each vertex point. +Output the coordinates of each vertex point. Qhull prints the dimension, the number of points, -and the coordinates for each vertex. +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 coordinates -of each Voronoi vertex. +of each Voronoi vertex. .TP s Print a summary to stderr. If no output options -are specified at all, a summary goes to stdout. The summary lists +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 +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 +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 +facet. The number in parenthesis (e.g., 2.1x) is the ratio between the maximum distance and the worst\[hy]case distance due to merging two simplicial facets. .PP @@ -317,9 +317,9 @@ 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\[hy]merging). +each point to the hull (pre\[hy]merging). If 'n' is positive, Qhull tests angles after -constructing the hull (post\[hy]merging). +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' @@ -351,9 +351,9 @@ 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'. +facet is greater than 'Vn'. -Without merging, the default value for 'Vn' is the round\[hy]off error ('En'). +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'. @@ -364,7 +364,7 @@ default value is 'Vn'. .TP 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 +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\[hy]merging and does not set 'Wn', than 'Wn' is set @@ -374,15 +374,15 @@ to the premerge 'Cn' and maxcoord*(1\-An). Additional input/output formats .TP Fa -Print area for each facet. +Print area for each facet. For Delaunay triangulations, the area is the area of the triangle. -For Voronoi diagrams, the area is the area of the dual facet. +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\[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 facet's hyperplane are ignored. The reported area may be significantly less than the actual area. .TP FA @@ -391,20 +391,20 @@ for non\[hy]simplicial facets (see 'Fa'). .TP 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. +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). +assigned to the facet it is furthest above (resp., least below). .TP FC Print centrums for each facet. The output starts with the -dimension followed by the number of facets. +dimension followed by the number of facets. Then each facet centrum is printed, one per line. .TP Fd Read input in cdd format with homogeneous points. The input starts with comments. The first comment is reported in -the summary. +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. @@ -419,7 +419,7 @@ 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. +1.0. The offset for normals has the opposite sign. The data ends with an "end" line. .TP FF @@ -429,15 +429,15 @@ Fi Print inner planes for each facet. The inner plane is below all vertices. .TP Fi -Print separating hyperplanes for bounded, inner regions of the Voronoi +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 number of indices and floats. The first pair lists +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 -verify that the hyperplanes are perpendicular bisectors. Use 'Fo' for +verify that the hyperplanes are perpendicular bisectors. Use 'Fo' for unbounded regions, and 'Fv' for the corresponding Voronoi vertices. .TP FI @@ -454,19 +454,19 @@ convex hulls and for 2\[hy]d Delaunay triangulations. Qhull produces a '.mpl' file for displaying with display3d(). .TP Fn -Print neighbors for each facet. The output starts with the number of facets. -Then each facet is printed one per line. Each line +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. +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'). +ID (option 'FI'). For example, negative indices are used for facets "at infinity" in the Delaunay triangulation. .TP FN -Print vertex neighbors or coplanar facet for each point. +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. @@ -476,19 +476,19 @@ Otherwise, each line is the number of neighbors followed by the corresponding facet indices (see 'Fn'). .TP Fo -Print outer planes for each facet in the same format as 'n'. +Print outer planes for each facet in the same format as 'n'. The outer plane is above all points. .TP Fo -Print separating hyperplanes for unbounded, outer regions of the Voronoi +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 number of indices and floats. The first pair lists +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 -verify that the hyperplanes are perpendicular bisectors. Use 'Fi' for +verify that the hyperplanes are perpendicular bisectors. Use 'Fi' for bounded regions, and 'Fv' for the corresponding Voronoi vertices. .TP FO @@ -509,26 +509,26 @@ FQ Print command used for qhull and input. .TP Fs -Print a summary. The first line consists of the number of integers ("8"), -followed by the dimension, the number of points, the number of vertices, +Print a summary. The first line consists of the number of integers ("8"), +followed by the dimension, 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, number of simplicial, unmerged facets in 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 +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. .TP FS -Print the size of the hull. The first line consists of the number of integers ("0"). +Print the size of the hull. The first line consists of the number of integers ("0"). The second line consists of the number of reals ("2"), -followed by the total facet area, and the total volume. +followed by the total facet area, and the total volume. Later 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. +of the intersection of the halfspaces defined by each facet. Both area and volume are approximations for non\[hy]simplicial facets. See option 'Fa'. .TP @@ -554,8 +554,8 @@ the vertex\[hy]at\[hy]infinity (i.e., an unbounded ray). In 3\[hy]d, the vertic are listed in order. See 'Fi' and 'Fo' for separating hyperplanes. .TP FV -Print average vertex. The average vertex is a feasible point -for halfspace intersection. +Print average vertex. The average vertex is a feasible point +for halfspace intersection. .TP Fx List extreme points (vertices) of the convex hull. The first line @@ -571,9 +571,9 @@ Geomview options G Produce a file for viewing with Geomview. Without other options, Qhull displays edges in 2\[hy]d, outer planes in 3\[hy]d, and ridges in 4\[hy]d. -A ridge can be +A ridge can be explicit or implicit. An explicit ridge is a dim\-1 dimensional simplex -between two facets. +between two facets. 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. @@ -586,11 +586,11 @@ Display all input points as dots. Gc 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. +facet's hyperplane. The radius is defined by 'C\-n' or 'Cn'. .TP GDn -Drop dimension n in 3\[hy]d or 4\[hy]d. The result is a 2\[hy]d or 3\[hy]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\[hy]d and 4\[hy]d. In 3\[hy]d, the @@ -605,7 +605,7 @@ 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 -Do not display inner or outer planes. By default, +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 @@ -614,14 +614,14 @@ the difference between inner and outer is too small. Go 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 +Its color is determined by the facet's normal, and its edges are determined by the vertices. .TP Gp Display coplanar points and vertices as radii. A radius defines a ball -which corresponds to the imprecision of the point. The imprecision is +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, +(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 @@ -641,8 +641,8 @@ the imprecision of the data. See 'Gp' for determining the radius. Print options .TP PAn -Only the n largest facets are marked good for printing. -Unless 'PG' is set, 'Pg' is automatically set. +Only the n largest facets are marked good for printing. +Unless 'PG' is set, 'Pg' is automatically set. .TP Pdk:n Drop facet from output if normal[k] <= n. The option 'Pdk' uses the @@ -653,8 +653,8 @@ Drop facet from output if normal[k] >= n. The option 'PDk' uses the default value of 0 for n. .TP PFn -Only facets with area at least 'n' are marked good for printing. -Unless 'PG' is set, 'Pg' is automatically set. +Only facets with area at least 'n' are marked good for printing. +Unless 'PG' is set, 'Pg' is automatically set. .TP Pg Print only good facets. A good facet is either visible from a point @@ -667,13 +667,13 @@ Print neighbors of good facets. .TP PMn Only the n facets with the most merges are marked good for printing. -Unless 'PG' is set, 'Pg' is automatically set. +Unless 'PG' is set, 'Pg' is automatically set. .TP 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 +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 @@ -687,7 +687,7 @@ Do not report precision problems. Qhull control options .TP Qbk:0Bk:0 -Drop dimension k from the input points. This allows the user to +Drop dimension k from the input points. This allows the user to take convex hulls of sub\[hy]dimensional objects. It happens before the Delaunay and Voronoi transformation. .TP @@ -697,7 +697,7 @@ 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, scaling does not change the topology of the convex hull. +arithmetic, scaling does not change the topology of the convex hull. .TP Qbb Scale the last coordinate to [0, m] where m is the maximum absolute @@ -705,38 +705,38 @@ 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. +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 bound will be n. 'QBk' scales to +0.5. .TP Qc -Keep coplanar points with the nearest facet. Output -formats 'p', 'f', 'Gp', 'Fc', 'FN', and 'FP' will print the points. +Keep coplanar points with the nearest facet. Output +formats 'p', 'f', 'Gp', 'Fc', 'FN', and 'FP' will print the points. .TP Qf Partition points to the furthest outside facet. .TP Qg -Only build good facets. With the 'Qg' option, Qhull will only build +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' +See 'QGn', 'QVn', and 'PdD' for defining good facets, and 'Pg' and 'PG' for printing good facets and their neighbors. .TP QGn A facet is good (see 'Qg' and 'Pg') if it is visible 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'). +hull (unless 'TCn' or 'TPn'). With rbox, use the 'Pn,m,r' option to define your point; it -will be point 0 (QG0). +will be point 0 (QG0). .TP Qi -Keep interior points with the nearest facet. +Keep interior points with the nearest facet. Output formats 'p', 'f', 'Gp', 'FN', 'FP', and 'Fc' will print the points. .TP QJn @@ -752,7 +752,7 @@ Qm Only process points that would otherwise increase max_outside. Other points are treated as coplanar or interior points. .TP -Qr +Qr Process random outside points instead of furthest ones. This makes Qhull equivalent to the randomized incremental algorithms. CPU time is not reported since the randomization is inefficient. @@ -788,7 +788,7 @@ 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\[hy]merges are performed +and 'A\-n'), then post\[hy]merges are performed (defined by 'Cn' and 'An'). .TP Qz @@ -796,15 +796,15 @@ Add a point "at infinity" that is above the paraboloid for Delaunay triangulatio and Voronoi diagrams. This reduces precision problems and allows the triangulation of cospherical points. .PP -.TP +.TP Qhull experiments and speedups .TP Q0 -Turn off pre\[hy]merging as a default option. -With 'Q0'/'Qx' and without explicit pre\[hy]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. +generated. .TP Q1 With 'Q1', Qhull sorts merges by type (coplanar, angle coplanar, concave) @@ -857,7 +857,7 @@ algorithm. 'T5' includes information about memory allocation and Gaussian elimination. .TP Ta -Annotate output with codes that identify the +Annotate output with codes that identify the corresponding qh_fprintf() statement. .TP Tc @@ -866,12 +866,12 @@ errors. .TP TCn Stop Qhull after building the cone of new facets for point n. The -output for 'f' includes the cone and the old hull. +output for 'f' includes the cone and the old hull. See also 'TVn'. .TP TFn Report progress whenever more than n facets are created -During post\[hy]merging, 'TFn' +During post\[hy]merging, 'TFn' reports progress after more than n/2 merges. .TP TI file @@ -896,8 +896,8 @@ Collect statistics and print to stderr at the end of execution. .TP Tv Verify the convex hull. This checks the topological structure, facet -convexity, and point inclusion. -If precision problems occurred, facet convexity is tested whether or +convexity, and point inclusion. +If precision problems occurred, facet convexity is tested whether or not 'Tv' is selected. Option 'Tv' does not check point inclusion if forcing output with 'Po', or if 'Q5' is set. @@ -906,9 +906,9 @@ 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\[hy]point product is small enough; otherwise Qhull verifies each point with a directed -search (qh_findbest). +search (qh_findbest). -Point inclusion testing occurs after producing output. It prints +Point inclusion testing occurs after producing output. It prints a message to stderr unless option 'Pp' is used. This allows the user to interrupt Qhull without changing the output. .TP @@ -926,7 +926,7 @@ Tz Redirect stderr to stdout. .PP .SH BUGS -Please report bugs to Brad Barber at qhull_bug@qhull.org. +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 @@ -937,7 +937,7 @@ 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 alignment. You can use qh_NOmem in mem.h -to turn off memory management. Please let us know if you figure out +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 @@ -958,7 +958,7 @@ 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 would like to communicate with other -Qhull users, we will add you to the qhull_users alias. +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 @@ -971,7 +971,7 @@ 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.117.405 -Clarkson, K.L., K. Mehlhorn, and R. Seidel, "Four results on randomized +Clarkson, K.L., K. Mehlhorn, and R. Seidel, "Four results on randomized incremental construction," Computational Geometry: Theory and Applications, vol. 3, p. 185\[en]211, 1993. @@ -983,7 +983,7 @@ Geometry, Springer\[hy]Verlag, New York, 1985. .nf C. Bradford Barber Hannu Huhdanpaa bradb@shore.net hannu@qhull.org - + .fi .SH ACKNOWLEDGEMENTS @@ -991,13 +991,13 @@ Geometry, Springer\[hy]Verlag, New York, 1985. 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\[hy]8920161 and NSF\[hy]CCR\[hy]91\[hy]15793 750\[hy]7504. David Dobkin -guided the original work at Princeton University. +Qhull 1.0 and 2.0 were developed under National Science Foundation +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\[hy]8920161 from the National -Science Foundation, by grant DOE/DE\[hy]FG02\[hy]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 3250d6df43e7c2a97345bb3300cfa78bcfe2214a..5a54d2dc922377980e3c148d50b46303a1b76571 100644 --- a/html/qhull.txt +++ b/html/qhull.txt @@ -45,13 +45,13 @@ SYNOPSIS - 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> + - WWW: <http://www.qhull.org> + - GIT: <git@gitorious.org:qhull/qhull.git> + - 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> + - FAQ: <http://exaflop.org/docs/cgafaq/cga6.html> - email: qhull@qhull.org - bug reports: qhull_bug@qhull.org @@ -928,7 +928,7 @@ qhull(1) qhull(1) Qs Search all points for the initial simplex. - Qt Triangulated output. Triangulate non-simplicial + Qt Triangulated output. Triangulate non-simplicial facets. Qv Test vertex neighbors for convexity after post- @@ -1009,10 +1009,10 @@ qhull(1) qhull(1) Q9 With 'Q9', Qhull processes the furthest of all out- side sets at each iteration. - Q10 With 'Q10', Qhull does not use special processing + Q10 With 'Q10', Qhull does not use special processing for narrow distributions. - Q11 With 'Q11', Qhull copies normals and recomputes + Q11 With 'Q11', Qhull copies normals and recomputes centrums for tricoplanar facets. Trace options @@ -1025,7 +1025,7 @@ qhull(1) qhull(1) includes information about memory allocation and Gaussian elimination. - Ta Annotate output with codes that identify the + Ta Annotate output with codes that identify the corresponding qh_fprintf() statement. Tc Check frequently during execution. This will catch @@ -1040,7 +1040,7 @@ qhull(1) qhull(1) after more than n/2 merges. TI file - Input data from 'file'. The filename may not include + Input data from 'file'. The filename may not include spaces or quotes. TO file @@ -1187,8 +1187,8 @@ ACKNOWLEDGEMENTS 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 - grants NSF/DMS-8920161 and NSF-CCR-91-15793 750-7504. David Dobkin + 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 @@ -1201,9 +1201,9 @@ Geometry Center 2003/12/30 18 qhull(1) qhull(1) - guided the original work at Princeton University. If you find it + guided the original work at Princeton University. If you find it useful, please let us know. - + 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. diff --git a/project/libqhullcpp/libqhullcpp.pro b/project/libqhullcpp/libqhullcpp.pro index 549272a0c283a52b21989dfcad23e91391e14f19..68364e1408a9dd5f2ad9ffda71025422e3850e04 100644 --- a/project/libqhullcpp/libqhullcpp.pro +++ b/project/libqhullcpp/libqhullcpp.pro @@ -23,9 +23,9 @@ QT -= gui 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 +QMAKE_CXXFLAGS_DEBUG += -Wall -Wextra -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/src/Changes.txt b/src/Changes.txt index ade8874807ab84be1e019481973ff2fb46639edc..7b70e724e94975ff924a52bd6189382aea643dce 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -2,7 +2,7 @@ .............This file lists all changes to qhull and rbox..................... To do for documentation -- Qhull::addPoint(). Problems with qh_findbestfacet and otherpoints see +- 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, ptr_intT, size_t/int - Show custom of qh_fprintf @@ -13,7 +13,7 @@ To do for documentation errorIfAnotherUser ~QhullPoints() needs ownership of qh_qh Does !qh_pointer work? - When is qh_qh required? Minimize the time. + When is qh_qh required? Minimize the time. qhmem, qhstat.ferr qhull_inuse==1 when qhull globals active [not useful?] rbox_inuse==1 when rbox globals active @@ -89,17 +89,17 @@ To do - update FAQ and date. - Notify Wolfram, geom discussion list - Review Warn64 - - review all #pragma - - review all FIXUP [^0-9] - - Number the FIXUPS - clean up warnings for libqhullcpp + - rereview -Wconversion - get copy of unused - Review email archives for doc changes + - Add libqhull5 to Readme, Announce, download + - QtTestD4.dll did not include MSVCP80D.dll and MSVCR80D.dll ------------ Need help - The C++ interface needs work. Give it a try and make it better. - - Set up debian build. + - Set up debian build. Please keep debian files in config/ and project/debian/ Branch 'debian' is from http://savannah.nongnu.org/cvs/?group=qhull project/debian needs updating for its new location. It was at qhull's level. @@ -108,11 +108,13 @@ Need help - Verify -fno-strict-aliasing needed for gcc 4.1, 4.2, and 4.3 (qset segfault) ------------ -Qhull next branch +Qhull done - Add qt-qhull.cpp with Qt conditional code - Fix qhull.sln and project files for qh_QHpointer - Add libqhullp.proj +- Reviewed #pragma +- Reviewed FIXUP and assigned QH tags ------------ qhull 2010.1 2010/01/10 @@ -138,13 +140,13 @@ Changes to source - user.h requires <time.h> for CLOCKS_PER_SEC - Move ostream<<QhullFacetList from inline to compiled. - Removed ConvexHull/ from git. Not used. - + ------------ qhull 2009.1.1 2010/01/09 -- Patch release of 2009.1. +- Patch release of 2009.1. qh_gethash allowed a negative result, causing overwrite or segfault See git:qhull/project/patch/qhull-2003.1/poly.c-qh_gethash.patch - Compared results of q_test, q_eg, and q_egtest with patched poly.c, qhull-2003.1 + Compared results of q_test, q_eg, and q_egtest with patched poly.c, qhull-2003.1 ------------ qhull 2010.1 2010/01/07 @@ -153,28 +155,28 @@ qhull 2010.1 2010/01/07 - Fix qh_pointid in case ptr_intT is unsigned qhull 2010.1 2010/01/06 -- Fixed serious bug in qh_gethash [poly.c] +- Fixed serious bug in qh_gethash [poly.c] - Documentation and build system are incomplete (see above) - First release of C++ interface [qh-code.htm] -- Development moved to http://gitorious.org/qhull +- Development moved to http://gitorious.org/qhull git clone git@gitorious.org:qhull/qhull.git -- Did not fix conformant tesselations for 'Qt'. +- Did not fix conformant tesselations for 'Qt'. For details, see http://www.qhull.org/news#bugs of May 2007 and Dec 2006. - Use g++ builds for Windows distribution (10% faster than msvc2005) Combined vcproj/ and qtproj/ into project/ vcproj will be replaced by qmake generated files - + ------------ qhull 2010.0.3 2010/01/05 Fixed bugs -- 'QJn' (joggle): Fix qh.STOPcone in qh_build_withrestart(). It was not cleared. +- 'QJn' (joggle): Fix qh.STOPcone in qh_build_withrestart(). It was not cleared. - qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished, otherwise set if needed qhull 2010.0.2 2010/01/04 Fixed bugs -- qh_gethash [poly.c]: fix sign conversion. - Previously, the result may be negative, leading to a segfault. +- qh_gethash [poly.c]: fix sign conversion. + Previously, the result may be negative, leading to a segfault. The bug is more likely with large address spaces Reviewed all uses of %(modulo) for remainder with negative arguments - Reviewed output of q_test and compared to results from 2003.1 @@ -207,7 +209,7 @@ Changes to qhull options and results - Prefix error messages and warnings with a message code (e.g., QH6012) - Fixed rbox ignoring flags that were not separated by spaces - Report all hidden options before exiting in qh_checkflags() - - Defined qh_OPTIONline [user.h] as max length of option line ('FO') + - 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 @@ -236,7 +238,7 @@ Bug fixes to C code: - 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, + - 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() @@ -275,7 +277,7 @@ Fixed g++ and devstudio warnings Retained int sizes for qset.h and mem.h. Follows Qt convention and is easier to work with. int can be 64-bits if 2 billion facets - Change literal strings to const char* [kwilliams] - - Added type casts to SETfirst and SETsecond [amorilia+alphax] + - Added type casts to SETfirst and SETsecond [amorilia+alphax] - getid_() returns an int [kwilliams] - Add missing const annotations [kwilliams] - Fixed 64-bit warnings (marked with "WARN64") @@ -417,7 +419,7 @@ Changes to code: Changes to build - Makefile.txt works under cygwin - Added Make-config.sh to create a Debian build [R. Laboissiere] - - Added .exe to Makefile.txt#clean. + - Added .exe to Makefile.txt#clean. - In README, use -fno-strict-aliasing with gcc-2.95.1 [Karas, Krishnaswami] - Fixed chmod in Makefile.txt [B. Karas] @@ -457,16 +459,16 @@ Changes to options For non-simplicial regions, 'Ft' does not satisify the Delaunay property. - If 'Po' or 'TVn', qhull checks outer planes. Use 'Q5' to turn off. - If 'T4', print facet lists and check polygon after adding each point - + Corrections to code - rbox: allow 'c' and 'd' with 's r', meshes, etc. - qh_findbest: redesigned as directed search. qh_findbesthorizon for coplanar qh_findbest is faster for many distributions - qh_findbestnew: redesigned to search horizon of coplanar best newfacets - needed for distributions with a sharp edge, + needed for distributions with a sharp edge, e.g., rbox 1000 s Z1 G1e-13 | qhull Tv - qh_findbest/qh_findbestnew: search neighbors of better horizon facets - was needed for RBOX 1000 s Z1 G1e-13 t996564279 | qhull Tv + was needed for RBOX 1000 s Z1 G1e-13 t996564279 | qhull Tv and RBOX 1000 s W1e-13 P0 t996547055 | QHULL d Qbb Qc Tv - qh_findbest with noupper: could return an upperdelaunay facet if dist>qh.MINoutside. - qh_findbestnew: allow facet->upperdelaunay if dist > qh.MINoutside @@ -480,7 +482,7 @@ Changes to prompts, warnings, and statistics - For Delaunay & Voronoi, 's' reports deleted vertices due to facet merging. They were incorrectly reported as nearly incident points. - Warn if recompute centrum after constructing hull - - Simplified narrow hull warning and print all digits of cosine. + - Simplified narrow hull warning and print all digits of cosine. A narrow hull may lead to a point outside of the hull. - Print total vertices deleted instead of ave. per iteration (Zdelvertextot) - Improved tracing for qh_partitionpoint and qh_partitioncoplanar @@ -492,7 +494,7 @@ Changes to documentation - README.txt: Added quickstart instructions for Visual C++ - rbox: Added example of edge of narrow lens, rbox 1000 L100000 s G1e-6 - Added cross references between options 'o' and 'p'. - - qh-eg.html: added examples comparing 'Qt', 'QJ', and neither 'Qt' nor 'QJ' + - qh-eg.html: added examples comparing 'Qt', 'QJ', and neither 'Qt' nor 'QJ' eg.15a.surface, eg.15b.triangle, eg.17a.delaunay.2, etc. - Reorganized and enhanced discussion of precision problems in qh_impre.htm - Fixed spelling errors [K. Briggs] @@ -513,10 +515,10 @@ Changes to code - qh_checkpolygon: report qh.facet_next error if NARROWhull & dist>MINoutside - qh_findbest: renamed "newfacets" parameter to "isnewfacets" since it is boolT - qh_findbest/qh_findbestnew: testhorizon even if !MERGING - Otherwise qhull c D6 | qhull Q0 Tv assigns coplanar points + Otherwise qhull c D6 | qhull Q0 Tv assigns coplanar points - qh_resetlists: add qh_RESETvisible for qh_triangulate - qh_findbest: search better facets first. Rewritten. - - qh_findbest: increased minminsearch, always check coplanar facets. + - qh_findbest: increased minminsearch, always check coplanar facets. See: RBOX 1000 s Z1 G1e-13 t996564279 | QHULL Tv - qh_findbestnew: report precision error for deleted cones [rare event] e.g.: RBOX 1000 s W1e-13 P0 t1001034076 | QHULL d Qbb Qc Tv @@ -525,14 +527,14 @@ Changes to code - qh_partitionpoint, Delaunay sites can not be inside. Otherwise points may be outside upperDelaunay facets yet not near-inside Delaunay facets See: RBOX s 1000 t993602376 | QHULL C-1e-3 d Qbb FA Tv - - qh_partitioncoplanar: call qh_findbest/qh_findbestnew with qh DELAUNAY - - qh_printlists: format long lines + - qh_partitioncoplanar: call qh_findbest/qh_findbestnew with qh DELAUNAY + - qh_printlists: format long lines - qh_printvertex: format long lines - - user.h: tightened qh_WARNnarrow and qh_MAXnarrow. Do not see problems + - user.h: tightened qh_WARNnarrow and qh_MAXnarrow. Do not see problems until they are -1.0. - - user.h: defined qh_DISToutside, qh_SEARCHdist, and qh_USEfindbestnew + - user.h: defined qh_DISToutside, qh_SEARCHdist, and qh_USEfindbestnew - qh_checkfacet: in 3-d, allow #ridges > #vertices. Can get a vertex twice - in a ridge list, e.g, RBOX 1000 s W1e-13 t995849315 D2 | QHULL d Tc Tv + in a ridge list, e.g, RBOX 1000 s W1e-13 t995849315 D2 | QHULL d Tc Tv Changes to FAQ - Recommended use of triangulated output ('Qt') @@ -543,7 +545,7 @@ Changes to distribution Changes to Qhull library - Added qh_triangulate() to poly2.c. It triangulates the output. - - Added option 'Q11' to copy normals and recompute centrums for tricoplanar facets + - Added option 'Q11' to copy normals and recompute centrums for tricoplanar facets 'FP' may not print the nearest vertex for coplanar points Use option 'Q11' when adding points after qh_triangulate() @@ -553,8 +555,8 @@ qhull 3.0 2001/02/11 Changes to distribution - added qconvex, qdelaunay, qhalf, and qvoronoi - added qhull-interface.cpp on calling Qhull from C++ [K. Erleben] - - renamed to qhull3.0/. - - added eg/, html/, and src/ directories + - renamed to qhull3.0/. + - added eg/, html/, and src/ directories Changes to URLs - MathLab6 qhull: convhulln, delaunayn, griddatan, tsearchn, vororoin [Z. You] @@ -572,7 +574,7 @@ Changes to documentation Corrections to code - fixed type of arg for error message in qh_initqhull_globals [N. Max] - fixed incorrect initialization of qh MINdenom_1 for scalepoints - - fixed drop dim for 'H Qbk:0Bk:0'. Added qh.feasible_point to qh_projectinput + - fixed drop dim for 'H Qbk:0Bk:0'. Added qh.feasible_point to qh_projectinput - qh_WARNnarrow is angle between facet normals. Negate for warning message. - statistics for Wangle/etc. concerns facet normals. Reworded [E. Voth] - fixed error message for 'FC v' @@ -597,8 +599,8 @@ Changes to prompts and warnings - ignore warning if options 'v i Pp'. qvoronoi users may need Delaunay tri. - reworded warning if 'Pg' and 'QVn' is not a vertex. - reworded warning for 'Qx Tv', qh_check_points() in poly2.c - - if 'Pp', turn off warning for 'Qbb' without 'd' or 'v' - - in qh_printsummary() of Voronoi and Delaunay, distinguish QVn, QGn, Pdn, PDn + - if 'Pp', turn off warning for 'Qbb' without 'd' or 'v' + - in qh_printsummary() of Voronoi and Delaunay, distinguish QVn, QGn, Pdn, PDn Changes to FAQ - added FAQ item for nearly flat Delaunay triangles [Z. You] @@ -619,8 +621,8 @@ qhull 2.6 1999/04/19 - added zdoc11 to qh-stat.h#ZZdef for !qh_KEEPstatistics [K. Ford] - enhanced qh_initqhull_globals() test of qh_RANDOMint and qh_RANDOMmax - added debugging option to always return qh_RANDOMmax from qh_rand() - - fixed option 'Qr', qh_initialvertices(), to allow a broken qh_rand() - fixed option 'Qr', qh_nextfurthest(), to allow narrow hulls + - fixed option 'Qr', qh_initialvertices(), to allow a broken qh_rand() + fixed option 'Qr', qh_nextfurthest(), to allow narrow hulls Option 'Qr' simulates the random incremental algorithm for convex hulls - added note that qh.num_outside includes coplanar points for narrow hulls - added FAQ items for triangles/ridges of 3-d Delaunay triangulation[P. Kumar] @@ -657,7 +659,7 @@ qhull 2.6 1998/8/12 - added qh_new_qhull() to user.c for calling qhull() from a program [D. Zwick] rewrote user_eg.c to use qh_new_qhull(). Added qh_QHpointer example. - added qh_CLOCKtype 2 in user.h to call times() for CPU time [B. Hemkemeier] - - renamed set.c/set.h to avoid conflict with STL's set.h [G. van den Bergen] + - renamed set.c/set.h to avoid conflict with STL's set.h [G. van den Bergen] can also use '#include <qhull/qhull_a.h>' for Qhull library fixed errors @@ -678,7 +680,7 @@ qhull 2.6 1998/8/12 - added .c and .h source files to web distribution and qh-c.htm [J. Sands] - documented qh_ZEROdelaunay. Delaunay and Voronoi diagrams do not include facets that are coplanar with the convex hull of the input sites. - + modified code - replaced computed minnorm in qh_sethyperplane_det with distance test - removed 'qh rand_seed' since random number generator is independent of qhull @@ -701,7 +703,7 @@ qhull 2.5 1998/5/4 - to browse qh-c.htm, set MIME type of .c and .h files to text/html - added example of 3-d Delaunay triangulation to q-faq.htm - added Delaunay and Voronoi examples to qh-optv.htm - + ------------ qhull 2.5 1998/2/4 - added option 'v Fi' for separating hyperplanes of bounded Voronoi regions @@ -711,12 +713,12 @@ qhull 2.5 1998/2/4 - fixed missing statistics in qh_allstat* [T. Johnson] - rearranged qh_printvdiagram. Use qh_eachvoronoi to iterate Voronoi ridges. - added qh_check_points to qh-math.c - + qhull 2.5 1998/1/28 - added option 'Fv' to print the Voronoi diagram - added rbox option 'x' to generate random points in a simplex - added rbox option 'y' to generate a simplex and random points - - added rbox option 'On' to offset the output + - added rbox option 'On' to offset the output - add unpacking instructions to README.txt - updated discussion of forced output, 'Po' - sorted the options alphabetically @@ -725,10 +727,10 @@ qhull 2.5 1998/1/28 - added facet->seen2 flag for 'Fv' qhull 2.5 1998/1/16 - - fixed initialization of qh.last_low on restart of 'd QJ' + - fixed initialization of qh.last_low on restart of 'd QJ' - renamed qh_JOGGLEmax to qh_JOGGLEmaxincrease - updated URL for Fukuda's cdd program - + qhull 2.5 1998/1/12 New or modified features @@ -744,14 +746,14 @@ Corrections - for Mathematica 2.2 ('m') changed %10.8g to %16.8f [A. Zhaxybayev] - fixed incorrect warning for 'QV0 Qg' in qh_initbuild [B. Wythoff] - fixed unaccessible statistic if !qh_KEEPstatistics for Wnewvertexmax - - fixed overestimate of qh ONEmerge for point sets outside of + - fixed overestimate of qh ONEmerge for point sets outside of first quadrant and far from the origin - fixed overestimate of 'Qbb' for point sets far from the origin - fixed potential overestimate of qh DISTround under 'Qbb' - fixed 'p' printing coplanar points of unselected facets - fixed 'Ft' printing centrums unnecessarily in 2-d - -Changes to documentation + +Changes to documentation - wrote internal design documentation (qh-c.htm) - started frequently asked questions (qh-faq.htm) - added a section on joggled input to qh-impre.htm @@ -764,7 +766,7 @@ Changes to documentation - added code for printing Delaunay triangles to qh-code.htm [A. Tsui] - options 'Pdk' and 'PDk' do not drop on equality -Improvements to the code +Improvements to the code - reviewed warning messages for Qhull options in qh_initflags - added warning to 's' if premature exit from 'TCn' or 'TVn' - 's' prints max distance above/below only if qh.MERGING @@ -774,7 +776,7 @@ Improvements to the code - removed qh_check_maxout for 'Wn Q0' - reset tracing after 'TPn' adds point in 4-d and higher -Changes for the Qhull library +Changes for the Qhull library - changed qh_setdelaunay to call qh_scalelast if used with 'Qbb' or 'QJ' Delaunay callers to qh_findbestfacet, qh_addpoint, or qh_findfacet_all should always use qh_setdelaunay as in user_eg.c @@ -790,7 +792,7 @@ Changes for the Qhull library Other changes to Qhull functions - report error for !bestfacet in qh_findbest (it shouldn't happen) [H. Meuret] - - set newbest in qh_findbest only if bestfacet updated + - set newbest in qh_findbest only if bestfacet updated - renamed facet parameter for qh_findbest - added maxdist argument to qh_checkpoint - moved 'FO' output after qh_partitionall @@ -809,7 +811,7 @@ qhull 2.4 97/4/2 New or modified features - made 'C-0' and 'Qx' default options. Use 'Q0' to not handle roundoff errors - - removed point-at-infinity from Delaunay/Voronoi. + - removed point-at-infinity from Delaunay/Voronoi. you no longer need to use 'Qu PDk' - added 'Qz' to add a point-at-infinity to Delaunay and Voronoi constructions - added published version of qhull article in ACM Trans Math Software @@ -819,7 +821,7 @@ New or modified features - changed definition of coplanar point in output to qh min_vertex (see 'Qc') it was qh MAXcoplanar ('Un') [could make vertices non-coplanar] - automatically set 'Qi' for options 'd Qc' and 'v Qc'. - - reworded summary ('s') for Delaunay/Voronoi/halfspace. + - reworded summary ('s') for Delaunay/Voronoi/halfspace. use 'Fs' and 'FS' for summary statistics. - for summary 's' of Delaunay/Voronoi, display number of coplanars for facets if none, display total number of coplanars (i.e., non-vertices) @@ -831,8 +833,8 @@ Corrections - fixed qh_partitioncoplanar() to not drop interior points if 'Qi' is used - fixed 'FP d' to report distance in point set instead of paraboloid - fixed qh_findbest() to search all coplanar facets for qh_check_maxout() - -Changes to documentation + +Changes to documentation - added example eg.17f.delaunay.3 to show a triangulation of cospherical sites - split up qh-opt.htm into multiple pieces - split off qh-code.htm for Qhull code @@ -842,12 +844,12 @@ Changes to documentation - removed 'txt' versions of html files - added note to 'PDk' about avoiding a 'd' option immediately after a float - under option 'd', display the triangulation with 'GrD3', not 'GnrD3' - + Changes to the Qhull library - added 'format' argument to qh_printfacetNvertex_nonsimplicial() in io.c - removed C++ type errors [J. Stern, S. Marino] - - created SETelemt, SETfirstt, etc. for specifying data types. - - use SETelem,etc. for assignments. + - created SETelemt, SETfirstt, etc. for specifying data types. + - use SETelem,etc. for assignments. - changed setT.maxsize to 'int' to prevent type conversion warnings - changed FOREACH.. to a comma expression for better code and less warning - changed qh.vertex_visit and .visit_id to unsigned int to prevent warnings @@ -866,10 +868,10 @@ Changes to the Qhull library ------------ qhull V2.3 96/6/5 - - fixed total area of Delaunay triangulation. [A. Enge] + - fixed total area of Delaunay triangulation. [A. Enge] It should ignore facets on the upper-envelope. - if 'd Qu FA', the total area is summed over the upper-Delaunay triangles - - fixed sign of area for Delaunay triangulations. + - fixed sign of area for Delaunay triangulations. - fixed cdd input format for Delaunay triangulation. [A. Enge] - for cdd input, allow feasible point for halfspaces. - warning if cdd output format for centrums, halfspace intersections, or OFF. @@ -877,7 +879,7 @@ qhull V2.3 96/6/5 - option 'QR-n' sets random number seed to n without rotating input - fixed qh_findbest() to retest coplanar and flipped facets after a restart - for 'd Qu Ts' collects angle statistics for upper Delaunay facets - + Changes to the Qhull library - expanded user_eg.c for incremental constructions and Delaunay triangulation - added discussion of incremental construction to qh_man.html#library @@ -886,9 +888,9 @@ qhull V2.3 96/6/5 Please set qh ATinfinity if you explicitly add the point "at-infinity" Please set qh ATinfinity if you explicitly call qh_projectinput. Please set qh UPPERdelaunay if you explicitly cleared qh ATinfinity. - Other users do not need to change their code. - Now you can build a Delaunay triangulation without creating a point - "at-infinity". This removes a potential, hard-to-understand error. + Other users do not need to change their code. + Now you can build a Delaunay triangulation without creating a point + "at-infinity". This removes a potential, hard-to-understand error. qh_readpoints sets qh ATinfinity for options 'd' or 'v' without 'Qu'. qh_initB sets qh ATinfinity for qh PROJECTdelaunay w/o qh UPPERdelaunay. qh_projectinput adds a point "at-infinity" only if qh ATinfinity is set. @@ -923,7 +925,7 @@ qhull V2.3 96/3/25 ------------ qhull V2.2 96/2/15 - detect narrow initial hulls (cosine of min angle < qh_MAXnarrow in user.h). - Write warning if cosine < qh_WARNnarrow in user.h. If narrow (qh NARROWhull), + Write warning if cosine < qh_WARNnarrow in user.h. If narrow (qh NARROWhull), partition coplanar points as outside points and delay coplanar test to end. Needed for RBOX 1000 L100000 s G1e-6 t995127886 | QHULL Tv See 'limitations' in qh-impre.html for further discussion. @@ -946,7 +948,7 @@ qhull V2.2 95/12/28 This reduces roundoff errors for Delaunay triangulations with integer coordinates. - changed option 'Qu d' to print out the furthest-site Delaunay triangulation Use options 'Qu d PD2' to compute the normal 2-d Delaunay triangulation without - the point at infinity. + the point at infinity. - added notes to the documentation of option 'd' - added notes to limitations of how Qhull handles imprecision - added warning if options 'FP', 'Fc', or 'Gp' without option 'Qc' or 'Qi' @@ -957,7 +959,7 @@ qhull V2.2 95/12/28 - fixed option 'QbB' (qh SCALEpoints was not set) - fixed minor confusion between 'Gc' (print centrums) and 'Gp' (print points) - rewrote qh_findbestnew for upper convex hull, Delaunay facets - - changed option name for 'Gp' from 'Gcoplanar' to 'Gpoints' + - changed option name for 'Gp' from 'Gcoplanar' to 'Gpoints' - changed "nearest" facet for 'Pdk' to threshold - normal - reworked qh GOODclosest for 'Qg' - added note that 'Qg' does not always work @@ -965,26 +967,26 @@ qhull V2.2 95/12/28 - refined qh DISTround in qh_maxmin/geom2.c for Delaunay triangulations qhull V2.2 95/12/4 - - Version 2.2 fixes an important bug in computing Delaunay triangulations - and convex hulls with edges sharper than ninety degrees. The problem - occurs when processing a point at a sharp edge. A directed search can - not be used for partitioning because one side may hide facets from the - other side. The new lens-shaped distribution for rbox demonstrates the + - Version 2.2 fixes an important bug in computing Delaunay triangulations + and convex hulls with edges sharper than ninety degrees. The problem + occurs when processing a point at a sharp edge. A directed search can + not be used for partitioning because one side may hide facets from the + other side. The new lens-shaped distribution for rbox demonstrates the problem. For example, 'rbox 100 L3 G0.5 s | qhull Tv' fails for Version 2.1. O. Schramm found the bug when computing the Delaunay triangulation of points - near an outside edge. + near an outside edge. - I rewrote qh_findbest and related functions. Qh_findbest - uses an exhaustive test for sharp edges (qh_findbest_sharp). + I rewrote qh_findbest and related functions. Qh_findbest + uses an exhaustive test for sharp edges (qh_findbest_sharp). Qh_findbest avoids the upper convex hull of Delaunay triangulations. Options 'd' and 'v' no longer assign coplanar points to the upper convex hull. - + Qh_check_maxout tests near-inside points. It ignores fully inside points. When done, it removes near-inside points from the coplanar sets. - If you use qh_addpoint or qh_findbest, please review the function headers. - They do not work for lens-shaped hulls for arbitrary facets. They do work for + If you use qh_addpoint or qh_findbest, please review the function headers. + They do not work for lens-shaped hulls for arbitrary facets. They do work for Delaunay triangulations. Changes to options for V2.2 @@ -993,7 +995,7 @@ qhull V2.2 95/12/4 - added 'FP' to print nearest vertex for coplanar points - added coplanar count to 'Fs' and 's' - added number of similar points to summary for Delaunay/Voronoi - - Option 'Qc' is no longer necessary when merging. + - Option 'Qc' is no longer necessary when merging. - 'o' format for Voronoi vertices ('v') generates "0" lines for similar points - 'QRn' for Delaunay ('d' or 'v') now rotates about the Z axis (see qh_init_B). Otherwise Qhull does not identify the upper hull @@ -1001,7 +1003,7 @@ qhull V2.2 95/12/4 set for 'd'. Even though it was a bad idea, it revealed the above bug. - for option list ('FO'), added version, values for one-merge, maxpos, maxneg, and near-inside, and flags for zero-centrum - - optimized 'C-0' and 'Qx'. These options ("zero-centrum") test vertices + - optimized 'C-0' and 'Qx'. These options ("zero-centrum") test vertices instead of centrums for adjacent simplicial facets. - if 'Tv', report number of points that are not verified due to qh_findbest - Option 'Q8' ignores near-inside points. @@ -1016,9 +1018,9 @@ qhull V2.2 95/12/4 and renumbered the examples for q_eg - described facet orientation in 'data structure' section [P. Soikkonen] - added notes to qh-man.html/"What to do if something goes wrong" - - added note about using 'Tv' to verify the results [O. Schramm] + - added note about using 'Tv' to verify the results [O. Schramm] - expanded definition of f_r in Performance section [S. Grundmann] - - noted that Geomview display of a Voronoi diagram adds extra edges + - noted that Geomview display of a Voronoi diagram adds extra edges for unbounded Voronoi cells - rewrote error "convexity constraints may be too strong" [D. Newland] - added limitations section to "Imprecision in Qhull" @@ -1041,7 +1043,7 @@ qhull V2.2 95/12/4 Changes for users of the Qhull library - user code needs to define qh_version (see user_eg.c) - - merged initialization code into qh_init_A and qh_init_B [M. Mazzario] + - merged initialization code into qh_init_A and qh_init_B [M. Mazzario] old code works as before. qh_initflags also sets qh qhull_command for qh_initthresholds redid initialization for user_eg.c @@ -1082,7 +1084,7 @@ qhull V2.2 95/12/4 qhull V2.1 95/9/25 - converted qhull.man to html format, many edits - referenced Shewchuk's triangle program and Schneiders' Mesh Generation page - - added option 'Qa' to force all points outside + - added option 'Qa' to force all points outside automatically set for "precise" Delaunay or Voronoi [Salazar & Velez] it is turned off by merging, 'Wn', 'Qc' or 'Qi' - added coplanar points to option 'FN' @@ -1110,7 +1112,7 @@ qhull V2.1 95/9/25 - added note about locating Delaunay triangles to option 'd' [A. Curtis] - added note that coplanar vertices correspond to duplicate points for 'd' - added note about option 'd' automatically setting 'PDk' (lower convex hull) - - added note about precision errors to option 'd' [many users] + - added note about precision errors to option 'd' [many users] - added note about qh_findbest() to the Qhull library section [L. Lai] - 'make install' renames qhull.man to qhull.1 for Unix [M. Phillips] - renamed README, etc. to *.txt to match WWW conventions [D. Cervone] @@ -1139,7 +1141,7 @@ qhull V2.1 6/7/95 - fixed cast in qh_point and qh_pointid for 64-bit architectures - fixed URL for Amenta's list of computational geometry software - fixed cast in qh_meminitbuffers for qhmem.freelists - - added test for !qh half_space in qh readpoints + - added test for !qh half_space in qh readpoints - clarified options for qh_printhelp_singular() - discussed non-simplicial facet area under option 'Fa' in qhull.1 @@ -1154,7 +1156,7 @@ qhull V2.1 beta 5/15/95 ======= main changes ======== - added halfspace intersection ('Hn,n,n') - - facet merging is better, especially for high dimensions + - facet merging is better, especially for high dimensions - added 'Qx' for exact merges of coplanar points and precision faults - facet merging is faster, especially for high dimensions. e.g., convex hull of the 8-d hypercube is seven times faster @@ -1174,12 +1176,12 @@ qhull V2.1 beta 5/15/95 - added 'Un' option to set width of facet for coplanar points. This replaces the previous rules for determining coplanar points. - changed default MINoutside ('Wn') to twice MINvisible ('Vn') - - Geomview output adjusts point radii for MINvisible 'Vn' + - Geomview output adjusts point radii for MINvisible 'Vn' - the input format allows the number of points to precede the dimension - options 'v' 'd' 'FAn' and 'FMn' record good facets ('Pg') - added 'Fd' and 'FD' options for homogeneous coordinates in cdd format - in rbox, added 'h' flag to generate homogeneous coordinates in cdd format - - option 'PAn' prints out the n facets with the largest area + - option 'PAn' prints out the n facets with the largest area - option 'PMn' prints out the n facets with the most merges - option 'Po' under tracing ('Tn') no longer tries to write erroneous facets - option 'TCn' only prints the old 'visible' facets for 'f' @@ -1193,12 +1195,12 @@ qhull V2.1 beta 5/15/95 - added 'Q4' to avoid merges of old facets into new facets (does worse) - added 'Q5' to skip qh_check_maxout (faster, but less accurate) - added 'Q6' to skip pre-merge of concave and coplanar facets - - added 'Qv' for testing vertex neighbors for convexity (needs merge option) + - added 'Qv' for testing vertex neighbors for convexity (needs merge option) - added warning if mix Geomview output with other outputs ('Po' turns off) - options 'o v' for 3-d and higher sort the Voronoi vertices by index ======= documentation ======= - - rewrote the introduction and precision sections + - rewrote the introduction and precision sections - added a section on performance - added an example on halfspace intersection - installed examples of Qhull in @@ -1215,7 +1217,7 @@ qhull V2.1 beta 5/15/95 - option in user.h (qh_NOmerge) to turn off merging in qhull. - use this instead of redefining qh_merge_nonconvex in user.c - simplified user_eg.c. See qh_call_qhull() in user.c for the full version - + ======== bug fixes ============ - fixed error in number of points for 'rbox 100 r' (odd distribution) - fixed performance error in qh_degen_redundant_neighbors @@ -1238,7 +1240,7 @@ qhull V2.1 beta 5/15/95 - added facet->f for facet pointers while merging and for facet area - added dfacet/dvertex for printing facets/vertices while debugging - added qh_produce_output and qh_printsummary - + ======== changes to code ========== - moved qh_setfacetplane from qh_makenewfacets to qh_makenewplanes - added qh_setfree2, qh_setcompact, and qh_setduplicate to set.c @@ -1270,7 +1272,7 @@ qhull V2.1 beta 5/15/95 - removed angle argument from qh_merge_degenredundant and qh_mergefacet only used for tracing - getmergeset_initial had extra test of neighbor->simplicial - - ridge->nonconvex is now set on only one ridge between non-convex facets + - ridge->nonconvex is now set on only one ridge between non-convex facets - moved centrum deletion to qh_updatetested - qh_isnewmerge(facet) changed to facet->newmerge (removed NEWmerges) - qh_findbestneighbor reports correct distance even if testcentrum @@ -1307,21 +1309,21 @@ qhull V2.01 6/17/94 - added an input warning to qh_check_points ('Tv') if coplanars and no 'Qc' - qh_partitionpoint: always counts coplanar partitions (Zcoplanarpart) - rewrote qh_printhelp_degenerate to emphasize option 'C-0' - - For Geomview output, roundoff is not needed when printing the inner and + - For Geomview output, roundoff is not needed when printing the inner and outer planes. This improves Geomview output for the 'Rn' option. - - For Geomview output without coplanar points or vertices, qh_GEOMepislon + - For Geomview output without coplanar points or vertices, qh_GEOMepislon is not needed. This removes the edge gap when displaying a Voronoi cell. - - For Geomview output 'Gp', direct vertices to the interior point + - For Geomview output 'Gp', direct vertices to the interior point instead of the arithmetic center of the displayed vertices. - + qhull V2.01 6/11/94 - - if pre-merge, 'Qf' is automatically set. Otherwise an outside point may + - if pre-merge, 'Qf' is automatically set. Otherwise an outside point may be dropt by qh_findbest(). This slows down partitioning. - always use 'Qc' if merging and all facet->maxoutside's must be right. Otherwise distributions with many coplanar points may occassionally - miss a coplanar point for a facet. This is because qh_findbest, when - called by qh_check_maxout, can become stuck at a local maximum if - the search is started at an arbitrary facet. With 'Qc', the search + miss a coplanar point for a facet. This is because qh_findbest, when + called by qh_check_maxout, can become stuck at a local maximum if + the search is started at an arbitrary facet. With 'Qc', the search is started from a coplanar facet. For example, rbox 1000 W8e-6 t | qhull C-0 Tv will (rarely) report that a facet->minoutside is incorrect @@ -1331,7 +1333,7 @@ qhull V2.01 6/11/94 - 'rbox t' reports random seed in comment line - qh_errexit reports rbox_command | qhull_command and 'QR' random seed - added additional tracing to bestdist and setfacetplane - - in qh_checkconvex, need to test coplanar against 0 instead of -DISTround + - in qh_checkconvex, need to test coplanar against 0 instead of -DISTround - in qh_checkconvex, always test centrums if merging. The opposite vertex of a simplicial facet may be coplanar since a vertex of a simplicial facet may be above the facet's hyperplane. @@ -1342,7 +1344,7 @@ qhull V2.01 6/11/94 qhull V2.01 6/2/94 - 's' prints summary to stderr - multiple output formats printed in order to stdout - - added statistic for worst-case distance for merging simplicial facets + - added statistic for worst-case distance for merging simplicial facets can not hope for a better "max distance above/below facet" print factor for "max distance.."/"merge simplicial" in printsummary - fixed error in scaling input with min/max reversed ('Qb0:1B0:-1') @@ -1379,7 +1381,7 @@ Converting from qhull 1.01 to qhull 2.00 - all rbox distributions are now scaled to a 0.5 box (use 'Bn' to change) - rbox now adds a comment line. This may be removed by 'rbox n' - 'rbox r s Z G' no longer includes the positive pole - - no changes to the Macintosh version + - no changes to the Macintosh version qhull V2.00 5/23/94 - if force output ('Po'), facet->maxoutside= 'Wn' since coplanars not updated diff --git a/src/io.c b/src/io.c index ee1684652384a84b79b6552052f6a9f023704a1e..afa89c06ef1d2d617c0c0cf5dfeb6184f8cae567 100644 --- a/src/io.c +++ b/src/io.c @@ -14,8 +14,8 @@ This allows the user to avoid loading io.o from qhull.a copyright (c) 1993-2010 The Geometry Center. - $Id: //product/qhull/main/rel/src/io.c#37 $$Change: 1174 $ - $DateTime: 2010/01/10 22:34:05 $$Author: bbarber $ + $Id: //product/qhull/main/rel/src/io.c#38 $$Change: 1179 $ + $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ */ #include "qhull_a.h" @@ -3669,7 +3669,7 @@ int qh_readfeasible(int dim, const char *curline) { notes: dimension will change in qh_initqhull_globals if qh.PROJECTinput uses malloc() since qh_mem not initialized - FIXUP QH10000: qh_readpoints needs rewriting, too long + FIXUP QH10012: qh_readpoints needs rewriting, too long */ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { coordT *points, *coords, *infinity= NULL; diff --git a/src/rboxlib.c b/src/rboxlib.c index e9064befa59eaa8e84a57f0e67d6e815ff0a7b2b..4f11d22727c2779ef804448c9cfcd9e1221b6868 100644 --- a/src/rboxlib.c +++ b/src/rboxlib.c @@ -25,9 +25,8 @@ #include <stdlib.h> #ifdef _MSC_VER /* Microsoft Visual C++ */ -#pragma warning( disable : 4244) /* conversion from double to int */ #pragma warning( disable : 4706) /* assignment within conditional expression. */ -#pragma warning( disable : 4996) /* this function or variable may be unsafe. */ +#pragma warning( disable : 4996) /* this function (strncat) or variable may be unsafe. */ #endif #define MAXdim 200 @@ -346,7 +345,7 @@ int qh_rboxpoints(FILE* fout, FILE* ferr, char* rbox_command) { seed= 11*seed + i; } }else if (israndom) { - seed= time(&timedata); + seed= (int)time(&timedata); sprintf(seedbuf, " t%d", seed); /* appends an extra t, not worth removing */ strncat(command, seedbuf, sizeof(command)); t= strstr(command, " t "); diff --git a/src/user.h b/src/user.h index ee6666fa81598f34807482410d69a6080423d8d4..52608c3cd80e96242da1680e78f64a6086c68d4a 100644 --- a/src/user.h +++ b/src/user.h @@ -49,8 +49,8 @@ Code flags -- If add new messages, assign these values and increment. - def counters = [27, 1047, 2059, 3025, 4068, 5003, 6233, 7079, 8143, 9410] - QH10012-10016 available + def counters = [27, 1047, 2059, 3025, 4068, 5003, + 6233, 7079, 8143, 9410, 10026] See: qh_ERR* [libqhull.h] */