cytriangle 1.0.1__cp311-cp311-macosx_14_0_arm64.whl → 1.0.3__cp311-cp311-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cytriangle might be problematic. Click here for more details.

@@ -1,5 +1,4 @@
1
1
  from cytriangle.ctriangle cimport triangulateio
2
2
 
3
3
  cdef class TriangleIO:
4
- cdef int out_flag
5
4
  cdef triangulateio* _io
@@ -2,6 +2,7 @@ from libc.stdlib cimport free, malloc
2
2
  import numpy as np
3
3
  from cytriangle.ctriangle cimport triangulateio
4
4
 
5
+
5
6
  def validate_input_attributes(attributes):
6
7
  num_attr = list(set([len(sublist) for sublist in attributes]))
7
8
  if len(num_attr) > 1:
@@ -14,16 +15,16 @@ def validate_input_attributes(attributes):
14
15
  def validate_attribute_number(attributes, base_quantity):
15
16
  if len(attributes) != base_quantity:
16
17
  raise ValueError(
17
- "Attribute list must have the same number of elements as the input it decorates"
18
+ """Attribute list must have the same number of elements as the
19
+ input it decorates"""
18
20
  )
19
21
 
22
+
20
23
  cdef class TriangleIO:
21
24
 
22
25
  def __cinit__(self):
23
26
  # Initialize the triangulateio struct with NULL pointers
24
27
  self._io = <triangulateio*> NULL
25
- # out flag prevents freeing shared in / out struct data twice
26
- self.out_flag = 0
27
28
 
28
29
  def __dealloc__(self):
29
30
  # Free allocated memory when the instance is deallocated
@@ -47,9 +48,9 @@ cdef class TriangleIO:
47
48
  free(self._io.segmentlist)
48
49
  if self._io.segmentmarkerlist is not NULL:
49
50
  free(self._io.segmentmarkerlist)
50
- if self._io.holelist is not NULL and self.out_flag != 1:
51
+ if self._io.holelist is not NULL:
51
52
  free(self._io.holelist)
52
- if self._io.regionlist is not NULL and self.out_flag != 1:
53
+ if self._io.regionlist is not NULL:
53
54
  free(self._io.regionlist)
54
55
  if self._io.edgelist is not NULL:
55
56
  free(self._io.edgelist)
@@ -59,10 +60,7 @@ cdef class TriangleIO:
59
60
  free(self._io.normlist)
60
61
  free(self._io)
61
62
 
62
- def __init__(self, input_dict=None,kind=''):
63
- # Prevent double deallocation on 'out' triangleio structs
64
- if kind == 'out':
65
- self.out_flag = 1
63
+ def __init__(self, input_dict=None):
66
64
  # Assemble the triangulateio struct from a Python dictionary (default)
67
65
  self._io = <triangulateio*> malloc(sizeof(triangulateio))
68
66
 
@@ -125,12 +123,13 @@ cdef class TriangleIO:
125
123
  if 'regions' in input_dict:
126
124
  self.set_regions(input_dict['regions'])
127
125
 
128
- def to_dict(self,opt=''):
126
+ def to_dict(self, opt=''):
129
127
  """
130
128
  Converts the internal C TriangleIO data structure into a dictionary format.
131
129
 
132
130
  Parameters:
133
- - opt: A string that indicates the format of the output. If 'np', numpy arrays are used.
131
+ - opt: A string that indicates the format of the output. If 'np',
132
+ numpy arrays are used.
134
133
 
135
134
  Returns:
136
135
  - A dictionary containing the triangulation data.
@@ -147,7 +146,8 @@ cdef class TriangleIO:
147
146
  if self.triangles:
148
147
  output_dict['triangles'] = np.asarray(self.triangles)
149
148
  if self.triangle_attributes:
150
- output_dict['triangle_attributes'] = np.asarray(self.triangle_attributes)
149
+ output_dict['triangle_attributes'] = np.asarray(
150
+ self.triangle_attributes)
151
151
  else:
152
152
  if self.vertices:
153
153
  output_dict['vertices'] = self.vertices
@@ -212,7 +212,9 @@ cdef class TriangleIO:
212
212
  vertex_attr = []
213
213
  for j in range(self._io.numberofpointattributes):
214
214
  vertex_attr.append(
215
- self._io.pointattributelist[i*self._io.numberofpointattributes + j ]
215
+ self._io.pointattributelist[
216
+ i*self._io.numberofpointattributes + j
217
+ ]
216
218
  )
217
219
  vertex_attributes.append(vertex_attr)
218
220
  return vertex_attributes
@@ -239,8 +241,9 @@ cdef class TriangleIO:
239
241
  @property
240
242
  def triangles(self):
241
243
  """
