#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <sys/time.h>

Go to the source code of this file.
Classes | |
| struct | otri |
| struct | osub |
| struct | badsubseg |
| struct | badtriang |
| struct | flipstacker |
| struct | event |
| struct | splaynode |
| struct | memorypool |
| struct | mesh |
| struct | behavior |
Defines | |
| #define | REAL double |
| #define | INEXACT |
| #define | FILENAMESIZE 2048 |
| #define | INPUTLINESIZE 1024 |
| #define | TRIPERBLOCK 4092 |
| #define | SUBSEGPERBLOCK 508 |
| #define | VERTEXPERBLOCK 4092 |
| #define | VIRUSPERBLOCK 1020 |
| #define | BADSUBSEGPERBLOCK 252 |
| #define | BADTRIPERBLOCK 4092 |
| #define | FLIPSTACKERPERBLOCK 252 |
| #define | SPLAYNODEPERBLOCK 508 |
| #define | INPUTVERTEX 0 |
| #define | SEGMENTVERTEX 1 |
| #define | FREEVERTEX 2 |
| #define | DEADVERTEX -32768 |
| #define | UNDEADVERTEX -32767 |
| #define | VOID int |
| #define | SAMPLEFACTOR 11 |
| #define | SAMPLERATE 10 |
| #define | PI 3.141592653589793238462643383279502884197169399375105820974944592308 |
| #define | SQUAREROOTTWO 1.4142135623730950488016887242096980785696718753769480732 |
| #define | ONETHIRD 0.333333333333333333333333333333333333333333333333333333333333 |
| #define | decode(ptr, otri) |
| #define | encode(otri) (triangle) ((unsigned long) (otri).tri | (unsigned long) (otri).orient) |
| #define | sym(otri1, otri2) |
| #define | symself(otri) |
| #define | lnext(otri1, otri2) |
| #define | lnextself(otri) (otri).orient = plus1mod3[(otri).orient] |
| #define | lprev(otri1, otri2) |
| #define | lprevself(otri) (otri).orient = minus1mod3[(otri).orient] |
| #define | onext(otri1, otri2) |
| #define | onextself(otri) |
| #define | oprev(otri1, otri2) |
| #define | oprevself(otri) |
| #define | dnext(otri1, otri2) |
| #define | dnextself(otri) |
| #define | dprev(otri1, otri2) |
| #define | dprevself(otri) |
| #define | rnext(otri1, otri2) |
| #define | rnextself(otri) |
| #define | rprev(otri1, otri2) |
| #define | rprevself(otri) |
| #define | org(otri, vertexptr) vertexptr = (vertex) (otri).tri[plus1mod3[(otri).orient] + 3] |
| #define | dest(otri, vertexptr) vertexptr = (vertex) (otri).tri[minus1mod3[(otri).orient] + 3] |
| #define | apex(otri, vertexptr) vertexptr = (vertex) (otri).tri[(otri).orient + 3] |
| #define | setorg(otri, vertexptr) (otri).tri[plus1mod3[(otri).orient] + 3] = (triangle) vertexptr |
| #define | setdest(otri, vertexptr) (otri).tri[minus1mod3[(otri).orient] + 3] = (triangle) vertexptr |
| #define | setapex(otri, vertexptr) (otri).tri[(otri).orient + 3] = (triangle) vertexptr |
| #define | bond(otri1, otri2) |
| #define | dissolve(otri) (otri).tri[(otri).orient] = (triangle) m->dummytri |
| #define | otricopy(otri1, otri2) |
| #define | otriequal(otri1, otri2) |
| #define | infect(otri) |
| #define | uninfect(otri) |
| #define | infected(otri) (((unsigned long) (otri).tri[6] & (unsigned long) 2l) != 0l) |
| #define | elemattribute(otri, attnum) ((REAL *) (otri).tri)[m->elemattribindex + (attnum)] |
| #define | setelemattribute(otri, attnum, value) ((REAL *) (otri).tri)[m->elemattribindex + (attnum)] = value |
| #define | areabound(otri) ((REAL *) (otri).tri)[m->areaboundindex] |
| #define | setareabound(otri, value) ((REAL *) (otri).tri)[m->areaboundindex] = value |
| #define | deadtri(tria) ((tria)[1] == (triangle) NULL) |
| #define | killtri(tria) |
| #define | sdecode(sptr, osub) |
| #define | sencode(osub) (subseg) ((unsigned long) (osub).ss | (unsigned long) (osub).ssorient) |
| #define | ssym(osub1, osub2) |
| #define | ssymself(osub) (osub).ssorient = 1 - (osub).ssorient |
| #define | spivot(osub1, osub2) |
| #define | spivotself(osub) |
| #define | snext(osub1, osub2) |
| #define | snextself(osub) |
| #define | sorg(osub, vertexptr) vertexptr = (vertex) (osub).ss[2 + (osub).ssorient] |
| #define | sdest(osub, vertexptr) vertexptr = (vertex) (osub).ss[3 - (osub).ssorient] |
| #define | setsorg(osub, vertexptr) (osub).ss[2 + (osub).ssorient] = (subseg) vertexptr |
| #define | setsdest(osub, vertexptr) (osub).ss[3 - (osub).ssorient] = (subseg) vertexptr |
| #define | segorg(osub, vertexptr) vertexptr = (vertex) (osub).ss[4 + (osub).ssorient] |
| #define | segdest(osub, vertexptr) vertexptr = (vertex) (osub).ss[5 - (osub).ssorient] |
| #define | setsegorg(osub, vertexptr) (osub).ss[4 + (osub).ssorient] = (subseg) vertexptr |
| #define | setsegdest(osub, vertexptr) (osub).ss[5 - (osub).ssorient] = (subseg) vertexptr |
| #define | mark(osub) (* (int *) ((osub).ss + 8)) |
| #define | setmark(osub, value) * (int *) ((osub).ss + 8) = value |
| #define | sbond(osub1, osub2) |
| #define | sdissolve(osub) (osub).ss[(osub).ssorient] = (subseg) m->dummysub |
| #define | subsegcopy(osub1, osub2) |
| #define | subsegequal(osub1, osub2) |
| #define | deadsubseg(sub) ((sub)[1] == (subseg) NULL) |
| #define | killsubseg(sub) |
| #define | tspivot(otri, osub) |
| #define | stpivot(osub, otri) |
| #define | tsbond(otri, osub) |
| #define | tsdissolve(otri) (otri).tri[6 + (otri).orient] = (triangle) m->dummysub |
| #define | stdissolve(osub) (osub).ss[6 + (osub).ssorient] = (subseg) m->dummytri |
| #define | vertexmark(vx) ((int *) (vx))[m->vertexmarkindex] |
| #define | setvertexmark(vx, value) ((int *) (vx))[m->vertexmarkindex] = value |
| #define | vertextype(vx) ((int *) (vx))[m->vertexmarkindex + 1] |
| #define | setvertextype(vx, value) ((int *) (vx))[m->vertexmarkindex + 1] = value |
| #define | vertex2tri(vx) ((triangle *) (vx))[m->vertex2triindex] |
| #define | setvertex2tri(vx, value) ((triangle *) (vx))[m->vertex2triindex] = value |
| #define | STARTINDEX 1 |
| #define | Absolute(a) ((a) >= 0.0 ? (a) : -(a)) |
| #define | Fast_Two_Sum_Tail(a, b, x, y) |
| #define | Fast_Two_Sum(a, b, x, y) |
| #define | Two_Sum_Tail(a, b, x, y) |
| #define | Two_Sum(a, b, x, y) |
| #define | Two_Diff_Tail(a, b, x, y) |
| #define | Two_Diff(a, b, x, y) |
| #define | Split(a, ahi, alo) |
| #define | Two_Product_Tail(a, b, x, y) |
| #define | Two_Product(a, b, x, y) |
| #define | Two_Product_Presplit(a, b, bhi, blo, x, y) |
| #define | Square_Tail(a, x, y) |
| #define | Square(a, x, y) |
| #define | Two_One_Sum(a1, a0, b, x2, x1, x0) |
| #define | Two_One_Diff(a1, a0, b, x2, x1, x0) |
| #define | Two_Two_Sum(a1, a0, b1, b0, x3, x2, x1, x0) |
| #define | Two_Two_Diff(a1, a0, b1, b0, x3, x2, x1, x0) |
| #define | Two_One_Product(a1, a0, b, x3, x2, x1, x0) |
Typedefs | |
| typedef REAL ** | triangle |
| typedef REAL ** | subseg |
| typedef REAL * | vertex |
Enumerations | |
| enum | locateresult { INTRIANGLE, ONEDGE, ONVERTEX, OUTSIDE, INTRIANGLE, ONEDGE, ONVERTEX, OUTSIDE } |
| enum | insertvertexresult { SUCCESSFULVERTEX, ENCROACHINGVERTEX, VIOLATINGVERTEX, DUPLICATEVERTEX, SUCCESSFULVERTEX, ENCROACHINGVERTEX, VIOLATINGVERTEX, DUPLICATEVERTEX } |
| enum | finddirectionresult { WITHIN, LEFTCOLLINEAR, RIGHTCOLLINEAR, WITHIN, LEFTCOLLINEAR, RIGHTCOLLINEAR } |
Functions | |
| char * | readline () |
| char * | findfield () |
| int | triunsuitable (vertex triorg, vertex tridest, vertex triapex, REAL area) |
| void | triexit (int status) |
| VOID * | trimalloc (int size) |
| void | trifree (VOID *memptr) |
| void | syntax () |
| void | info () |
| void | internalerror () |
| void | parsecommandline (int argc, char **argv, struct behavior *b) |
| void | printtriangle (struct mesh *m, struct behavior *b, struct otri *t) |
| void | printsubseg (struct mesh *m, struct behavior *b, struct osub *s) |
| void | poolzero (struct memorypool *pool) |
| void | poolrestart (struct memorypool *pool) |
| void | poolinit (struct memorypool *pool, int bytecount, int itemcount, int firstitemcount, int alignment) |
| void | pooldeinit (struct memorypool *pool) |
| VOID * | poolalloc (struct memorypool *pool) |
| void | pooldealloc (struct memorypool *pool, VOID *dyingitem) |
| void | traversalinit (struct memorypool *pool) |
| VOID * | traverse (struct memorypool *pool) |
| void | dummyinit (struct mesh *m, struct behavior *b, int trianglebytes, int subsegbytes) |
| void | initializevertexpool (struct mesh *m, struct behavior *b) |
| void | initializetrisubpools (struct mesh *m, struct behavior *b) |
| void | triangledealloc (struct mesh *m, triangle *dyingtriangle) |
| triangle * | triangletraverse (struct mesh *m) |
| void | subsegdealloc (struct mesh *m, subseg *dyingsubseg) |
| subseg * | subsegtraverse (struct mesh *m) |
| void | vertexdealloc (struct mesh *m, vertex dyingvertex) |
| vertex | vertextraverse (struct mesh *m) |
| void | badsubsegdealloc (struct mesh *m, struct badsubseg *dyingseg) |
| struct badsubseg * | badsubsegtraverse (struct mesh *m) |
| vertex | getvertex (struct mesh *m, struct behavior *b, int number) |
| void | triangledeinit (struct mesh *m, struct behavior *b) |
| void | maketriangle (struct mesh *m, struct behavior *b, struct otri *newotri) |
| void | makesubseg (struct mesh *m, struct osub *newsubseg) |
| void | exactinit () |
| int | fast_expansion_sum_zeroelim (int elen, REAL *e, int flen, REAL *f, REAL *h) |
| int | scale_expansion_zeroelim (int elen, REAL *e, REAL b, REAL *h) |
| REAL | estimate (int elen, REAL *e) |
| REAL | counterclockwiseadapt (vertex pa, vertex pb, vertex pc, REAL detsum) |
| REAL | counterclockwise (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc) |
| REAL | incircleadapt (vertex pa, vertex pb, vertex pc, vertex pd, REAL permanent) |
| REAL | incircle (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc, vertex pd) |
| REAL | orient3dadapt (vertex pa, vertex pb, vertex pc, vertex pd, REAL aheight, REAL bheight, REAL cheight, REAL dheight, REAL permanent) |
| REAL | orient3d (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc, vertex pd, REAL aheight, REAL bheight, REAL cheight, REAL dheight) |
| REAL | nonregular (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc, vertex pd) |
| void | findcircumcenter (struct mesh *m, struct behavior *b, vertex torg, vertex tdest, vertex tapex, vertex circumcenter, REAL *xi, REAL *eta, int offcenter) |
| void | triangleinit (struct mesh *m) |
| unsigned long | randomnation (unsigned int choices) |
| void | checkmesh (struct mesh *m, struct behavior *b) |
| void | checkdelaunay (struct mesh *m, struct behavior *b) |
| void | enqueuebadtriang (struct mesh *m, struct behavior *b, struct badtriang *badtri) |
| void | enqueuebadtri (struct mesh *m, struct behavior *b, struct otri *enqtri, REAL minedge, vertex enqapex, vertex enqorg, vertex enqdest) |
| struct badtriang * | dequeuebadtriang (struct mesh *m) |
| int | checkseg4encroach (struct mesh *m, struct behavior *b, struct osub *testsubseg) |
| void | testtriangle (struct mesh *m, struct behavior *b, struct otri *testtri) |
| void | makevertexmap (struct mesh *m, struct behavior *b) |
| enum locateresult | preciselocate (struct mesh *m, struct behavior *b, vertex searchpoint, struct otri *searchtri, int stopatsubsegment) |
| enum locateresult | locate (struct mesh *m, struct behavior *b, vertex searchpoint, struct otri *searchtri) |
| void | insertsubseg (struct mesh *m, struct behavior *b, struct otri *tri, int subsegmark) |
| void | flip (struct mesh *m, struct behavior *b, struct otri *flipedge) |
| void | unflip (struct mesh *m, struct behavior *b, struct otri *flipedge) |
| enum insertvertexresult | insertvertex (struct mesh *m, struct behavior *b, vertex newvertex, struct otri *searchtri, struct osub *splitseg, int segmentflaws, int triflaws) |
| void | triangulatepolygon (struct mesh *m, struct behavior *b, struct otri *firstedge, struct otri *lastedge, int edgecount, int doflip, int triflaws) |
| void | deletevertex (struct mesh *m, struct behavior *b, struct otri *deltri) |
| void | undovertex (struct mesh *m, struct behavior *b) |
| void | vertexsort (vertex *sortarray, int arraysize) |
| void | vertexmedian (vertex *sortarray, int arraysize, int median, int axis) |
| void | alternateaxes (vertex *sortarray, int arraysize, int axis) |
| void | mergehulls (struct mesh *m, struct behavior *b, struct otri *farleft, struct otri *innerleft, struct otri *innerright, struct otri *farright, int axis) |
| void | divconqrecurse (struct mesh *m, struct behavior *b, vertex *sortarray, int vertices, int axis, struct otri *farleft, struct otri *farright) |
| long | removeghosts (struct mesh *m, struct behavior *b, struct otri *startghost) |
| long | divconqdelaunay (struct mesh *m, struct behavior *b) |
| void | boundingbox (struct mesh *m, struct behavior *b) |
| long | removebox (struct mesh *m, struct behavior *b) |
| long | incrementaldelaunay (struct mesh *m, struct behavior *b) |
| void | eventheapinsert (struct event **heap, int heapsize, struct event *newevent) |
| void | eventheapify (struct event **heap, int heapsize, int eventnum) |
| void | eventheapdelete (struct event **heap, int heapsize, int eventnum) |
| void | createeventheap (struct mesh *m, struct event ***eventheap, struct event **events, struct event **freeevents) |
| int | rightofhyperbola (struct mesh *m, struct otri *fronttri, vertex newsite) |
| REAL | circletop (struct mesh *m, vertex pa, vertex pb, vertex pc, REAL ccwabc) |
| void | check4deadevent (struct otri *checktri, struct event **freeevents, struct event **eventheap, int *heapsize) |
| struct splaynode * | splay (struct mesh *m, struct splaynode *splaytree, vertex searchpoint, struct otri *searchtri) |
| struct splaynode * | splayinsert (struct mesh *m, struct splaynode *splayroot, struct otri *newkey, vertex searchpoint) |
| struct splaynode * | circletopinsert (struct mesh *m, struct behavior *b, struct splaynode *splayroot, struct otri *newkey, vertex pa, vertex pb, vertex pc, REAL topy) |
| struct splaynode * | frontlocate (struct mesh *m, struct splaynode *splayroot, struct otri *bottommost, vertex searchvertex, struct otri *searchtri, int *farright) |
| long | sweeplinedelaunay (struct mesh *m, struct behavior *b) |
| long | delaunay (struct mesh *m, struct behavior *b) |
| long | reconstruct (struct mesh *m, struct behavior *b, char *elefilename, char *areafilename, char *polyfilename, FILE *polyfile) |
| enum finddirectionresult | finddirection (struct mesh *m, struct behavior *b, struct otri *searchtri, vertex searchpoint) |
| void | segmentintersection (struct mesh *m, struct behavior *b, struct otri *splittri, struct osub *splitsubseg, vertex endpoint2) |
| int | scoutsegment (struct mesh *m, struct behavior *b, struct otri *searchtri, vertex endpoint2, int newmark) |
| void | conformingedge (struct mesh *m, struct behavior *b, vertex endpoint1, vertex endpoint2, int newmark) |
| void | delaunayfixup (struct mesh *m, struct behavior *b, struct otri *fixuptri, int leftside) |
| void | constrainededge (struct mesh *m, struct behavior *b, struct otri *starttri, vertex endpoint2, int newmark) |
| void | insertsegment (struct mesh *m, struct behavior *b, vertex endpoint1, vertex endpoint2, int newmark) |
| void | markhull (struct mesh *m, struct behavior *b) |
| void | formskeleton (struct mesh *m, struct behavior *b, FILE *polyfile, char *polyfilename) |
| void | infecthull (struct mesh *m, struct behavior *b) |
| void | plague (struct mesh *m, struct behavior *b) |
| void | regionplague (struct mesh *m, struct behavior *b, REAL attribute, REAL area) |
| void | carveholes (struct mesh *m, struct behavior *b, REAL *holelist, int holes, REAL *regionlist, int regions) |
| void | tallyencs (struct mesh *m, struct behavior *b) |
| void | precisionerror () |
| void | splitencsegs (struct mesh *m, struct behavior *b, int triflaws) |
| void | tallyfaces (struct mesh *m, struct behavior *b) |
| void | splittriangle (struct mesh *m, struct behavior *b, struct badtriang *badtri) |
| void | enforcequality (struct mesh *m, struct behavior *b) |
| void | highorder (struct mesh *m, struct behavior *b) |
| char * | readline (char *string, FILE *infile, char *infilename) |
| char * | findfield (char *string) |
| void | readnodes (struct mesh *m, struct behavior *b, char *nodefilename, char *polyfilename, FILE **polyfile) |
| void | readholes (struct mesh *m, struct behavior *b, FILE *polyfile, char *polyfilename, REAL **hlist, int *holes, REAL **rlist, int *regions) |
| void | finishfile (FILE *outfile, int argc, char **argv) |
| void | writenodes (struct mesh *m, struct behavior *b, char *nodefilename, int argc, char **argv) |
| void | numbernodes (struct mesh *m, struct behavior *b) |
| void | writeelements (struct mesh *m, struct behavior *b, char *elefilename, int argc, char **argv) |
| void | writepoly (struct mesh *m, struct behavior *b, char *polyfilename, REAL *holelist, int holes, REAL *regionlist, int regions, int argc, char **argv) |
| void | writeedges (struct mesh *m, struct behavior *b, char *edgefilename, int argc, char **argv) |
| void | writevoronoi (struct mesh *m, struct behavior *b, char *vnodefilename, char *vedgefilename, int argc, char **argv) |
| void | writeneighbors (struct mesh *m, struct behavior *b, char *neighborfilename, int argc, char **argv) |
| void | writeoff (struct mesh *m, struct behavior *b, char *offfilename, int argc, char **argv) |
| void | quality_statistics (struct mesh *m, struct behavior *b) |
| void | statistics (struct mesh *m, struct behavior *b) |
| int | main (int argc, char **argv) |
Variables | |
| REAL | splitter |
| REAL | epsilon |
| REAL | resulterrbound |
| REAL | ccwerrboundA |
| REAL | ccwerrboundB |
| REAL | ccwerrboundC |
| REAL | iccerrboundA |
| REAL | iccerrboundB |
| REAL | iccerrboundC |
| REAL | o3derrboundA |
| REAL | o3derrboundB |
| REAL | o3derrboundC |
| unsigned long | randomseed |
| int | plus1mod3 [3] = {1, 2, 0} |
| int | minus1mod3 [3] = {2, 0, 1} |
We use the <autogenerated> tag to ignore it from our Doxygen checker.
Definition in file triangle_orig.c.
| #define Absolute | ( | a | ) | ((a) >= 0.0 ? (a) : -(a)) |
Definition at line 4759 of file triangle_orig.c.
| #define bond | ( | otri1, | |||
| otri2 | ) |
Value:
(otri1).tri[(otri1).orient] = encode(otri2); \ (otri2).tri[(otri2).orient] = encode(otri1)
Definition at line 1092 of file triangle_orig.c.
| #define decode | ( | ptr, | |||
| otri | ) |
Value:
(otri).orient = (int) ((unsigned long) (ptr) & (unsigned long) 3l); \ (otri).tri = (triangle *) \ ((unsigned long) (ptr) ^ (unsigned long) (otri).orient)
Definition at line 947 of file triangle_orig.c.
| #define dnext | ( | otri1, | |||
| otri2 | ) |
| #define dnextself | ( | otri | ) |
| #define dprev | ( | otri1, | |||
| otri2 | ) |
| #define dprevself | ( | otri | ) |
| #define Fast_Two_Sum | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
x = (REAL) (a + b); \ Fast_Two_Sum_Tail(a, b, x, y)
Definition at line 4779 of file triangle_orig.c.
| #define Fast_Two_Sum_Tail | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
| #define infect | ( | otri | ) |
Value:
(otri).tri[6] = (triangle) \
((unsigned long) (otri).tri[6] | (unsigned long) 2l)
Definition at line 1119 of file triangle_orig.c.
| #define killsubseg | ( | sub | ) |
Value:
(sub)[1] = (subseg) NULL; \ (sub)[2] = (subseg) NULL
Definition at line 1277 of file triangle_orig.c.
| #define killtri | ( | tria | ) |
Value:
(tria)[1] = (triangle) NULL; \ (tria)[3] = (triangle) NULL
Definition at line 1154 of file triangle_orig.c.
| #define lnext | ( | otri1, | |||
| otri2 | ) |
Value:
(otri2).tri = (otri1).tri; \ (otri2).orient = plus1mod3[(otri1).orient]
Definition at line 977 of file triangle_orig.c.
| #define lprev | ( | otri1, | |||
| otri2 | ) |
Value:
(otri2).tri = (otri1).tri; \ (otri2).orient = minus1mod3[(otri1).orient]
Definition at line 986 of file triangle_orig.c.
| #define onext | ( | otri1, | |||
| otri2 | ) |
| #define onextself | ( | otri | ) |
| #define oprev | ( | otri1, | |||
| otri2 | ) |
| #define oprevself | ( | otri | ) |
| #define otricopy | ( | otri1, | |||
| otri2 | ) |
Value:
(otri2).tri = (otri1).tri; \ (otri2).orient = (otri1).orient
Definition at line 1106 of file triangle_orig.c.
| #define otriequal | ( | otri1, | |||
| otri2 | ) |
Value:
(((otri1).tri == (otri2).tri) && \ ((otri1).orient == (otri2).orient))
Definition at line 1112 of file triangle_orig.c.
| #define rnext | ( | otri1, | |||
| otri2 | ) |
Value:
sym(otri1, otri2); \ lnextself(otri2); \ symself(otri2);
Definition at line 1045 of file triangle_orig.c.
| #define rnextself | ( | otri | ) |
Value:
symself(otri); \ lnextself(otri); \ symself(otri);
Definition at line 1050 of file triangle_orig.c.
| #define rprev | ( | otri1, | |||
| otri2 | ) |
Value:
sym(otri1, otri2); \ lprevself(otri2); \ symself(otri2);
Definition at line 1059 of file triangle_orig.c.
| #define rprevself | ( | otri | ) |
Value:
symself(otri); \ lprevself(otri); \ symself(otri);
Definition at line 1064 of file triangle_orig.c.
| #define sbond | ( | osub1, | |||
| osub2 | ) |
Value:
(osub1).ss[(osub1).ssorient] = sencode(osub2); \ (osub2).ss[(osub2).ssorient] = sencode(osub1)
Definition at line 1248 of file triangle_orig.c.
| #define sdecode | ( | sptr, | |||
| osub | ) |
Value:
(osub).ssorient = (int) ((unsigned long) (sptr) & (unsigned long) 1l); \ (osub).ss = (subseg *) \ ((unsigned long) (sptr) & ~ (unsigned long) 3l)
Definition at line 1167 of file triangle_orig.c.
| #define snext | ( | osub1, | |||
| osub2 | ) |
Value:
sptr = (osub1).ss[1 - (osub1).ssorient]; \ sdecode(sptr, osub2)
Definition at line 1202 of file triangle_orig.c.
| #define snextself | ( | osub | ) |
Value:
sptr = (osub).ss[1 - (osub).ssorient]; \ sdecode(sptr, osub)
Definition at line 1206 of file triangle_orig.c.
| #define spivot | ( | osub1, | |||
| osub2 | ) |
Value:
sptr = (osub1).ss[(osub1).ssorient]; \ sdecode(sptr, osub2)
Definition at line 1191 of file triangle_orig.c.
| #define spivotself | ( | osub | ) |
Value:
sptr = (osub).ss[(osub).ssorient]; \ sdecode(sptr, osub)
Definition at line 1195 of file triangle_orig.c.
| #define Split | ( | a, | |||
| ahi, | |||||
| alo | ) |
Value:
c = (REAL) (splitter * a); \ abig = (REAL) (c - a); \ ahi = c - abig; \ alo = a - ahi
Definition at line 4805 of file triangle_orig.c.
| #define Square | ( | a, | |||
| x, | |||||
| y | ) |
| #define Square_Tail | ( | a, | |||
| x, | |||||
| y | ) |
Value:
Split(a, ahi, alo); \ err1 = x - (ahi * ahi); \ err3 = err1 - ((ahi + ahi) * alo); \ y = (alo * alo) - err3
Definition at line 4836 of file triangle_orig.c.
| #define ssym | ( | osub1, | |||
| osub2 | ) |
Value:
(osub2).ss = (osub1).ss; \ (osub2).ssorient = 1 - (osub1).ssorient
Definition at line 1181 of file triangle_orig.c.
| #define stpivot | ( | osub, | |||
| otri | ) |
Value:
ptr = (triangle) (osub).ss[6 + (osub).ssorient]; \ decode(ptr, otri)
Definition at line 1294 of file triangle_orig.c.
| #define subsegcopy | ( | osub1, | |||
| osub2 | ) |
Value:
(osub2).ss = (osub1).ss; \ (osub2).ssorient = (osub1).ssorient
Definition at line 1260 of file triangle_orig.c.
| #define subsegequal | ( | osub1, | |||
| osub2 | ) |
Value:
(((osub1).ss == (osub2).ss) && \ ((osub1).ssorient == (osub2).ssorient))
Definition at line 1266 of file triangle_orig.c.
| #define sym | ( | otri1, | |||
| otri2 | ) |
Value:
ptr = (otri1).tri[(otri1).orient]; \ decode(ptr, otri2);
Definition at line 967 of file triangle_orig.c.
| #define symself | ( | otri | ) |
Value:
ptr = (otri).tri[(otri).orient]; \ decode(ptr, otri);
Definition at line 971 of file triangle_orig.c.
| #define tsbond | ( | otri, | |||
| osub | ) |
Value:
(otri).tri[6 + (otri).orient] = (triangle) sencode(osub); \ (osub).ss[6 + (osub).ssorient] = (subseg) encode(otri)
Definition at line 1300 of file triangle_orig.c.
| #define tspivot | ( | otri, | |||
| osub | ) |
Value:
sptr = (subseg) (otri).tri[6 + (otri).orient]; \ sdecode(sptr, osub)
Definition at line 1287 of file triangle_orig.c.
| #define Two_Diff | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
x = (REAL) (a - b); \ Two_Diff_Tail(a, b, x, y)
Definition at line 4801 of file triangle_orig.c.
| #define Two_Diff_Tail | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
bvirt = (REAL) (a - x); \ avirt = x + bvirt; \ bround = bvirt - b; \ around = a - avirt; \ y = around + bround
Definition at line 4794 of file triangle_orig.c.
| #define Two_One_Diff | ( | a1, | |||
| a0, | |||||
| b, | |||||
| x2, | |||||
| x1, | |||||
| x0 | ) |
Value:
Two_Diff(a0, b , _i, x0); \ Two_Sum( a1, _i, x2, x1)
Definition at line 4853 of file triangle_orig.c.
| #define Two_One_Product | ( | a1, | |||
| a0, | |||||
| b, | |||||
| x3, | |||||
| x2, | |||||
| x1, | |||||
| x0 | ) |
Value:
Split(b, bhi, blo); \ Two_Product_Presplit(a0, b, bhi, blo, _i, x0); \ Two_Product_Presplit(a1, b, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, x1); \ Fast_Two_Sum(_j, _k, x3, x2)
Definition at line 4867 of file triangle_orig.c.
| #define Two_One_Sum | ( | a1, | |||
| a0, | |||||
| b, | |||||
| x2, | |||||
| x1, | |||||
| x0 | ) |
Value:
Two_Sum(a0, b , _i, x0); \ Two_Sum(a1, _i, x2, x1)
Definition at line 4849 of file triangle_orig.c.
| #define Two_Product | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
x = (REAL) (a * b); \ Two_Product_Tail(a, b, x, y)
Definition at line 4819 of file triangle_orig.c.
| #define Two_Product_Presplit | ( | a, | |||
| b, | |||||
| bhi, | |||||
| blo, | |||||
| x, | |||||
| y | ) |
Value:
x = (REAL) (a * b); \ Split(a, ahi, alo); \ err1 = x - (ahi * bhi); \ err2 = err1 - (alo * bhi); \ err3 = err2 - (ahi * blo); \ y = (alo * blo) - err3
Definition at line 4826 of file triangle_orig.c.
| #define Two_Product_Tail | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
Split(a, ahi, alo); \ Split(b, bhi, blo); \ err1 = x - (ahi * bhi); \ err2 = err1 - (alo * bhi); \ err3 = err2 - (ahi * blo); \ y = (alo * blo) - err3
Definition at line 4811 of file triangle_orig.c.
| #define Two_Sum | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
x = (REAL) (a + b); \ Two_Sum_Tail(a, b, x, y)
Definition at line 4790 of file triangle_orig.c.
| #define Two_Sum_Tail | ( | a, | |||
| b, | |||||
| x, | |||||
| y | ) |
Value:
bvirt = (REAL) (x - a); \ avirt = x - bvirt; \ bround = b - bvirt; \ around = a - avirt; \ y = around + bround
Definition at line 4783 of file triangle_orig.c.
| #define Two_Two_Diff | ( | a1, | |||
| a0, | |||||
| b1, | |||||
| b0, | |||||
| x3, | |||||
| x2, | |||||
| x1, | |||||
| x0 | ) |
Value:
Two_One_Diff(a1, a0, b0, _j, _0, x0); \ Two_One_Diff(_j, _0, b1, x3, x2, x1)
Definition at line 4861 of file triangle_orig.c.
| #define Two_Two_Sum | ( | a1, | |||
| a0, | |||||
| b1, | |||||
| b0, | |||||
| x3, | |||||
| x2, | |||||
| x1, | |||||
| x0 | ) |
Value:
Two_One_Sum(a1, a0, b0, _j, _0, x0); \ Two_One_Sum(_j, _0, b1, x3, x2, x1)
Definition at line 4857 of file triangle_orig.c.
| #define uninfect | ( | otri | ) |
Value:
(otri).tri[6] = (triangle) \
((unsigned long) (otri).tri[6] & ~ (unsigned long) 2l)
Definition at line 1123 of file triangle_orig.c.
| void boundingbox | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
| void checkmesh | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
| long delaunay | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
Definition at line 11025 of file triangle_orig.c.
| void eventheapinsert | ( | struct event ** | heap, | |
| int | heapsize, | |||
| struct event * | newevent | |||
| ) |
Definition at line 10282 of file triangle_orig.c.
| enum finddirectionresult finddirection | ( | struct mesh * | m, | |
| struct behavior * | b, | |||
| struct otri * | searchtri, | |||
| vertex | searchpoint | |||
| ) |
Definition at line 11604 of file triangle_orig.c.
| void highorder | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
Definition at line 13721 of file triangle_orig.c.
| void infecthull | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
Definition at line 12585 of file triangle_orig.c.
| void insertsubseg | ( | struct mesh * | m, | |
| struct behavior * | b, | |||
| struct otri * | tri, | |||
| int | subsegmark | |||
| ) |
Definition at line 7818 of file triangle_orig.c.
| void maketriangle | ( | struct mesh * | m, | |
| struct behavior * | b, | |||
| struct otri * | newotri | |||
| ) |
| void makevertexmap | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
Definition at line 7407 of file triangle_orig.c.
| void poolzero | ( | struct memorypool * | pool | ) |
| void printtriangle | ( | struct mesh * | m, | |
| struct behavior * | b, | |||
| struct otri * | t | |||
| ) |
| void quality_statistics | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
| char* readline | ( | char * | string, | |
| FILE * | infile, | |||
| char * | infilename | |||
| ) |
| void syntax | ( | ) |
| void tallyencs | ( | struct mesh * | m, | |
| struct behavior * | b | |||
| ) |
Definition at line 13184 of file triangle_orig.c.
| void triangleinit | ( | struct mesh * | m | ) |
| void triexit | ( | int | status | ) |
| int triunsuitable | ( | vertex | triorg, | |
| vertex | tridest, | |||
| vertex | triapex, | |||
| REAL | area | |||
| ) |
Definition at line 1373 of file triangle_orig.c.
| void vertexsort | ( | vertex * | sortarray, | |
| int | arraysize | |||
| ) |
Definition at line 9211 of file triangle_orig.c.
| int plus1mod3[3] = {1, 2, 0} |
Definition at line 937 of file triangle_orig.c.
1.5.5