Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Analysis.AlgorithmBehavior/qhull-2012.1/README.txt @ 11305

Last change on this file since 11305 was 10207, checked in by ascheibe, 11 years ago

#1886 added a unit test for volume calculation and the qhull library

File size: 17.6 KB
Line 
1Name
2
3      qhull, rbox         2012.1     2012/02/18
4 
5Convex hull, Delaunay triangulation, Voronoi diagrams, Halfspace intersection
6 
7      Documentation:
8        html/index.htm
9        http://www.qhull.org/html
10
11      Available from:
12        <http://www.qhull.org>
13        <git@gitorious.org:qhull/qhull.git>
14        <http://packages.debian.org/sid/libqhull5> [out-of-date]
15 
16      News and a paper:
17        <http://www.qhull.org/news>
18        <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.117.405>
19
20     Version 1 (simplicial only):
21        <http://www.qhull.org/download/qhull-1.0.tar.gz>
22       
23
24Purpose
25
26  Qhull is a general dimension convex hull program that reads a set
27  of points from stdin, and outputs the smallest convex set that contains
28  the points to stdout.  It also generates Delaunay triangulations, Voronoi
29  diagrams, furthest-site Voronoi diagrams, and halfspace intersections
30  about a point.
31
32  Rbox is a useful tool in generating input for Qhull; it generates
33  hypercubes, diamonds, cones, circles, simplices, spirals,
34  lattices, and random points.
35 
36  Qhull produces graphical output for Geomview.  This helps with
37  understanding the output. <http://www.geomview.org>
38
39Environment requirements
40
41  Qhull and rbox should run on all 32-bit and 64-bit computers.  Use
42  an ANSI C or C++ compiler to compile the program.  The software is
43  self-contained.  It comes with examples and test scripts.
44 
45  Qhull's C++ interface uses the STL.  The C++ test program uses QTestLib
46  from Nokia's Qt Framework.  Qhull's C++ interface may change without
47  notice.  Eventually, it will move into the qhull shared library.
48 
49  Qhull is copyrighted software.  Please read COPYING.txt and REGISTER.txt
50  before using or distributing Qhull.
51
52To cite Qhull, please use
53
54  Barber, C.B., Dobkin, D.P., and Huhdanpaa, H.T., "The Quickhull
55  algorithm for convex hulls," ACM Trans. on Mathematical Software,
56  22(4):469-483, Dec 1996, http://www.qhull.org.
57
58To contribute to Qhull
59
60  Qhull is on Gitorious (http://gitorious.org:qhull, git@gitorious.org:qhull/qhull.git)
61 
62  For internal documentation, see html/qh-code.htm
63
64To install Qhull
65
66  Qhull is precompiled for Windows, otherwise it needs compilation.
67 
68  Besides makefiles for gcc, qhull includes CMakeLists.txt for CMake,
69  vcproj/sln files for Microsoft Visual Studio, and .pro files for Qt Creator.
70  It compiles with mingw.
71 
72  Install and build instructions follow. 
73 
74  See the end of this document for a list of distributed files.
75
76-----------------
77Installing Qhull on Windows
78
79  The zip file contains rbox.exe, qhull.exe, qconvex.exe, qdelaunay.exe,
80  qhalf.exe, qvoronoi.exe, testqset.exe, user_eg*.exe, documentation files,
81  and source files.
82 
83  To install Qhull:
84  - Unzip the files into a directory.  You may use WinZip32 <www.hotfiles.com>
85  - Click on QHULL-GO or open a command window into Qhull's bin directory.
86   
87  To uninstall Qhull
88  - Delete the qhull directory
89 
90  To learn about Qhull:
91  - Execute 'qconvex' for a synopsis and examples.
92  - Execute 'rbox 10 | qconvex' to compute the convex hull of 10 random points.
93  - Execute 'rbox 10 | qconvex i TO file' to write results to 'file'.
94  - Browse the documentation: qhull\html\index.htm
95  - If an error occurs, Windows sends the error to stdout instead of stderr.
96    Use 'TO xxx' to send normal output to xxx and error output to stdout
97
98  To improve the command window
99  - Double-click the window bar to increase the size of the window
100  - Right-click the window bar
101  - Select Properties
102  - Check QuickEdit Mode
103    Select text with right-click or Enter
104    Paste text with right-click
105  - Change Font to Lucinda Console
106  - Change Layout to Screen Buffer Height 999, Window Size Height 55
107  - Change Colors to Screen Background White, Screen Text Black
108  - Click OK
109  - Select 'Modify shortcut that started this window', then OK
110
111  If you use qhull a lot, install MSYS (www.mingw.org),
112    Road Bash (www.qhull.org/bash), or Cygwin (www.cygwin.com).
113
114-----------------
115Installing Qhull on Unix with gcc
116
117  To build Qhull, static libraries, shared library, and C++ interface
118  - Extract Qhull from qhull...tgz or qhull...zip
119  - make
120  - export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
121
122  Or, to build Qhull and libqhullstatic.a
123  - Extract Qhull from qhull...tgz or qhull...zip
124  - cd src/libqhull
125  - make
126
127  The Makefiles may be edited for other compilers.
128  If 'testqset' exits with an error, qhull is broken
129 
130-----------------
131Installing Qhull with CMake 2.6 or later
132
133  To build Qhull, static libraries, shared library, and C++ interface
134  - Extract Qhull from qhull...tgz or qhull...zip
135  - cd build
136  - cmake ..
137  - make
138  - make install
139 
140  On Windows, CMake installs to C:/Program Files/qhull
141  See CMakeLists.txt for further build instructions
142
143-----------------
144Installing Qhull with Qt
145
146  To build Qhull, static libraries, shared library, C++ interface, and C++ test
147  - Extract Qhull from qhull...tgz or qhull...zip
148  - cd src
149  - qmake
150  - make
151 
152-----------------
153Installing Qhull with Autoconf [WARNING out-of-date]
154
155  The tar.gz tarball contains documentation, source files,
156  and a config directory [R. Laboissiere].
157
158  [Nov 2011] Qhull 2009.1.2 does not include the C++ interface
159 
160  To install Qhull
161  - Extract the files
162  - ./configure
163  - make
164  - make install
165
166-------------------
167Working with Qhull's C++ interface
168
169  Qhull's C++ interface is likely to change.  Stay current with Gitorious.
170
171  To clone Qhull's next branch from http://gitorious.org/qhull
172    git init
173    git clone git://gitorious.org/qhull/qhull.git
174    cd qhull
175    git checkout next
176    ...
177    git pull origin next
178
179------------------
180Compiling Qhull with Microsoft Visual C++ 2005 or later
181
182  To compile Qhull with Microsoft Visual C++
183  - Extract Qhull from Gitorious, qhull...tgz, or qhull...zip
184  - Load solution build/qhull.sln
185  - Build
186  - Project qhulltest requires Qt for DevStudio (http://qt.nokia.com/downloads)
187    Set the QTDIR environment variable to your Qt directory (e.g., c:/qt/4.7.4)
188    If incorrect, precompile will fail with 'Can not locate the file specified'
189
190-----------------
191Compiling Qhull with Qt Creator
192
193  Qt (http://qt.nokia.com) is a C++ framework for Windows, Linux, and Macintosh
194
195  Qhull uses QTestLib to test qhull's C++ interface (qhulltest)
196 
197  To compile Qhull with Qt Creator
198  - Extract Qhull from Gitorious, qhull...tgz, or qhull...zip
199  - Download the Qt SDK from Nokia (http://qt.nokia.com/downloads)
200  - Start Qt Creator
201  - Load src/qhull-all.pro
202  - Build
203
204-----------------
205Compiling Qhull with mingw on Windows
206
207  To compile Qhull with MINGW
208  - Extract Qhull from Gitorious, qhull...tgz, or qhull...zip
209  - Install Road Bash (http://www.qhull.org/bash)
210    or install MSYS (http://www.mingw.org/wiki/msys)
211  - Install MINGW (http://www.mingw.org/).  Mingw is included with Qt SDK. 
212  - make
213 
214-----------------
215Compiling Qhull with cygwin on Windows
216
217  To compile Qhull with cygwin
218  - Extract Qhull from Gitorious, qhull...tgz, or qhull...zip
219  - Install cygwin (http://www.cygwin.com)
220  - Include packages for gcc, make, ar, and ln
221  - make
222
223-----------------
224Compiling from Makfile without gcc
225
226  The file, qhull-src.tgz, contains documentation and source files for
227  qhull and rbox. 
228 
229  To unpack the gzip file
230  - tar zxf qhull-src.tgz
231  - cd qhull
232 
233  Compiling qhull and rbox with Makefile
234  - in Makefile, check the CC, CCOPTS1, PRINTMAN, and PRINTC defines
235      - the defaults are gcc and enscript
236      - CCOPTS1 should include the ANSI flag.  It defines __STDC__
237  - in user.h, check the definitions of qh_SECticks and qh_CPUclock.
238      - use '#define qh_CLOCKtype 2' for timing runs longer than 1 hour
239  - type: make
240      - this builds: qhull qconvex qdelaunay qhalf qvoronoi rbox libqhull.a
241  - type: make doc
242      - this prints the man page
243      - See also qhull/html/index.htm
244  - if your compiler reports many errors, it is probably not a ANSI C compiler
245      - you will need to set the -ansi switch or find another compiler
246  - if your compiler warns about missing prototypes for fprintf() etc.
247      - this is ok, your compiler should have these in stdio.h
248  - if your compiler warns about missing prototypes for memset() etc.
249      - include memory.h in qhull_a.h
250  - if your compiler reports "global.c: storage size of 'qh_qh' isn't known"
251      - delete the initializer "={0}" in global.c, stat.c and mem.c
252  - if your compiler warns about "stat.c: improper initializer"
253      - this is ok, the initializer is not used
254  - if you have trouble building libqhull.a with 'ar'
255      - try 'make -f Makefile.txt qhullx'
256  - if the code compiles, the qhull test case will automatically execute
257  - if an error occurs, there's an incompatibility between machines
258      - If you can, try a different compiler
259      - You can turn off the Qhull memory manager with qh_NOmem in mem.h
260      - You can turn off compiler optimization (-O2 in Makefile)
261      - If you find the source of the problem, please let us know
262  - to install the programs and their man pages:
263      - define MANDIR and BINDIR
264      - type 'make install'
265
266  - if you have Geomview (www.geomview.org)
267       - try  'rbox 100 | qconvex G >a' and load 'a' into Geomview
268       - run 'q_eg' for Geomview examples of Qhull output (see qh-eg.htm)
269
270------------------
271Compiling on other machines and compilers
272
273  Qhull compiles with Borland C++ 5.0 bcc32.  A Makefile is included.
274  Execute 'make -f Mborland'.  If you use the Borland IDE, set the ANSI
275  option in Options:Project:Compiler:Source:Language-compliance.
276 
277  Qhull compiles with Borland C++ 4.02 for Win32 and DOS Power Pack. 
278  Use 'make -f Mborland -D_DPMI'.  Qhull 1.0 compiles with Borland
279  C++ 4.02.  For rbox 1.0, use "bcc32 -WX -w- -O2-e -erbox -lc rbox.c". 
280  Use the same options for Qhull 1.0. [D. Zwick]
281 
282  Qhull compiles with Metrowerks C++ 1.7 with the ANSI option.
283  If you turn on full warnings, the compiler will report a number of
284  unused variables, variables set but not used, and dead code.  These are
285  intentional.  For example, variables may be initialized (unnecessarily)
286  to prevent warnings about possible use of uninitialized variables. 
287
288  Qhull compiles on the Power Macintosh with Metrowerk's C compiler.
289  It uses the SIOUX interface to read point coordinates and return output.
290  There is no graphical output.  For project files, see 'Compiling a
291  custom build'.  Instead of using SIOUX, Qhull may be embedded within an
292  application. 
293
294  Some users have reported problems with compiling Qhull under Irix 5.1.  It
295  compiles under other versions of Irix.
296 
297  If you have troubles with the memory manager, you can turn it off by
298  defining qh_NOmem in mem.h.
299
300-----------------
301Distributed files
302
303  README.txt           // Instructions for installing Qhull
304  REGISTER.txt         // Qhull registration
305  COPYING.txt          // Copyright notice
306  QHULL-GO.lnk         // Windows icon for eg/qhull-go.bat
307  Announce.txt         // Announcement
308  CMakeLists.txt       // CMake build file (2.6 or later)
309  File_id.diz          // Package descriptor
310  index.htm            // Home page
311  Makefile             // Makefile for gcc and other compilers
312  qhull*.md5sum        // md5sum for all files
313
314  bin/*          // Qhull executables and dll (.zip only)
315  build/qhull.sln      // DevStudio solution and project files (2005 or later)
316  build/*.vcproj
317  config/*             // Autoconf files for creating configure (Unix only)
318  eg/*                 // Test scripts and geomview files from q_eg
319  html/index.htm       // Manual
320  html/qh-faq.htm      // Frequently asked questions
321  html/qh-get.htm      // Download page
322  html/qhull-cpp.xml   // C++ style notes as a Road FAQ (www.qhull.org/road)
323  src/Changes.txt      // Change history for Qhull and rbox
324  src/qhull-all.pro    // Qt project
325
326eg/
327  q_eg                 // shell script for Geomview examples (eg.01.cube)
328  q_egtest             // shell script for Geomview test examples
329  q_test               // shell script to test qhull
330  q_test-ok.txt        // output from q_test
331  qhulltest-ok.txt     // output from qhulltest (Qt only)
332
333rbox consists of (bin, html):
334  rbox.exe             // Win32 executable (.zip only)
335  rbox.htm             // html manual
336  rbox.man             // Unix man page
337  rbox.txt
338
339qhull consists of (bin, html):
340  qhull.exe            // Win32 executables and dlls (.zip only)
341  qconvex.exe
342  qdelaunay.exe
343  qhalf.exe
344  qvoronoi.exe
345  qhull.dll
346  qhull_p.dll
347  qhull-go.bat         // command window
348  qconvex.htm          // html manual
349  qdelaun.htm
350  qdelau_f.htm       
351  qhalf.htm
352  qvoronoi.htm
353  qvoron_f.htm
354  qh-eg.htm
355  qh-code.htm
356  qh-impre.htm
357  index.htm
358  qh-opt*.htm
359  qh-quick.htm
360  qh--*.gif            // images for manual
361  normal_voronoi_knauss_oesterle.jpg
362  qhull.man            // Unix man page
363  qhull.txt
364
365bin/
366  msvcr80.dll          // Visual C++ redistributable file (.zip only)
367
368src/
369  qhull/unix.c         // Qhull and rbox applications
370  qconvex/qconvex.c   
371  qhalf/qhalf.c
372  qdelaunay/qdelaunay.c
373  qvoronoi/qvoronoi.c
374  rbox/rbox.c
375
376  user_eg/user_eg.c    // example of using qhull_p.dll (requires -Dqh_QHpointer)
377  user_eg2/user_eg2.c  // example of using qhull.dll from a user program
378  user_eg3/user_eg3.cpp // example of Qhull's C++ interface with libqhullstatic_p.a
379  qhulltest/qhulltest.cpp // Test of Qhull's C++ interface using Qt's QTestLib
380  qhull-*.pri          // Include files for Qt projects
381
382src/libqhull
383  libqhull.pro         // Qt project for shared library (qhull.dll)
384  index.htm            // design documentation for libqhull
385  qh-*.htm
386  qhull-exports.def    // Export Definition file for Visual C++
387  Makefile             // Simple gcc Makefile for qhull and libqhullstatic.a
388  Mborland             // Makefile for Borland C++ 5.0
389
390  libqhull.h           // header file for qhull
391  user.h               // header file of user definable constants
392  libqhull.c           // Quickhull algorithm with partitioning
393  user.c               // user re-definable functions
394  usermem.c
395  userprintf.c
396  userprintf_rbox.c
397
398  qhull_a.h            // include files for libqhull/*.c
399  geom.c               // geometric routines
400  geom2.c
401  geom.h     
402  global.c             // global variables
403  io.c                 // input-output routines
404  io.h   
405  mem.c                // memory routines, this is stand-alone code
406  mem.h
407  merge.c              // merging of non-convex facets
408  merge.h
409  poly.c               // polyhedron routines
410  poly2.c
411  poly.h
412  qset.c               // set routines, this only depends on mem.c
413  qset.h
414  random.c             // utilities w/ Park & Miller's random number generator
415  random.h
416  rboxlib.c            // point set generator for rbox
417  stat.c               // statistics
418  stat.h
419
420src/libqhullp
421  libqhullp.pro        // Qt project for shared library (qhull_p.dll)
422  qhull_p-exports.def  // Export Definition file for Visual C++
423
424src/libqhullstatic/
425  libqhullstatic.pro   // Qt project for static library     
426     
427src/libqhullstaticp/
428  libqhullstaticp.pro  // Qt project for static library with qh_QHpointer
429     
430src/libqhullcpp/
431  libqhullcpp.pro      // Qt project for static C++ library     
432  Qhull.cpp            // Call libqhull.c from C++
433  Qhull.h
434  qt-qhull.cpp         // Supporting methods for Qt
435  qhull_interface.cpp  // Another approach to C++
436   
437  Coordinates.cpp      // input classes
438  Coordinates.h
439  PointCoordinates.cpp
440  PointCoordinates.h
441  RboxPoints.cpp       // call rboxlib.c from C++
442  RboxPoints.h
443
444  QhullFacet.cpp       // data structure classes
445  QhullFacet.h
446  QhullHyperplane.cpp
447  QhullHyperplane.h
448  QhullPoint.cpp
449  QhullPoint.h
450  QhullQh.cpp
451  QhullStat.cpp
452  QhullStat.h
453  QhullVertex.cpp
454  QhullVertex.h
455 
456  QhullFacetList.cpp   // collection classes
457  QhullFacetList.h
458  QhullFacetSet.cpp
459  QhullFacetSet.h
460  QhullIterator.h
461  QhullLinkedList.h
462  QhullPoints.cpp
463  QhullPoints.h
464  QhullPointSet.cpp
465  QhullPointSet.h
466  QhullRidge.cpp
467  QhullRidge.h
468  QhullSet.cpp
469  QhullSet.h
470  QhullSets.h
471  QhullVertexSet.cpp
472  QhullVertexSet.h
473
474  functionObjects.h    // supporting classes
475  QhullError.cpp
476  QhullError.h
477  QhullQh.cpp
478  QhullQh.h
479  UsingLibQhull.cpp
480  UsingLibQhull.h
481
482src/qhulltest/
483  qhulltest.pro        // Qt project for test of C++ interface     
484  Coordinates_test.cpp // Test of each class
485  PointCoordinates_test.cpp
486  Point_test.cpp
487  QhullFacetList_test.cpp
488  QhullFacetSet_test.cpp
489  QhullFacet_test.cpp
490  QhullHyperplane_test.cpp
491  QhullLinkedList_test.cpp
492  QhullPointSet_test.cpp
493  QhullPoints_test.cpp
494  QhullPoint_test.cpp
495  QhullRidge_test.cpp
496  QhullSet_test.cpp
497  QhullVertexSet_test.cpp
498  QhullVertex_test.cpp
499  Qhull_test.cpp
500  RboxPoints_test.cpp
501  UsingLibQhull_test.cpp
502
503src/road/
504  RoadError.cpp        // Supporting base classes
505  RoadError.h
506  RoadLogEvent.cpp
507  RoadLogEvent.h
508  RoadTest.cpp         // Run multiple test files with QTestLib
509  RoadTest.h
510
511src/testqset/
512  testqset.pro    // Qt project for test qset.c with mem.c
513  testqset.c
514 
515-----------------
516Authors:
517
518  C. Bradford Barber                  Hannu Huhdanpaa (Version 1.0)
519  bradb@shore.net                     hannu@qhull.org
520 
521  Qhull 1.0 and 2.0 were developed under NSF grants NSF/DMS-8920161
522  and NSF-CCR-91-15793 750-7504 at the Geometry Center and Harvard
523  University.  If you find Qhull useful, please let us know.
Note: See TracBrowser for help on using the repository browser.