242
- `triangles`: A list of triangle corners (not necessarily 3). Corners are designated
243
- in a counterclockwise order, followed by any other nodes if the triangle represents a
244
+ `triangles`: A list of triangle corners (not necessarily 3).
245
+ Corners are designated in a counterclockwise order,
246
+ followed by any other nodes if the triangle represents a
244
247
  nonlinear element (e.g. num_corners > 3).
245
248
 
246
249
  Returns:
@@ -251,7 +254,9 @@ cdef class TriangleIO:
251
254
  for i in range(self._io.numberoftriangles):
252
255
  tri_order = []
253
256
  for j in range(self._io.numberofcorners):
254
- tri_order.append(self._io.trianglelist[i * self._io.numberofcorners + j])
257
+ tri_order.append(self._io.trianglelist[
258
+ i * self._io.numberofcorners + j
259
+ ])
255
260
  triangles.append(tri_order)
256
261
  return triangles
257
262
 
@@ -274,7 +279,9 @@ cdef class TriangleIO:
274
279
  triangle_attr = []
275
280
  for j in range(self._io.numberoftriangleattributes):
276
281
  triangle_attr.append(
277
- self._io.triangleattributelist[i*self._io.numberoftriangleattributes + j]
282
+ self._io.triangleattributelist[
283
+ i*self._io.numberoftriangleattributes + j
284
+ ]
278
285
  )
279
286
  triangle_attributes.append(triangle_attr)
280
287
  return triangle_attributes
@@ -286,7 +293,8 @@ cdef class TriangleIO:
286
293
  @property
287
294
  def triangle_max_area(self):
288
295
  """
289
- `triangle_max_area`: A list of triangle area constraints; one per triangle, 0 if not set.
296
+ `triangle_max_area`: A list of triangle area constraints;
297
+ one per triangle, 0 if not set.
290
298
  Input only.
291
299
 
292
300
  Returns:
@@ -306,7 +314,8 @@ cdef class TriangleIO:
306
314
  `neighbors`: A list of triangle neighbors; three ints per triangle. Output only.
307
315
 
308
316
  Returns:
309
- - A list of lists, where each inner list contains indices of neighboring triangles.
317
+ - A list of lists, where each inner list contains indices of neighboring
318
+ triangles.
310
319
  """
311
320
  max_neighbors = 3
312
321
  if self._io.neighborlist is not NULL:
@@ -391,7 +400,8 @@ cdef class TriangleIO:
391
400
  regions = []
392
401
  for i in range(self._io.numberofregions):
393
402
  region = {}
394
- region['vertex'] = [self._io.regionlist[4*i], self._io.regionlist[4*i + 1]]
403
+ region['vertex'] = [self._io.regionlist[4*i],
404
+ self._io.regionlist[4*i + 1]]
395
405
  region['marker'] = int(self._io.regionlist[4*i + 2])
396
406
  region['max_area'] = self._io.regionlist[4*i + 3]
397
407
  regions.append(region)
@@ -465,7 +475,8 @@ cdef class TriangleIO:
465
475
  num_vertices = self._io.numberofpoints
466
476
  validate_attribute_number(vertex_attributes, num_vertices)
467
477
  vertex_attributes = np.ascontiguousarray(vertex_attributes)
