README
上传用户:yflamps
上传日期:2010-04-01
资源大小:155k
文件大小:9k
源码类别:

3D图形编程

开发平台:

C/C++

  1. Triangle
  2. A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator.
  3. Version 1.6
  4. Show Me
  5. A Display Program for Meshes and More.
  6. Version 1.6
  7. Copyright 1993, 1995, 1997, 1998, 2002, 2005 Jonathan Richard Shewchuk
  8. 2360 Woolsey #H
  9. Berkeley, California  94705-1927
  10. Please send bugs and comments to jrs@cs.berkeley.edu
  11. Created as part of the Quake project (tools for earthquake simulation).
  12. Supported in part by NSF Grant CMS-9318163 and an NSERC 1967 Scholarship.
  13. There is no warranty whatsoever.  Use at your own risk.
  14. Triangle generates exact Delaunay triangulations, constrained Delaunay
  15. triangulations, conforming Delaunay triangulations, Voronoi diagrams, and
  16. high-quality triangular meshes.  The latter can be generated with no small
  17. or large angles, and are thus suitable for finite element analysis.
  18. Show Me graphically displays the contents of the geometric files used by
  19. Triangle.  Show Me can also write images in PostScript form.
  20. Information on the algorithms used by Triangle, including complete
  21. references, can be found in the comments at the beginning of the triangle.c
  22. source file.  Another listing of these references, with PostScript copies
  23. of some of the papers, is available from the Web page
  24.     http://www.cs.cmu.edu/~quake/triangle.research.html
  25. ------------------------------------------------------------------------------
  26. These programs may be freely redistributed under the condition that the
  27. copyright notices (including the copy of this notice in the code comments
  28. and the copyright notice printed when the `-h' switch is selected) are
  29. not removed, and no compensation is received.  Private, research, and
  30. institutional use is free.  You may distribute modified versions of this
  31. code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT
  32. IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH
  33. SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND
  34. CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS.  Distribution of this code as
  35. part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT
  36. WITH THE AUTHOR.  (If you are not directly supplying this code to a
  37. customer, and you are instead telling them how they can obtain it for
  38. free, then you are not required to make any arrangement with me.)
  39. ------------------------------------------------------------------------------
  40. The files included in this distribution are:
  41.   README           The file you're reading now.
  42.   triangle.c       Complete C source code for Triangle.
  43.   showme.c         Complete C source code for Show Me.
  44.   triangle.h       Include file for calling Triangle from another program.
  45.   tricall.c        Sample program that calls Triangle.
  46.   makefile         Makefile for compiling Triangle and Show Me.
  47.   A.poly           A sample input file.
  48. Each of Triangle and Show Me is a single portable C file.  The easiest way
  49. to compile them is to edit and use the included makefile.  Before
  50. compiling, read the makefile, which describes your options, and edit it
  51. accordingly.  You should specify:
  52.   The source and binary directories.
  53.   The C compiler and level of optimization.
  54.   The "correct" directories for include files (especially X include files),
  55.   if necessary.
  56.   Do you want single precision or double?  (The default is double.)  Do you
  57.   want to leave out some of Triangle's features to reduce the size of the
  58.   executable file?  Investigate the SINGLE, REDUCED, and CDT_ONLY symbols.
  59.   If yours is not a Unix system, define the NO_TIMER symbol to remove the
  60.   Unix-specific timing code.  Also, don't try to compile Show Me; it only
  61.   works with X Windows.
  62.   If you are compiling on an Intel x86 CPU and using gcc w/Linux or
  63.   Microsoft C, be sure to define the LINUX or CPU86 (for Microsoft) symbol
  64.   during compilation so that the exact arithmetic works right.
  65. Once you've done this, type "make" to compile the programs.  Alternatively,
  66. the files are usually easy to compile without a makefile:
  67.   cc -O -o triangle triangle.c -lm
  68.   cc -O -o showme showme.c -lX11
  69. On some systems, the C compiler won't be able to find the X include files
  70. or libraries, and you'll need to specify an include path or library path:
  71.   cc -O -I/usr/local/include -o showme showme.c -L/usr/local/lib -lX11
  72. Some processors, including Intel x86 family and possibly Motorola 68xxx
  73. family chips, are IEEE conformant but have extended length internal
  74. floating-point registers that may defeat Triangle's exact arithmetic
  75. routines by failing to cause enough roundoff error!  Typically, there is a
  76. way to set these internal registers so that they are rounded off to IEEE
  77. single or double precision format.  I believe (but I'm not certain) that
  78. Triangle has the right incantations for x86 chips, if you have gcc running
  79. under Linux (define the LINUX compiler symbol) or Microsoft C (define the
  80. CPU86 compiler symbol).
  81. If you have a different processor or operating system, or if I got the
  82. incantations wrong, you should check your C compiler or system manuals to
  83. find out how to configure these internal registers to the precision you are
  84. using.  Otherwise, the exact arithmetic routines won't be exact at all.
  85. See http://www.cs.cmu.edu/~quake/robust.pc.html for details.  Triangle's
  86. exact arithmetic hasn't a hope of working on machines like the Cray C90 or
  87. Y-MP, which are not IEEE conformant and have inaccurate rounding.
  88. Triangle and Show Me have both text and HTML documentation.  The latter is
  89. illustrated.  Find it on the Web at
  90.   http://www.cs.cmu.edu/~quake/triangle.html
  91.   http://www.cs.cmu.edu/~quake/showme.html
  92. Complete text instructions are printed by invoking each program with the
  93. `-h' switch:
  94.   triangle -h
  95.   showme -h
  96. The instructions are long; you'll probably want to pipe the output to
  97. `more' or `lpr' or redirect it to a file.
  98. Both programs give a short list of command line options if they are invoked
  99. without arguments (that is, just type `triangle' or `showme').
  100. Try out Triangle on the enclosed sample file, A.poly:
  101.   triangle -p A
  102.   showme A.poly &
  103. Triangle will read the Planar Straight Line Graph defined by A.poly, and
  104. write its constrained Delaunay triangulation to A.1.node and A.1.ele.
  105. Show Me will display the figure defined by A.poly.  There are two buttons
  106. marked "ele" in the Show Me window; click on the top one.  This will cause
  107. Show Me to load and display the triangulation.
  108. For contrast, try running
  109.   triangle -pq A
  110. Now, click on the same "ele" button.  A new triangulation will be loaded;
  111. this one having no angles smaller than 20 degrees.
  112. To see a Voronoi diagram, try this:
  113.   cp A.poly A.node
  114.   triangle -v A
  115. Click the "ele" button again.  You will see the Delaunay triangulation of
  116. the points in A.poly, without the segments.  Now click the top "voro" button.
  117. You will see the Voronoi diagram corresponding to that Delaunay triangulation.
  118. Click the "Reset" button to see the full extent of the diagram.
  119. ------------------------------------------------------------------------------
  120. If you wish to call Triangle from another program, instructions for doing
  121. so are contained in the file `triangle.h' (but read Triangle's regular
  122. instructions first!).  Also look at `tricall.c', which provides an example
  123. of how to call Triangle.
  124. Type "make trilibrary" to create triangle.o, a callable object file.
  125. Alternatively, the object file is usually easy to compile without a
  126. makefile:
  127.   cc -DTRILIBRARY -O -c triangle.c
  128. Type "make distclean" to remove all the object and executable files created
  129. by make.
  130. ------------------------------------------------------------------------------
  131. If you use Triangle, and especially if you use it to accomplish real work,
  132. I would like very much to hear from you.  A short letter or email (to
  133. jrs@cs.berkeley.edu) describing how you use Triangle will mean a lot to me.
  134. The more people I know are using this program, the more easily I can
  135. justify spending time on improvements and on the three-dimensional
  136. successor to Triangle, which in turn will benefit you.  Also, I can put you
  137. on a list to receive email whenever a new version of Triangle is available.
  138. If you use a mesh generated by Triangle or plotted by Show Me in a
  139. publication, please include an acknowledgment as well.  And please spell
  140. Triangle with a capital `T'!  If you want to include a citation, use
  141. `Jonathan Richard Shewchuk, ``Triangle:  Engineering a 2D Quality Mesh
  142. Generator and Delaunay Triangulator,'' in Applied Computational Geometry:
  143. Towards Geometric Engineering (Ming C. Lin and Dinesh Manocha, editors),
  144. volume 1148 of Lecture Notes in Computer Science, pages 203-222,
  145. Springer-Verlag, Berlin, May 1996.  (From the First ACM Workshop on Applied
  146. Computational Geometry.)'
  147. Jonathan Richard Shewchuk
  148. July 27, 2005