468
- self._io.pointattributelist = <double*>malloc(num_attr * num_vertices * sizeof(double))
478
+ self._io.pointattributelist = <double*>malloc(
479
+ num_attr * num_vertices * sizeof(double))
469
480
  self._io.numberofpointattributes = num_attr
470
481
  for i in range(num_vertices):
471
482
  for j in range(num_attr):
@@ -492,11 +503,13 @@ cdef class TriangleIO:
492
503
  num_triangles = self._io.numberoftriangles
493
504
  validate_attribute_number(triangle_attributes, num_triangles)
494
505
  triangle_attributes = np.ascontiguousarray(triangle_attributes)
495
- self._io.triangleattributelist = <double*>malloc(num_attr * num_triangles * sizeof(double))
506
+ self._io.triangleattributelist = <double*>malloc(
507
+ num_attr * num_triangles * sizeof(double))
496
508
  self._io.numberoftriangleattributes = num_attr
497
509
  for i in range(num_triangles):
498
510
  for j in range(num_attr):
499
- self._io.triangleattributelist[i * num_attr + j] = triangle_attributes[i, j]
511
+ self._io.triangleattributelist[
512
+ i * num_attr + j] = triangle_attributes[i, j]
500
513
 
501
514
  def set_triangle_areas(self, triangle_areas):
502
515
  num_triangles = self._io.numberoftriangles
@@ -518,7 +531,8 @@ cdef class TriangleIO:
518
531
  def set_segment_markers(self, segment_markers):
519
532
  segment_markers = np.ascontiguousarray(segment_markers, dtype=int)
520
533
  validate_attribute_number(segment_markers, self._io.numberofsegments)
521
- self._io.segmentmarkerlist = <int*>malloc(self._io.numberofsegments * sizeof(int))
534
+ self._io.segmentmarkerlist = <int*>malloc(
535
+ self._io.numberofsegments * sizeof(int))
522
536
  for i in range(self._io.numberofsegments):
523
537
  self._io.segmentmarkerlist[i] = segment_markers[i]
524
538
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cytriangle
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: Object-oriented Cython wrapper of Shewchuk's Triangle Library
5
5
  Home-page: https://github.com/m-clare/cytriangle
6
6
  License: LGPL 3.0
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Topic :: Scientific/Engineering
24
- Requires-Dist: numpy (>=1.25.2,<2.0.0)
24
+ Requires-Dist: numpy (>=1.25.2)
25
25
  Project-URL: Repository, https://github.com/m-clare/cytriangle
26
26
  Description-Content-Type: text/markdown
27
27
 
@@ -0,0 +1,20 @@
1
+ src/c/A.poly,sha256=fUAoFVmSX7cHUhBVYmheU06ihaULEwe-RLiikypjJQg,1045
2
+ src/c/README,sha256=ikdcdYAxJ0yn92hpgMDNYqqpnIbx2NN0RRwOrJ-k-20,8727
3
+ src/c/makefile,sha256=-rpGAONyNvjf5ycTO7K-TsIRKgWKe0qkHZA_6WmPEXo,4805
4
+ src/c/showme.c,sha256=lKJ2jrhU9xh5C-cgEdn13oCMjsHGENR5BzV7SamKh5E,108795
5
+ src/c/triangle.c,sha256=NrJs0FShDlaITvlqU1kbfGs2knPtZslNneaayE9p13s,625111
6
+ src/c/triangle.h,sha256=RQZ-CSiV5KTmRUhlgHpftXy26nEmEW2_AX7namNtvgI,21909
7
+ src/c/tricall.c,sha256=hr46XKoIgsd1_VT0JQ8k30Z1yZ7Pg8TWXgJ_BLWhGdU,10300
8
+ cytriangle/__init__.py,sha256=kEwfRnZoTHQyXpzGRGT2qSmCNuaFBLOSLXbSoSfTc6I,138
9
+ cytriangle/ctriangle.pxd,sha256=YJL_UQqC-O6tccoYEz6uO02V7U3aqtv0B68K43g9Z9o,877
10
+ cytriangle/cytriangle.c,sha256=oQnUioiSqVJ7h1ftvmeIoyjm-MkSy5D07fSLjR4nhpQ,565376
11
+ cytriangle/cytriangle.pyx,sha256=gOumyTTJe8z-oMhCuPgDp0V2Yy9MootqnJ-HNvMjTWg,9019
12
+ cytriangle/cytriangleio.c,sha256=FZWUvN1xsqq_i6kVxAcsRMBu-wZU1yTgcJ0d2O0P7IM,905593
13
+ cytriangle/cytriangleio.pxd,sha256=0i9ovT56F-4X6p9WnZTOCmtNAD6Jfr3Yw9PnUYbAl_0,100
14
+ cytriangle/cytriangleio.pyx,sha256=mLSi4psbq5fEXjkbVHx6ru3ES3LbQywpu9D-hQ6d01E,22302
15
+ cytriangle/cytriangle.cpython-311-darwin.so,sha256=d4ela41BnPplIyQqUfYhaABH4PwaP_g35hH9IgEDx-k,551600
16
+ cytriangle/cytriangleio.cpython-311-darwin.so,sha256=v8NVe4qhNFR9aVEqGhXMICWH1sDNZYqRdbYhRlEaJJ8,684160
17
+ cytriangle-1.0.3.dist-info/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
18
+ cytriangle-1.0.3.dist-info/METADATA,sha256=vrh8uniYM-KsBEoIa2RrOSpRFkkIaHtk8uDvSYBUxjo,1993
19
+ cytriangle-1.0.3.dist-info/WHEEL,sha256=h9XAMipeFIBqDUT_aBB0JdEY0xFkdkjrW2Vy94TWs4I,106
20
+ cytriangle-1.0.3.dist-info/RECORD,,
src/c/A.poly ADDED
@@ -0,0 +1,62 @@
1
+ 29 2 1 0
2
+ 1 0.200000 -0.776400 -0.57
3
+ 2 0.220000 -0.773200 -0.55
4
+ 3 0.245600 -0.756400 -0.51
5
+ 4 0.277600 -0.702000 -0.53
6
+ 5 0.488800 -0.207600 0.28
7
+ 6 0.504800 -0.207600 0.30
8
+ 7 0.740800 -0.739600 0
9
+ 8 0.756000 -0.761200 -0.01
10
+ 9 0.774400 -0.772400 0
11
+ 10 0.800000 -0.776400 0.02
12
+ 11 0.800000 -0.792400 0.01
13
+ 12 0.579200 -0.792400 -0.21
14
+ 13 0.579200 -0.776400 -0.2
15
+ 14 0.621600 -0.771600 -0.15
16
+ 15 0.633600 -0.762800 -0.13
17
+ 16 0.639200 -0.744400 -0.1
18
+ 17 0.620800 -0.684400 -0.06
19
+ 18 0.587200 -0.604400 -0.01
20
+ 19 0.360800 -0.604400 -0.24
21
+ 20 0.319200 -0.706800 -0.39
22
+ 21 0.312000 -0.739600 -0.43
23
+ 22 0.318400 -0.761200 -0.44
24
+ 23 0.334400 -0.771600 -0.44
25
+ 24 0.371200 -0.776400 -0.41
26
+ 25 0.371200 -0.792400 -0.42
27
+ 26 0.374400 -0.570000 -0.2
28
+ 27 0.574400 -0.570000 0
29
+ 28 0.473600 -0.330800 0.14
30
+ 29 0.200000 -0.792400 -0.59
31
+ 29 0
32
+ 1 29 1
33
+ 2 1 2
34
+ 3 2 3
35
+ 4 3 4
36
+ 5 4 5
37
+ 6 5 6
38
+ 7 6 7
39
+ 8 7 8
40
+ 9 8 9
41
+ 10 9 10
42
+ 11 10 11
43
+ 12 11 12
44
+ 13 12 13
45
+ 14 13 14
46
+ 15 14 15
47
+ 16 15 16
48
+ 17 16 17
49
+ 18 17 18
50
+ 19 18 19
51
+ 20 19 20
52
+ 21 20 21
53
+ 22 21 22
54
+ 23 22 23
55
+ 24 23 24
56
+ 25 24 25
57
+ 26 25 29
58
+ 27 26 27
59
+ 28 27 28
60
+ 29 28 26
61
+ 1
62
+ 1 0.47 -0.5
src/c/README ADDED
@@ -0,0 +1,198 @@
1
+ Triangle
2
+ A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator.
3
+ Version 1.6
4
+
5
+ Show Me
6
+ A Display Program for Meshes and More.
7
+ Version 1.6
8
+
9
+ Copyright 1993, 1995, 1997, 1998, 2002, 2005 Jonathan Richard Shewchuk
10
+ 2360 Woolsey #H
11
+ Berkeley, California 94705-1927
12
+ Please send bugs and comments to jrs@cs.berkeley.edu
13
+
14
+ Created as part of the Quake project (tools for earthquake simulation).
15
+ Supported in part by NSF Grant CMS-9318163 and an NSERC 1967 Scholarship.
16
+ There is no warranty whatsoever. Use at your own risk.
17
+
18
+
19
+ Triangle generates exact Delaunay triangulations, constrained Delaunay
20
+ triangulations, conforming Delaunay triangulations, Voronoi diagrams, and
21
+ high-quality triangular meshes. The latter can be generated with no small
22
+ or large angles, and are thus suitable for finite element analysis.
23
+ Show Me graphically displays the contents of the geometric files used by
24
+ Triangle. Show Me can also write images in PostScript form.
25
+
26
+ Information on the algorithms used by Triangle, including complete
27
+ references, can be found in the comments at the beginning of the triangle.c
28
+ source file. Another listing of these references, with PostScript copies
29
+ of some of the papers, is available from the Web page
30
+
31
+ http://www.cs.cmu.edu/~quake/triangle.research.html
32
+
33
+ ------------------------------------------------------------------------------
34
+
35
+ These programs may be freely redistributed under the condition that the
36
+ copyright notices (including the copy of this notice in the code comments
37
+ and the copyright notice printed when the `-h' switch is selected) are
38
+ not removed, and no compensation is received. Private, research, and
39
+ institutional use is free. You may distribute modified versions of this
40
+ code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT
41
+ IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH
42
+ SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND
43
+ CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS. Distribution of this code as
44
+ part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT
45
+ WITH THE AUTHOR. (If you are not directly supplying this code to a
46
+ customer, and you are instead telling them how they can obtain it for
47
+ free, then you are not required to make any arrangement with me.)
48
+
49
+ ------------------------------------------------------------------------------
50
+
51
+ The files included in this distribution are:
52
+
53
+ README The file you're reading now.
54
+ triangle.c Complete C source code for Triangle.
55
+ showme.c Complete C source code for Show Me.
56
+ triangle.h Include file for calling Triangle from another program.
57
+ tricall.c Sample program that calls Triangle.
58
+ makefile Makefile for compiling Triangle and Show Me.
59
+ A.poly A sample input file.
60
+
61
+ Each of Triangle and Show Me is a single portable C file. The easiest way
62
+ to compile them is to edit and use the included makefile. Before
63
+ compiling, read the makefile, which describes your options, and edit it
64
+ accordingly. You should specify:
65
+
66
+ The source and binary directories.
67
+
68
+ The C compiler and level of optimization.
69
+
70
+ The "correct" directories for include files (especially X include files),
71
+ if necessary.
72
+
73
+ Do you want single precision or double? (The default is double.) Do you
74
+ want to leave out some of Triangle's features to reduce the size of the
75
+ executable file? Investigate the SINGLE, REDUCED, and CDT_ONLY symbols.
76
+
77
+ If yours is not a Unix system, define the NO_TIMER symbol to remove the
78
+ Unix-specific timing code. Also, don't try to compile Show Me; it only
79
+ works with X Windows.
80
+
81
+ If you are compiling on an Intel x86 CPU and using gcc w/Linux or
82
+ Microsoft C, be sure to define the LINUX or CPU86 (for Microsoft) symbol
83
+ during compilation so that the exact arithmetic works right.
84
+
85
+ Once you've done this, type "make" to compile the programs. Alternatively,
86
+ the files are usually easy to compile without a makefile:
87
+
88
+ cc -O -o triangle triangle.c -lm
89
+ cc -O -o showme showme.c -lX11
90
+
91
+ On some systems, the C compiler won't be able to find the X include files
92
+ or libraries, and you'll need to specify an include path or library path:
93
+
94
+ cc -O -I/usr/local/include -o showme showme.c -L/usr/local/lib -lX11
95
+
96
+ Some processors, including Intel x86 family and possibly Motorola 68xxx
97
+ family chips, are IEEE conformant but have extended length internal
98
+ floating-point registers that may defeat Triangle's exact arithmetic
99
+ routines by failing to cause enough roundoff error! Typically, there is a
100
+ way to set these internal registers so that they are rounded off to IEEE
101
+ single or double precision format. I believe (but I'm not certain) that
102
+ Triangle has the right incantations for x86 chips, if you have gcc running
103
+ under Linux (define the LINUX compiler symbol) or Microsoft C (define the
104
+ CPU86 compiler symbol).
105
+
106
+ If you have a different processor or operating system, or if I got the
107
+ incantations wrong, you should check your C compiler or system manuals to
108
+ find out how to configure these internal registers to the precision you are
109
+ using. Otherwise, the exact arithmetic routines won't be exact at all.
110
+ See http://www.cs.cmu.edu/~quake/robust.pc.html for details. Triangle's
111
+ exact arithmetic hasn't a hope of working on machines like the Cray C90 or
112
+ Y-MP, which are not IEEE conformant and have inaccurate rounding.
113
+
114
+ Triangle and Show Me have both text and HTML documentation. The latter is
115
+ illustrated. Find it on the Web at
116
+
117
+ http://www.cs.cmu.edu/~quake/triangle.html
118
+ http://www.cs.cmu.edu/~quake/showme.html
119
+
120
+ Complete text instructions are printed by invoking each program with the
121
+ `-h' switch:
122
+
123
+ triangle -h
124
+ showme -h
125
+
126
+ The instructions are long; you'll probably want to pipe the output to
127
+ `more' or `lpr' or redirect it to a file.
128
+
129
+ Both programs give a short list of command line options if they are invoked
130
+ without arguments (that is, just type `triangle' or `showme').
131
+
132
+ Try out Triangle on the enclosed sample file, A.poly:
133
+
134
+ triangle -p A
135
+ showme A.poly &
136
+
137
+ Triangle will read the Planar Straight Line Graph defined by A.poly, and
138
+ write its constrained Delaunay triangulation to A.1.node and A.1.ele.
139
+ Show Me will display the figure defined by A.poly. There are two buttons
140
+ marked "ele" in the Show Me window; click on the top one. This will cause
141
+ Show Me to load and display the triangulation.
142
+
143
+ For contrast, try running
144
+
145
+ triangle -pq A
146
+
147
+ Now, click on the same "ele" button. A new triangulation will be loaded;
148
+ this one having no angles smaller than 20 degrees.
149
+
150
+ To see a Voronoi diagram, try this:
151
+
152
+ cp A.poly A.node
153
+ triangle -v A
154
+
155
+ Click the "ele" button again. You will see the Delaunay triangulation of
156
+ the points in A.poly, without the segments. Now click the top "voro" button.
157
+ You will see the Voronoi diagram corresponding to that Delaunay triangulation.
158
+ Click the "Reset" button to see the full extent of the diagram.
159
+
160
+ ------------------------------------------------------------------------------
161
+
162
+ If you wish to call Triangle from another program, instructions for doing
163
+ so are contained in the file `triangle.h' (but read Triangle's regular
164
+ instructions first!). Also look at `tricall.c', which provides an example
165
+ of how to call Triangle.
166
+
167
+ Type "make trilibrary" to create triangle.o, a callable object file.
168
+ Alternatively, the object file is usually easy to compile without a
169
+ makefile:
170
+
171
+ cc -DTRILIBRARY -O -c triangle.c
172
+
173
+ Type "make distclean" to remove all the object and executable files created
174
+ by make.
175
+
176
+ ------------------------------------------------------------------------------
177
+
178
+ If you use Triangle, and especially if you use it to accomplish real work,
179
+ I would like very much to hear from you. A short letter or email (to
180
+ jrs@cs.berkeley.edu) describing how you use Triangle will mean a lot to me.
181
+ The more people I know are using this program, the more easily I can
182
+ justify spending time on improvements and on the three-dimensional
183
+ successor to Triangle, which in turn will benefit you. Also, I can put you
184
+ on a list to receive email whenever a new version of Triangle is available.
185
+
186
+ If you use a mesh generated by Triangle or plotted by Show Me in a
187
+ publication, please include an acknowledgment as well. And please spell
188
+ Triangle with a capital `T'! If you want to include a citation, use
189
+ `Jonathan Richard Shewchuk, ``Triangle: Engineering a 2D Quality Mesh
190
+ Generator and Delaunay Triangulator,'' in Applied Computational Geometry:
191
+ Towards Geometric Engineering (Ming C. Lin and Dinesh Manocha, editors),
192
+ volume 1148 of Lecture Notes in Computer Science, pages 203-222,
193
+ Springer-Verlag, Berlin, May 1996. (From the First ACM Workshop on Applied
194
+ Computational Geometry.)'
195
+
196
+
197
+ Jonathan Richard Shewchuk
198
+ July 27, 2005
src/c/makefile ADDED
@@ -0,0 +1,116 @@
1
+ # makefile for Triangle and Show Me
2
+ #
3
+ # Type "make" to compile Triangle and Show Me.
4
+ #
5
+ # After compiling, type "triangle -h" and "showme -h" to read instructions
6
+ # for using each of these programs.
7
+ #
8
+ # Type "make trilibrary" to compile Triangle as an object file (triangle.o).
9
+ #
10
+ # Type "make distclean" to delete all object and executable files.
11
+
12
+ # SRC is the directory in which the C source files are, and BIN is the
13
+ # directory where you want to put the executable programs. By default,
14
+ # both are the current directory.
15
+
16
+ SRC = ./
17
+ BIN = ./
18
+
19
+ # CC should be set to the name of your favorite C compiler.
20
+
21
+ CC = cc
22
+
23
+ # CSWITCHES is a list of all switches passed to the C compiler. I strongly
24
+ # recommend using the best level of optimization. I also strongly
25
+ # recommend timing each level of optimization to see which is the
26
+ # best. For instance, when I had a DEC Alpha using DEC's optimizing
27
+ # compiler, the -O2 switch generated a notably faster version of Triangle
28
+ # than the -O3 switch. Go figure.
29
+ #
30
+ # By default, Triangle and Show Me use double precision floating point
31
+ # numbers. If you prefer single precision, use the -DSINGLE switch.
32
+ # Double precision uses more memory, but improves the resolution of
33
+ # the meshes you can generate with Triangle. It also reduces the
34
+ # likelihood of a floating exception due to overflow. Also, it is
35
+ # much faster than single precision on many architectures. I recommend
36
+ # double precision unless you want to generate a mesh for which you do
37
+ # not have enough memory to use double precision.
38
+ #
39
+ # If yours is not a Unix system, use the -DNO_TIMER switch to eliminate the
40
+ # Unix-specific timer code. Also, don't try to compile Show Me; it only
41
+ # works with X Windows.
42
+ #
43
+ # To get the exact arithmetic to work right on an Intel processor, use the
44
+ # -DCPU86 switch with Microsoft C, or the -DLINUX switch with gcc running
45
+ # on Linux. The floating-point arithmetic might not be robust otherwise.
46
+ # Please see http://www.cs.cmu.edu/~quake/robust.pc.html for details.
47
+ #
48
+ # If you are modifying Triangle, I recommend using the -DSELF_CHECK switch
49
+ # while you are debugging. Defining the SELF_CHECK symbol causes
50
+ # Triangle to include self-checking code. Triangle will execute more
51
+ # slowly, however, so be sure to remove this switch before compiling a
52
+ # production version.
53
+ #
54
+ # If the size of the Triangle binary is important to you, you may wish to
55
+ # generate a reduced version of Triangle. The -DREDUCED switch gets rid
56
+ # of all features that are primarily of research interest. Specifically,
57
+ # defining the REDUCED symbol eliminates the -i, -F, -s, and -C switches.
58
+ # The -DCDT_ONLY switch gets rid of all meshing algorithms above and beyond
59
+ # constrained Delaunay triangulation. Specifically, defining the CDT_ONLY
60
+ # symbol eliminates the -r, -q, -a, -u, -D, -S, and -s switches. The
61
+ # REDUCED and CDT_ONLY symbols may be particularly attractive when Triangle
62
+ # is called by another program that does not need all of Triangle's
63
+ # features; in this case, these switches should appear as part of
64
+ # "TRILIBDEFS" below.
65
+ #
66
+ # On some systems, you may need to include -I/usr/local/include and/or
67
+ # -L/usr/local/lib in the compiler options to ensure that the X include
68
+ # files and libraries that Show Me needs are found. If you get errors
69
+ # like "Can't find include file X11/Xlib.h", you need the former switch.
70
+ # Try compiling without them first; add them if that fails.
71
+ #
72
+ # An example CSWITCHES line is:
73
+ #
74
+ # CSWITCHES = -O -DNO_TIMER -DLINUX -I/usr/X11R6/include -L/usr/X11R6/lib
75
+
76
+ CSWITCHES = -O -DLINUX -I/usr/X11R6/include -L/usr/X11R6/lib
77
+
78
+ # TRILIBDEFS is a list of definitions used to compile an object code version
79
+ # of Triangle (triangle.o) to be called by another program. The file
80
+ # "triangle.h" contains detailed information on how to call triangle.o.
81
+ #
82
+ # The -DTRILIBRARY should always be used when compiling Triangle into an
83
+ # object file.
84
+ #
85
+ # An example TRILIBDEFS line is:
86
+ #
87
+ # TRILIBDEFS = -DTRILIBRARY -DREDUCED -DCDT_ONLY
88
+
89
+ TRILIBDEFS = -DTRILIBRARY
90
+
91
+ # RM should be set to the name of your favorite rm (file deletion program).
92
+
93
+ RM = /bin/rm
94
+
95
+ # The action starts here.
96
+
97
+ all: $(BIN)triangle $(BIN)showme
98
+
99
+ trilibrary: $(BIN)triangle.o $(BIN)tricall
100
+
101
+ $(BIN)triangle: $(SRC)triangle.c
102
+ $(CC) $(CSWITCHES) -o $(BIN)triangle $(SRC)triangle.c -lm
103
+
104
+ $(BIN)tricall: $(BIN)tricall.c $(BIN)triangle.o
105
+ $(CC) $(CSWITCHES) -o $(BIN)tricall $(SRC)tricall.c \
106
+ $(BIN)triangle.o -lm
107
+
108
+ $(BIN)triangle.o: $(SRC)triangle.c $(SRC)triangle.h
109
+ $(CC) $(CSWITCHES) $(TRILIBDEFS) -c -o $(BIN)triangle.o \
110
+ $(SRC)triangle.c
111
+
112
+ $(BIN)showme: $(SRC)showme.c
113
+ $(CC) $(CSWITCHES) -o $(BIN)showme $(SRC)showme.c -lX11
114
+
115
+ distclean:
116
+ $(RM) $(BIN)triangle $(BIN)triangle.o $(BIN)tricall $(BIN)showme