Logo ROOT  
Reference Guide
triangle.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "triangle.h"
Include dependency graph for triangle.c:

Macros

#define Absolute(a)   ((a) >= 0.0 ? (a) : -(a))
 
#define apex(otri, vertexptr)    vertexptr = (vertex) (otri).tri[(otri).orient + 3]
 
#define areabound(otri)   ((REAL *) (otri).tri)[m->areaboundindex]
 
#define BADSUBSEGPERBLOCK   252
 
#define BADTRIPERBLOCK   4092
 
#define bond(otri1, otri2)
 
#define CDT_ONLY
 
#define deadsubseg(sub)   ((sub)[1] == (subseg) NULL)
 
#define deadtri(tria)   ((tria)[1] == (triangle) NULL)
 
#define DEADVERTEX   -32768
 
#define decode(ptr, otri)
 
#define dest(otri, vertexptr)    vertexptr = (vertex) (otri).tri[minus1mod3[(otri).orient] + 3]
 
#define dissolve(otri)    (otri).tri[(otri).orient] = (triangle) m->dummytri
 
#define dnext(otri1, otri2)
 
#define dnextself(otri)
 
#define dprev(otri1, otri2)
 
#define dprevself(otri)
 
#define elemattribute(otri, attnum)    ((REAL *) (otri).tri)[m->elemattribindex + (attnum)]
 
#define encode(otri)    (triangle) ((unsigned long) (otri).tri | (unsigned long) (otri).orient)
 
#define Fast_Two_Sum(a, b, x, y)
 
#define Fast_Two_Sum_Tail(a, b, x, y)
 
#define FILENAMESIZE   2048
 
#define FLIPSTACKERPERBLOCK   252
 
#define FREEVERTEX   2
 
#define INEXACT   /* Nothing */
 
#define infect(otri)
 
#define infected(otri)    (((unsigned long) (otri).tri[6] & (unsigned long) 2l) != 0l)
 
#define INPUTLINESIZE   1024
 
#define INPUTVERTEX   0
 
#define killsubseg(sub)
 
#define killtri(tria)
 
#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 mark(osub)   (* (int *) ((osub).ss + 8))
 
#define NO_TIMER
 
#define ONETHIRD   0.333333333333333333333333333333333333333333333333333333333333
 
#define onext(otri1, otri2)
 
#define onextself(otri)
 
#define oprev(otri1, otri2)
 
#define oprevself(otri)
 
#define org(otri, vertexptr)    vertexptr = (vertex) (otri).tri[plus1mod3[(otri).orient] + 3]
 
#define otricopy(otri1, otri2)
 
#define otriequal(otri1, otri2)
 
#define PI   3.141592653589793238462643383279502884197169399375105820974944592308
 
#define REDUCED
 
#define rnext(otri1, otri2)
 
#define rnextself(otri)
 
#define rprev(otri1, otri2)
 
#define rprevself(otri)
 
#define SAMPLEFACTOR   11
 
#define SAMPLERATE   10
 
#define sbond(osub1, osub2)
 
#define sdecode(sptr, osub)
 
#define sdest(osub, vertexptr)    vertexptr = (vertex) (osub).ss[3 - (osub).ssorient]
 
#define sdissolve(osub)    (osub).ss[(osub).ssorient] = (subseg) m->dummysub
 
#define segdest(osub, vertexptr)    vertexptr = (vertex) (osub).ss[5 - (osub).ssorient]
 
#define SEGMENTVERTEX   1
 
#define segorg(osub, vertexptr)    vertexptr = (vertex) (osub).ss[4 + (osub).ssorient]
 
#define sencode(osub)    (subseg) ((unsigned long) (osub).ss | (unsigned long) (osub).ssorient)
 
#define setapex(otri, vertexptr)    (otri).tri[(otri).orient + 3] = (triangle) vertexptr
 
#define setareabound(otri, value)    ((REAL *) (otri).tri)[m->areaboundindex] = value
 
#define setdest(otri, vertexptr)    (otri).tri[minus1mod3[(otri).orient] + 3] = (triangle) vertexptr
 
#define setelemattribute(otri, attnum, value)    ((REAL *) (otri).tri)[m->elemattribindex + (attnum)] = value
 
#define setmark(osub, value)    * (int *) ((osub).ss + 8) = value
 
#define setorg(otri, vertexptr)    (otri).tri[plus1mod3[(otri).orient] + 3] = (triangle) vertexptr
 
#define setsdest(osub, vertexptr)    (osub).ss[3 - (osub).ssorient] = (subseg) vertexptr
 
#define setsegdest(osub, vertexptr)    (osub).ss[5 - (osub).ssorient] = (subseg) vertexptr
 
#define setsegorg(osub, vertexptr)    (osub).ss[4 + (osub).ssorient] = (subseg) vertexptr
 
#define setsorg(osub, vertexptr)    (osub).ss[2 + (osub).ssorient] = (subseg) vertexptr
 
#define setvertex2tri(vx, value)    ((triangle *) (vx))[m->vertex2triindex] = value
 
#define setvertexmark(vx, value)    ((int *) (vx))[m->vertexmarkindex] = value
 
#define setvertextype(vx, value)    ((int *) (vx))[m->vertexmarkindex + 1] = value
 
#define snext(osub1, osub2)
 
#define snextself(osub)
 
#define sorg(osub, vertexptr)    vertexptr = (vertex) (osub).ss[2 + (osub).ssorient]
 
#define spivot(osub1, osub2)
 
#define spivotself(osub)
 
#define SPLAYNODEPERBLOCK   508
 
#define Split(a, ahi, alo)
 
#define Square(a, x, y)
 
#define Square_Tail(a, x, y)
 
#define SQUAREROOTTWO   1.4142135623730950488016887242096980785696718753769480732
 
#define ssym(osub1, osub2)
 
#define ssymself(osub)    (osub).ssorient = 1 - (osub).ssorient
 
#define STARTINDEX   0
 
#define stdissolve(osub)    (osub).ss[6 + (osub).ssorient] = (subseg) m->dummytri
 
#define stpivot(osub, otri)
 
#define subsegcopy(osub1, osub2)
 
#define subsegequal(osub1, osub2)
 
#define SUBSEGPERBLOCK   508 /* Number of subsegments allocated at once. */
 
#define sym(otri1, otri2)
 
#define symself(otri)
 
#define TRILIBRARY
 
#define TRIPERBLOCK   4092 /* Number of triangles allocated at once. */
 
#define tsbond(otri, osub)
 
#define tsdissolve(otri)    (otri).tri[6 + (otri).orient] = (triangle) m->dummysub
 
#define tspivot(otri, osub)
 
#define Two_Diff(a, b, x, y)
 
#define Two_Diff_Tail(a, b, x, y)
 
#define Two_One_Diff(a1, a0, b, x2, x1, x0)
 
#define Two_One_Product(a1, a0, b, x3, x2, x1, x0)
 
#define Two_One_Sum(a1, a0, b, x2, x1, x0)
 
#define Two_Product(a, b, x, y)
 
#define Two_Product_Presplit(a, b, bhi, blo, x, y)
 
#define Two_Product_Tail(a, b, x, y)
 
#define Two_Sum(a, b, x, y)
 
#define Two_Sum_Tail(a, b, x, y)
 
#define Two_Two_Diff(a1, a0, b1, b0, x3, x2, x1, x0)
 
#define Two_Two_Sum(a1, a0, b1, b0, x3, x2, x1, x0)
 
#define UNDEADVERTEX   -32767
 
#define uninfect(otri)
 
#define vertex2tri(vx)   ((triangle *) (vx))[m->vertex2triindex]
 
#define vertexmark(vx)   ((int *) (vx))[m->vertexmarkindex]
 
#define VERTEXPERBLOCK   4092 /* Number of vertices allocated at once. */
 
#define vertextype(vx)   ((int *) (vx))[m->vertexmarkindex + 1]
 
#define VIRUSPERBLOCK   1020 /* Number of virus triangles allocated at once. */
 

Typedefs

typedef REAL ** subseg
 
typedef REAL ** triangle
 
typedef REALvertex
 

Enumerations

enum  finddirectionresult { WITHIN , LEFTCOLLINEAR , RIGHTCOLLINEAR }
 
enum  insertvertexresult { SUCCESSFULVERTEX , ENCROACHINGVERTEX , VIOLATINGVERTEX , DUPLICATEVERTEX }
 
enum  locateresult { INTRIANGLE , ONEDGE , ONVERTEX , OUTSIDE }
 

Functions

void alternateaxes (vertex *sortarray, int arraysize, int axis)
 
void carveholes (struct mesh *m, struct behavior *b, REAL *holelist, int holes, REAL *regionlist, int regions)
 
void constrainededge (struct mesh *m, struct behavior *b, struct otri *starttri, vertex endpoint2, int newmark)
 
REAL counterclockwise (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc)
 
REAL counterclockwiseadapt (vertex pa, vertex pb, vertex pc, REAL detsum)
 
long delaunay (struct mesh *m, struct behavior *b)
 
void delaunayfixup (struct mesh *m, struct behavior *b, struct otri *fixuptri, int leftside)
 
long divconqdelaunay (struct mesh *m, struct behavior *b)
 
void divconqrecurse (struct mesh *m, struct behavior *b, vertex *sortarray, int vertices, int axis, struct otri *farleft, struct otri *farright)
 
void dummyinit (struct mesh *m, struct behavior *b, int trianglebytes, int subsegbytes)
 
REAL estimate (int elen, REAL *e)
 
void exactinit ()
 
int fast_expansion_sum_zeroelim (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
void findcircumcenter (struct mesh *m, struct behavior *b, vertex torg, vertex tdest, vertex tapex, vertex circumcenter, REAL *xi, REAL *eta, int offcenter)
 
enum finddirectionresult finddirection (struct mesh *m, struct behavior *b, struct otri *searchtri, vertex searchpoint)
 
void flip (struct mesh *m, struct behavior *b, struct otri *flipedge)
 
void formskeleton (struct mesh *m, struct behavior *b, int *segmentlist, int *segmentmarkerlist, int numberofsegments)
 
vertex getvertex (struct mesh *m, struct behavior *b, int number)
 
void highorder (struct mesh *m, struct behavior *b)
 
REAL incircle (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc, vertex pd)
 
REAL incircleadapt (vertex pa, vertex pb, vertex pc, vertex pd, REAL permanent)
 
void infecthull (struct mesh *m, struct behavior *b)
 
void initializetrisubpools (struct mesh *m, struct behavior *b)
 
void initializevertexpool (struct mesh *m, struct behavior *b)
 
void insertsegment (struct mesh *m, struct behavior *b, vertex endpoint1, vertex endpoint2, int newmark)
 
void insertsubseg (struct mesh *m, struct behavior *b, struct otri *tri, int subsegmark)
 
enum insertvertexresult insertvertex (struct mesh *m, struct behavior *b, vertex newvertex, struct otri *searchtri, struct osub *splitseg, int segmentflaws, int triflaws)
 
void internalerror ()
 
enum locateresult locate (struct mesh *m, struct behavior *b, vertex searchpoint, struct otri *searchtri)
 
void makesubseg (struct mesh *m, struct osub *newsubseg)
 
void maketriangle (struct mesh *m, struct behavior *b, struct otri *newotri)
 
void makevertexmap (struct mesh *m, struct behavior *b)
 
void markhull (struct mesh *m, struct behavior *b)
 
void mergehulls (struct mesh *m, struct behavior *b, struct otri *farleft, struct otri *innerleft, struct otri *innerright, struct otri *farright, int axis)
 
REAL nonregular (struct mesh *m, struct behavior *b, vertex pa, vertex pb, vertex pc, vertex pd)
 
void numbernodes (struct mesh *m, struct behavior *b)
 
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 orient3dadapt (vertex pa, vertex pb, vertex pc, vertex pd, REAL aheight, REAL bheight, REAL cheight, REAL dheight, REAL permanent)
 
void parsecommandline (int argc, char **argv, struct behavior *b)
 
void plague (struct mesh *m, struct behavior *b)
 
VOIDpoolalloc (struct memorypool *pool)
 
void pooldealloc (struct memorypool *pool, VOID *dyingitem)
 
void pooldeinit (struct memorypool *pool)
 
void poolinit (struct memorypool *pool, int bytecount, int itemcount, int firstitemcount, int alignment)
 
void poolrestart (struct memorypool *pool)
 
void poolzero (struct memorypool *pool)
 
enum locateresult preciselocate (struct mesh *m, struct behavior *b, vertex searchpoint, struct otri *searchtri, int stopatsubsegment)
 
void printsubseg (struct mesh *m, struct behavior *b, struct osub *s)
 
void printtriangle (struct mesh *m, struct behavior *b, struct otri *t)
 
void quality_statistics (struct mesh *m, struct behavior *b)
 
unsigned long randomnation (unsigned int choices)
 
void regionplague (struct mesh *m, struct behavior *b, REAL attribute, REAL area)
 
long removeghosts (struct mesh *m, struct behavior *b, struct otri *startghost)
 
int scale_expansion_zeroelim (int elen, REAL *e, REAL b, REAL *h)
 
int scoutsegment (struct mesh *m, struct behavior *b, struct otri *searchtri, vertex endpoint2, int newmark)
 
void segmentintersection (struct mesh *m, struct behavior *b, struct otri *splittri, struct osub *splitsubseg, vertex endpoint2)
 
void statistics (struct mesh *m, struct behavior *b)
 
void subsegdealloc (struct mesh *m, subseg *dyingsubseg)
 
subsegsubsegtraverse (struct mesh *m)
 
void transfernodes (struct mesh *m, struct behavior *b, REAL *pointlist, REAL *pointattriblist, int *pointmarkerlist, int numberofpoints, int numberofpointattribs)
 
void traversalinit (struct memorypool *pool)
 
VOIDtraverse (struct memorypool *pool)
 
void triangledealloc (struct mesh *m, triangle *dyingtriangle)
 
void triangledeinit (struct mesh *m, struct behavior *b)
 
void triangleinit (struct mesh *m)
 
triangletriangletraverse (struct mesh *m)
 
void triangulate (char *triswitches, struct triangulateio *in, struct triangulateio *out, struct triangulateio *vorout)
 
void triangulatepolygon (struct mesh *m, struct behavior *b, struct otri *firstedge, struct otri *lastedge, int edgecount, int doflip, int triflaws)
 
void triexit (int status)
 
void trifree (VOID *memptr)
 
VOIDtrimalloc (int size)
 
int triunsuitable (vertex triorg, vertex tridest, vertex triapex, REAL area)
 
void unflip (struct mesh *m, struct behavior *b, struct otri *flipedge)
 
void vertexdealloc (struct mesh *m, vertex dyingvertex)
 
void vertexmedian (vertex *sortarray, int arraysize, int median, int axis)
 
void vertexsort (vertex *sortarray, int arraysize)
 
vertex vertextraverse (struct mesh *m)
 
void writeedges (struct mesh *m, struct behavior *b, int **edgelist, int **edgemarkerlist)
 
void writeelements (struct mesh *m, struct behavior *b, int **trianglelist, REAL **triangleattriblist)
 
void writeneighbors (struct mesh *m, struct behavior *b, int **neighborlist)
 
void writenodes (struct mesh *m, struct behavior *b, REAL **pointlist, REAL **pointattriblist, int **pointmarkerlist)
 
void writepoly (struct mesh *m, struct behavior *b, int **segmentlist, int **segmentmarkerlist)
 
void writevoronoi (struct mesh *m, struct behavior *b, REAL **vpointlist, REAL **vpointattriblist, int **vpointmarkerlist, int **vedgelist, int **vedgemarkerlist, REAL **vnormlist)
 

Variables

REAL ccwerrboundA
 
REAL ccwerrboundB
 
REAL ccwerrboundC
 
REAL epsilon
 
REAL iccerrboundA
 
REAL iccerrboundB
 
REAL iccerrboundC
 
int minus1mod3 [3] = {2, 0, 1}
 
REAL o3derrboundA
 
REAL o3derrboundB
 
REAL o3derrboundC
 
int plus1mod3 [3] = {1, 2, 0}
 
unsigned long randomseed
 
REAL resulterrbound
 
REAL splitter
 

Macro Definition Documentation

◆ Absolute

#define Absolute (   a)    ((a) >= 0.0 ? (a) : -(a))

Definition at line 4729 of file triangle.c.

◆ apex

#define apex (   otri,
  vertexptr 
)     vertexptr = (vertex) (otri).tri[(otri).orient + 3]

Definition at line 1043 of file triangle.c.

◆ areabound

#define areabound (   otri)    ((REAL *) (otri).tri)[m->areaboundindex]

Definition at line 1107 of file triangle.c.

◆ BADSUBSEGPERBLOCK

#define BADSUBSEGPERBLOCK   252

Definition at line 271 of file triangle.c.

◆ BADTRIPERBLOCK

#define BADTRIPERBLOCK   4092

Definition at line 273 of file triangle.c.

◆ bond

#define bond (   otri1,
  otri2 
)
Value:
(otri1).tri[(otri1).orient] = encode(otri2); \
(otri2).tri[(otri2).orient] = encode(otri1)
#define encode(otri)
Definition: triangle.c:921

Definition at line 1057 of file triangle.c.

◆ CDT_ONLY

#define CDT_ONLY

Definition at line 227 of file triangle.c.

◆ deadsubseg

#define deadsubseg (   sub)    ((sub)[1] == (subseg) NULL)

Definition at line 1240 of file triangle.c.

◆ deadtri

#define deadtri (   tria)    ((tria)[1] == (triangle) NULL)

Definition at line 1117 of file triangle.c.

◆ DEADVERTEX

#define DEADVERTEX   -32768

Definition at line 286 of file triangle.c.

◆ decode

#define decode (   ptr,
  otri 
)
Value:
(otri).orient = (int) ((unsigned long) (ptr) & (unsigned long) 3l); \
(otri).tri = (triangle *) \
((unsigned long) (ptr) ^ (unsigned long) (otri).orient)
REAL ** triangle
Definition: triangle.c:478

Definition at line 912 of file triangle.c.

◆ dest

#define dest (   otri,
  vertexptr 
)     vertexptr = (vertex) (otri).tri[minus1mod3[(otri).orient] + 3]

Definition at line 1040 of file triangle.c.

◆ dissolve

#define dissolve (   otri)     (otri).tri[(otri).orient] = (triangle) m->dummytri

Definition at line 1066 of file triangle.c.

◆ dnext

#define dnext (   otri1,
  otri2 
)
Value:
sym(otri1, otri2); \
lprevself(otri2);
#define sym(otri1, otri2)
Definition: triangle.c:932

Definition at line 986 of file triangle.c.

◆ dnextself

#define dnextself (   otri)
Value:
symself(otri); \
lprevself(otri);
#define symself(otri)
Definition: triangle.c:936

Definition at line 990 of file triangle.c.

◆ dprev

#define dprev (   otri1,
  otri2 
)
Value:
lnext(otri1, otri2); \
symself(otri2);
#define lnext(otri1, otri2)
Definition: triangle.c:942

Definition at line 998 of file triangle.c.

◆ dprevself

#define dprevself (   otri)
Value:
lnextself(otri); \
symself(otri);
#define lnextself(otri)
Definition: triangle.c:946

Definition at line 1002 of file triangle.c.

◆ elemattribute

#define elemattribute (   otri,
  attnum 
)     ((REAL *) (otri).tri)[m->elemattribindex + (attnum)]

Definition at line 1099 of file triangle.c.

◆ encode

#define encode (   otri)     (triangle) ((unsigned long) (otri).tri | (unsigned long) (otri).orient)

Definition at line 921 of file triangle.c.

◆ Fast_Two_Sum

#define Fast_Two_Sum (   a,
  b,
  x,
  y 
)
Value:
x = (REAL) (a + b); \
Fast_Two_Sum_Tail(a, b, x, y)
#define b(i)
Definition: RSha256.hxx:100
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
auto * a
Definition: textangle.C:12
#define REAL
Definition: triangle.h:277

Definition at line 4749 of file triangle.c.

◆ Fast_Two_Sum_Tail

#define Fast_Two_Sum_Tail (   a,
  b,
  x,
  y 
)
Value:
bvirt = x - a; \
y = b - bvirt

Definition at line 4745 of file triangle.c.

◆ FILENAMESIZE

#define FILENAMESIZE   2048

Definition at line 255 of file triangle.c.

◆ FLIPSTACKERPERBLOCK

#define FLIPSTACKERPERBLOCK   252

Definition at line 275 of file triangle.c.

◆ FREEVERTEX

#define FREEVERTEX   2

Definition at line 285 of file triangle.c.

◆ INEXACT

#define INEXACT   /* Nothing */

Definition at line 250 of file triangle.c.

◆ infect

#define infect (   otri)
Value:
(otri).tri[6] = (triangle) \
((unsigned long) (otri).tri[6] | (unsigned long) 2l)

Definition at line 1084 of file triangle.c.

◆ infected

#define infected (   otri)     (((unsigned long) (otri).tri[6] & (unsigned long) 2l) != 0l)

Definition at line 1094 of file triangle.c.

◆ INPUTLINESIZE

#define INPUTLINESIZE   1024

Definition at line 260 of file triangle.c.

◆ INPUTVERTEX

#define INPUTVERTEX   0

Definition at line 283 of file triangle.c.

◆ killsubseg

#define killsubseg (   sub)
Value:
(sub)[1] = (subseg) NULL; \
(sub)[2] = (subseg) NULL
REAL ** subseg
Definition: triangle.c:495

Definition at line 1242 of file triangle.c.

◆ killtri

#define killtri (   tria)
Value:
(tria)[1] = (triangle) NULL; \
(tria)[3] = (triangle) NULL

Definition at line 1119 of file triangle.c.

◆ lnext

#define lnext (   otri1,
  otri2 
)
Value:
(otri2).tri = (otri1).tri; \
(otri2).orient = plus1mod3[(otri1).orient]
int plus1mod3[3]
Definition: triangle.c:902

Definition at line 942 of file triangle.c.

◆ lnextself

#define lnextself (   otri)     (otri).orient = plus1mod3[(otri).orient]

Definition at line 946 of file triangle.c.

◆ lprev

#define lprev (   otri1,
  otri2 
)
Value:
(otri2).tri = (otri1).tri; \
(otri2).orient = minus1mod3[(otri1).orient]
int minus1mod3[3]
Definition: triangle.c:903

Definition at line 951 of file triangle.c.

◆ lprevself

#define lprevself (   otri)     (otri).orient = minus1mod3[(otri).orient]

Definition at line 955 of file triangle.c.

◆ mark

#define mark (   osub)    (* (int *) ((osub).ss + 8))

Definition at line 1206 of file triangle.c.

◆ NO_TIMER

#define NO_TIMER

Definition at line 200 of file triangle.c.

◆ ONETHIRD

#define ONETHIRD   0.333333333333333333333333333333333333333333333333333333333333

Definition at line 313 of file triangle.c.

◆ onext

#define onext (   otri1,
  otri2 
)
Value:
lprev(otri1, otri2); \
symself(otri2);
#define lprev(otri1, otri2)
Definition: triangle.c:951

Definition at line 962 of file triangle.c.

◆ onextself

#define onextself (   otri)
Value:
lprevself(otri); \
symself(otri);
#define lprevself(otri)
Definition: triangle.c:955

Definition at line 966 of file triangle.c.

◆ oprev

#define oprev (   otri1,
  otri2 
)
Value:
sym(otri1, otri2); \
lnextself(otri2);

Definition at line 974 of file triangle.c.

◆ oprevself

#define oprevself (   otri)
Value:
symself(otri); \
lnextself(otri);

Definition at line 978 of file triangle.c.

◆ org

#define org (   otri,
  vertexptr 
)     vertexptr = (vertex) (otri).tri[plus1mod3[(otri).orient] + 3]

Definition at line 1037 of file triangle.c.

◆ otricopy

#define otricopy (   otri1,
  otri2 
)
Value:
(otri2).tri = (otri1).tri; \
(otri2).orient = (otri1).orient

Definition at line 1071 of file triangle.c.

◆ otriequal

#define otriequal (   otri1,
  otri2 
)
Value:
(((otri1).tri == (otri2).tri) && \
((otri1).orient == (otri2).orient))

Definition at line 1077 of file triangle.c.

◆ PI

#define PI   3.141592653589793238462643383279502884197169399375105820974944592308

Definition at line 305 of file triangle.c.

◆ REDUCED

#define REDUCED

Definition at line 226 of file triangle.c.

◆ rnext

#define rnext (   otri1,
  otri2 
)
Value:
sym(otri1, otri2); \
lnextself(otri2); \
symself(otri2);

Definition at line 1010 of file triangle.c.

◆ rnextself

#define rnextself (   otri)
Value:
symself(otri); \
lnextself(otri); \
symself(otri);

Definition at line 1015 of file triangle.c.

◆ rprev

#define rprev (   otri1,
  otri2 
)
Value:
sym(otri1, otri2); \
lprevself(otri2); \
symself(otri2);

Definition at line 1024 of file triangle.c.

◆ rprevself

#define rprevself (   otri)
Value:
symself(otri); \
lprevself(otri); \
symself(otri);

Definition at line 1029 of file triangle.c.

◆ SAMPLEFACTOR

#define SAMPLEFACTOR   11

Definition at line 295 of file triangle.c.

◆ SAMPLERATE

#define SAMPLERATE   10

Definition at line 301 of file triangle.c.

◆ sbond

#define sbond (   osub1,
  osub2 
)
Value:
(osub1).ss[(osub1).ssorient] = sencode(osub2); \
(osub2).ss[(osub2).ssorient] = sencode(osub1)
#define sencode(osub)
Definition: triangle.c:1141

Definition at line 1213 of file triangle.c.

◆ sdecode

#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 1132 of file triangle.c.

◆ sdest

#define sdest (   osub,
  vertexptr 
)     vertexptr = (vertex) (osub).ss[3 - (osub).ssorient]

Definition at line 1181 of file triangle.c.

◆ sdissolve

#define sdissolve (   osub)     (osub).ss[(osub).ssorient] = (subseg) m->dummysub

Definition at line 1220 of file triangle.c.

◆ segdest

#define segdest (   osub,
  vertexptr 
)     vertexptr = (vertex) (osub).ss[5 - (osub).ssorient]

Definition at line 1193 of file triangle.c.

◆ SEGMENTVERTEX

#define SEGMENTVERTEX   1

Definition at line 284 of file triangle.c.

◆ segorg

#define segorg (   osub,
  vertexptr 
)     vertexptr = (vertex) (osub).ss[4 + (osub).ssorient]

Definition at line 1190 of file triangle.c.

◆ sencode

#define sencode (   osub)     (subseg) ((unsigned long) (osub).ss | (unsigned long) (osub).ssorient)

Definition at line 1141 of file triangle.c.

◆ setapex

#define setapex (   otri,
  vertexptr 
)     (otri).tri[(otri).orient + 3] = (triangle) vertexptr

Definition at line 1052 of file triangle.c.

◆ setareabound

#define setareabound (   otri,
  value 
)     ((REAL *) (otri).tri)[m->areaboundindex] = value

Definition at line 1109 of file triangle.c.

◆ setdest

#define setdest (   otri,
  vertexptr 
)     (otri).tri[minus1mod3[(otri).orient] + 3] = (triangle) vertexptr

Definition at line 1049 of file triangle.c.

◆ setelemattribute

#define setelemattribute (   otri,
  attnum,
  value 
)     ((REAL *) (otri).tri)[m->elemattribindex + (attnum)] = value

Definition at line 1102 of file triangle.c.

◆ setmark

#define setmark (   osub,
  value 
)     * (int *) ((osub).ss + 8) = value

Definition at line 1208 of file triangle.c.

◆ setorg

#define setorg (   otri,
  vertexptr 
)     (otri).tri[plus1mod3[(otri).orient] + 3] = (triangle) vertexptr

Definition at line 1046 of file triangle.c.

◆ setsdest

#define setsdest (   osub,
  vertexptr 
)     (osub).ss[3 - (osub).ssorient] = (subseg) vertexptr

Definition at line 1187 of file triangle.c.

◆ setsegdest

#define setsegdest (   osub,
  vertexptr 
)     (osub).ss[5 - (osub).ssorient] = (subseg) vertexptr

Definition at line 1199 of file triangle.c.

◆ setsegorg

#define setsegorg (   osub,
  vertexptr 
)     (osub).ss[4 + (osub).ssorient] = (subseg) vertexptr

Definition at line 1196 of file triangle.c.

◆ setsorg

#define setsorg (   osub,
  vertexptr 
)     (osub).ss[2 + (osub).ssorient] = (subseg) vertexptr

Definition at line 1184 of file triangle.c.

◆ setvertex2tri

#define setvertex2tri (   vx,
  value 
)     ((triangle *) (vx))[m->vertex2triindex] = value

Definition at line 1295 of file triangle.c.

◆ setvertexmark

#define setvertexmark (   vx,
  value 
)     ((int *) (vx))[m->vertexmarkindex] = value

Definition at line 1285 of file triangle.c.

◆ setvertextype

#define setvertextype (   vx,
  value 
)     ((int *) (vx))[m->vertexmarkindex + 1] = value

Definition at line 1290 of file triangle.c.

◆ snext

#define snext (   osub1,
  osub2 
)
Value:
sptr = (osub1).ss[1 - (osub1).ssorient]; \
sdecode(sptr, osub2)

Definition at line 1167 of file triangle.c.

◆ snextself

#define snextself (   osub)
Value:
sptr = (osub).ss[1 - (osub).ssorient]; \
sdecode(sptr, osub)

Definition at line 1171 of file triangle.c.

◆ sorg

#define sorg (   osub,
  vertexptr 
)     vertexptr = (vertex) (osub).ss[2 + (osub).ssorient]

Definition at line 1178 of file triangle.c.

◆ spivot

#define spivot (   osub1,
  osub2 
)
Value:
sptr = (osub1).ss[(osub1).ssorient]; \
sdecode(sptr, osub2)

Definition at line 1156 of file triangle.c.

◆ spivotself

#define spivotself (   osub)
Value:
sptr = (osub).ss[(osub).ssorient]; \
sdecode(sptr, osub)

Definition at line 1160 of file triangle.c.

◆ SPLAYNODEPERBLOCK

#define SPLAYNODEPERBLOCK   508

Definition at line 277 of file triangle.c.

◆ Split

#define Split (   a,
  ahi,
  alo 
)
Value:
c = (REAL) (splitter * a); \
abig = (REAL) (c - a); \
ahi = c - abig; \
alo = a - ahi
#define c(i)
Definition: RSha256.hxx:101
REAL splitter
Definition: triangle.c:616

Definition at line 4775 of file triangle.c.

◆ Square

#define Square (   a,
  x,
  y 
)
Value:
x = (REAL) (a * a); \
Square_Tail(a, x, y)

Definition at line 4812 of file triangle.c.

◆ Square_Tail

#define Square_Tail (   a,
  x,
  y 
)
Value:
Split(a, ahi, alo); \
err1 = x - (ahi * ahi); \
err3 = err1 - ((ahi + ahi) * alo); \
y = (alo * alo) - err3
#define Split(a, ahi, alo)
Definition: triangle.c:4775

Definition at line 4806 of file triangle.c.

◆ SQUAREROOTTWO

#define SQUAREROOTTWO   1.4142135623730950488016887242096980785696718753769480732

Definition at line 309 of file triangle.c.

◆ ssym

#define ssym (   osub1,
  osub2 
)
Value:
(osub2).ss = (osub1).ss; \
(osub2).ssorient = 1 - (osub1).ssorient

Definition at line 1146 of file triangle.c.

◆ ssymself

#define ssymself (   osub)     (osub).ssorient = 1 - (osub).ssorient

Definition at line 1150 of file triangle.c.

◆ STARTINDEX

#define STARTINDEX   0

◆ stdissolve

#define stdissolve (   osub)     (osub).ss[6 + (osub).ssorient] = (subseg) m->dummytri

Definition at line 1276 of file triangle.c.

◆ stpivot

#define stpivot (   osub,
  otri 
)
Value:
ptr = (triangle) (osub).ss[6 + (osub).ssorient]; \
decode(ptr, otri)

Definition at line 1259 of file triangle.c.

◆ subsegcopy

#define subsegcopy (   osub1,
  osub2 
)
Value:
(osub2).ss = (osub1).ss; \
(osub2).ssorient = (osub1).ssorient

Definition at line 1225 of file triangle.c.

◆ subsegequal

#define subsegequal (   osub1,
  osub2 
)
Value:
(((osub1).ss == (osub2).ss) && \
((osub1).ssorient == (osub2).ssorient))

Definition at line 1231 of file triangle.c.

◆ SUBSEGPERBLOCK

#define SUBSEGPERBLOCK   508 /* Number of subsegments allocated at once. */

Definition at line 267 of file triangle.c.

◆ sym

#define sym (   otri1,
  otri2 
)
Value:
ptr = (otri1).tri[(otri1).orient]; \
decode(ptr, otri2);

Definition at line 932 of file triangle.c.

◆ symself

#define symself (   otri)
Value:
ptr = (otri).tri[(otri).orient]; \
decode(ptr, otri);

Definition at line 936 of file triangle.c.

◆ TRILIBRARY

#define TRILIBRARY

Definition at line 214 of file triangle.c.

◆ TRIPERBLOCK

#define TRIPERBLOCK   4092 /* Number of triangles allocated at once. */

Definition at line 266 of file triangle.c.

◆ tsbond

#define tsbond (   otri,
  osub 
)
Value:
(otri).tri[6 + (otri).orient] = (triangle) sencode(osub); \
(osub).ss[6 + (osub).ssorient] = (subseg) encode(otri)

Definition at line 1265 of file triangle.c.

◆ tsdissolve

#define tsdissolve (   otri)     (otri).tri[6 + (otri).orient] = (triangle) m->dummysub

Definition at line 1271 of file triangle.c.

◆ tspivot

#define tspivot (   otri,
  osub 
)
Value:
sptr = (subseg) (otri).tri[6 + (otri).orient]; \
sdecode(sptr, osub)

Definition at line 1252 of file triangle.c.

◆ Two_Diff

#define Two_Diff (   a,
  b,
  x,
  y 
)
Value:
x = (REAL) (a - b); \
Two_Diff_Tail(a, b, x, y)

Definition at line 4771 of file triangle.c.

◆ Two_Diff_Tail

#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 4764 of file triangle.c.

◆ Two_One_Diff

#define Two_One_Diff (   a1,
  a0,
  b,
  x2,
  x1,
  x0 
)
Value:
Two_Diff(a0, b , _i, x0); \
Two_Sum( a1, _i, x2, x1)
static const double x2[5]
static const double x1[5]
#define Two_Diff(a, b, x, y)
Definition: triangle.c:4771

Definition at line 4823 of file triangle.c.

◆ Two_One_Product

#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)
static const double x3[11]

Definition at line 4837 of file triangle.c.

◆ Two_One_Sum

#define Two_One_Sum (   a1,
  a0,
  b,
  x2,
  x1,
  x0 
)
Value:
Two_Sum(a0, b , _i, x0); \
Two_Sum(a1, _i, x2, x1)
#define Two_Sum(a, b, x, y)
Definition: triangle.c:4760

Definition at line 4819 of file triangle.c.

◆ Two_Product

#define Two_Product (   a,
  b,
  x,
  y 
)
Value:
x = (REAL) (a * b); \
Two_Product_Tail(a, b, x, y)

Definition at line 4789 of file triangle.c.

◆ Two_Product_Presplit

#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 4796 of file triangle.c.

◆ Two_Product_Tail

#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 4781 of file triangle.c.

◆ Two_Sum

#define Two_Sum (   a,
  b,
  x,
  y 
)
Value:
x = (REAL) (a + b); \
Two_Sum_Tail(a, b, x, y)

Definition at line 4760 of file triangle.c.

◆ Two_Sum_Tail

#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 4753 of file triangle.c.

◆ Two_Two_Diff

#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)
#define Two_One_Diff(a1, a0, b, x2, x1, x0)
Definition: triangle.c:4823

Definition at line 4831 of file triangle.c.

◆ Two_Two_Sum

#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)
#define Two_One_Sum(a1, a0, b, x2, x1, x0)
Definition: triangle.c:4819

Definition at line 4827 of file triangle.c.

◆ UNDEADVERTEX

#define UNDEADVERTEX   -32767

Definition at line 287 of file triangle.c.

◆ uninfect

#define uninfect (   otri)
Value:
(otri).tri[6] = (triangle) \
((unsigned long) (otri).tri[6] & ~ (unsigned long) 2l)

Definition at line 1088 of file triangle.c.

◆ vertex2tri

#define vertex2tri (   vx)    ((triangle *) (vx))[m->vertex2triindex]

Definition at line 1293 of file triangle.c.

◆ vertexmark

#define vertexmark (   vx)    ((int *) (vx))[m->vertexmarkindex]

Definition at line 1283 of file triangle.c.

◆ VERTEXPERBLOCK

#define VERTEXPERBLOCK   4092 /* Number of vertices allocated at once. */

Definition at line 268 of file triangle.c.

◆ vertextype

#define vertextype (   vx)    ((int *) (vx))[m->vertexmarkindex + 1]

Definition at line 1288 of file triangle.c.

◆ VIRUSPERBLOCK

#define VIRUSPERBLOCK   1020 /* Number of virus triangles allocated at once. */

Definition at line 269 of file triangle.c.

Typedef Documentation

◆ subseg

typedef REAL** subseg

Definition at line 495 of file triangle.c.

◆ triangle

typedef REAL** triangle

Definition at line 478 of file triangle.c.

◆ vertex

typedef REAL* vertex

Definition at line 512 of file triangle.c.

Enumeration Type Documentation

◆ finddirectionresult

Enumerator
WITHIN 
LEFTCOLLINEAR 
RIGHTCOLLINEAR 

Definition at line 359 of file triangle.c.

◆ insertvertexresult

Enumerator
SUCCESSFULVERTEX 
ENCROACHINGVERTEX 
VIOLATINGVERTEX 
DUPLICATEVERTEX 

Definition at line 351 of file triangle.c.

◆ locateresult

Enumerator
INTRIANGLE 
ONEDGE 
ONVERTEX 
OUTSIDE 

Definition at line 343 of file triangle.c.

Function Documentation

◆ alternateaxes()

void alternateaxes ( vertex sortarray,
int  arraysize,
int  axis 
)

Definition at line 9335 of file triangle.c.

◆ carveholes()

void carveholes ( struct mesh *  m,
struct behavior *  b,
REAL holelist,
int  holes,
REAL regionlist,
int  regions 
)

Definition at line 12963 of file triangle.c.

◆ constrainededge()

void constrainededge ( struct mesh *  m,
struct behavior *  b,
struct otri *  starttri,
vertex  endpoint2,
int  newmark 
)

Definition at line 12131 of file triangle.c.

◆ counterclockwise()

REAL counterclockwise ( struct mesh *  m,
struct behavior *  b,
vertex  pa,
vertex  pb,
vertex  pc 
)

Definition at line 5215 of file triangle.c.

◆ counterclockwiseadapt()

REAL counterclockwiseadapt ( vertex  pa,
vertex  pb,
vertex  pc,
REAL  detsum 
)

Definition at line 5126 of file triangle.c.

◆ delaunay()

long delaunay ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 10997 of file triangle.c.

◆ delaunayfixup()

void delaunayfixup ( struct mesh *  m,
struct behavior *  b,
struct otri *  fixuptri,
int  leftside 
)

Definition at line 12011 of file triangle.c.

◆ divconqdelaunay()

long divconqdelaunay ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 9953 of file triangle.c.

◆ divconqrecurse()

void divconqrecurse ( struct mesh *  m,
struct behavior *  b,
vertex sortarray,
int  vertices,
int  axis,
struct otri *  farleft,
struct otri *  farright 
)

Definition at line 9726 of file triangle.c.

◆ dummyinit()

void dummyinit ( struct mesh *  m,
struct behavior *  b,
int  trianglebytes,
int  subsegbytes 
)

Definition at line 4166 of file triangle.c.

◆ estimate()

REAL estimate ( int  elen,
REAL e 
)

Definition at line 5087 of file triangle.c.

◆ exactinit()

void exactinit ( )

Definition at line 4863 of file triangle.c.

◆ fast_expansion_sum_zeroelim()

int fast_expansion_sum_zeroelim ( int  elen,
REAL e,
int  flen,
REAL f,
REAL h 
)

Definition at line 4937 of file triangle.c.

◆ findcircumcenter()

void findcircumcenter ( struct mesh *  m,
struct behavior *  b,
vertex  torg,
vertex  tdest,
vertex  tapex,
vertex  circumcenter,
REAL xi,
REAL eta,
int  offcenter 
)

Definition at line 6494 of file triangle.c.

◆ finddirection()

enum finddirectionresult finddirection ( struct mesh *  m,
struct behavior *  b,
struct otri *  searchtri,
vertex  searchpoint 
)

Definition at line 11574 of file triangle.c.

◆ flip()

void flip ( struct mesh *  m,
struct behavior *  b,
struct otri *  flipedge 
)

Definition at line 7889 of file triangle.c.

◆ formskeleton()

void formskeleton ( struct mesh *  m,
struct behavior *  b,
int *  segmentlist,
int *  segmentmarkerlist,
int  numberofsegments 
)

Definition at line 12391 of file triangle.c.

◆ getvertex()

vertex getvertex ( struct mesh *  m,
struct behavior *  b,
int  number 
)

Definition at line 4555 of file triangle.c.

◆ highorder()

void highorder ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 13694 of file triangle.c.

◆ incircle()

REAL incircle ( struct mesh *  m,
struct behavior *  b,
vertex  pa,
vertex  pb,
vertex  pc,
vertex  pd 
)

Definition at line 5863 of file triangle.c.

◆ incircleadapt()

REAL incircleadapt ( vertex  pa,
vertex  pb,
vertex  pc,
vertex  pd,
REAL  permanent 
)

Definition at line 5284 of file triangle.c.

◆ infecthull()

void infecthull ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 12558 of file triangle.c.

◆ initializetrisubpools()

void initializetrisubpools ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 4289 of file triangle.c.

◆ initializevertexpool()

void initializevertexpool ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 4246 of file triangle.c.

◆ insertsegment()

void insertsegment ( struct mesh *  m,
struct behavior *  b,
vertex  endpoint1,
vertex  endpoint2,
int  newmark 
)

Definition at line 12233 of file triangle.c.

◆ insertsubseg()

void insertsubseg ( struct mesh *  m,
struct behavior *  b,
struct otri *  tri,
int  subsegmark 
)

Definition at line 7785 of file triangle.c.

◆ insertvertex()

enum insertvertexresult insertvertex ( struct mesh *  m,
struct behavior *  b,
vertex  newvertex,
struct otri *  searchtri,
struct osub *  splitseg,
int  segmentflaws,
int  triflaws 
)

Definition at line 8173 of file triangle.c.

◆ internalerror()

void internalerror ( )

Definition at line 3241 of file triangle.c.

◆ locate()

enum locateresult locate ( struct mesh *  m,
struct behavior *  b,
vertex  searchpoint,
struct otri *  searchtri 
)

Definition at line 7614 of file triangle.c.

◆ makesubseg()

void makesubseg ( struct mesh *  m,
struct osub *  newsubseg 
)

Definition at line 4681 of file triangle.c.

◆ maketriangle()

void maketriangle ( struct mesh *  m,
struct behavior *  b,
struct otri *  newotri 
)

Definition at line 4637 of file triangle.c.

◆ makevertexmap()

void makevertexmap ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 7375 of file triangle.c.

◆ markhull()

void markhull ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 12345 of file triangle.c.

◆ mergehulls()

void mergehulls ( struct mesh *  m,
struct behavior *  b,
struct otri *  farleft,
struct otri *  innerleft,
struct otri *  innerright,
struct otri *  farright,
int  axis 
)

Definition at line 9399 of file triangle.c.

◆ nonregular()

REAL nonregular ( struct mesh *  m,
struct behavior *  b,
vertex  pa,
vertex  pb,
vertex  pc,
vertex  pd 
)

Definition at line 6453 of file triangle.c.

◆ numbernodes()

void numbernodes ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 14445 of file triangle.c.

◆ orient3d()

REAL orient3d ( struct mesh *  m,
struct behavior *  b,
vertex  pa,
vertex  pb,
vertex  pc,
vertex  pd,
REAL  aheight,
REAL  bheight,
REAL  cheight,
REAL  dheight 
)

Definition at line 6370 of file triangle.c.

◆ orient3dadapt()

REAL orient3dadapt ( vertex  pa,
vertex  pb,
vertex  pc,
vertex  pd,
REAL  aheight,
REAL  bheight,
REAL  cheight,
REAL  dheight,
REAL  permanent 
)

Definition at line 5945 of file triangle.c.

◆ parsecommandline()

void parsecommandline ( int  argc,
char **  argv,
struct behavior *  b 
)

Definition at line 3257 of file triangle.c.

◆ plague()

void plague ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 12640 of file triangle.c.

◆ poolalloc()

VOID * poolalloc ( struct memorypool *  pool)

Definition at line 3979 of file triangle.c.

◆ pooldealloc()

void pooldealloc ( struct memorypool *  pool,
VOID dyingitem 
)

Definition at line 4042 of file triangle.c.

◆ pooldeinit()

void pooldeinit ( struct memorypool *  pool)

Definition at line 3958 of file triangle.c.

◆ poolinit()

void poolinit ( struct memorypool *  pool,
int  bytecount,
int  itemcount,
int  firstitemcount,
int  alignment 
)

Definition at line 3910 of file triangle.c.

◆ poolrestart()

void poolrestart ( struct memorypool *  pool)

Definition at line 3864 of file triangle.c.

◆ poolzero()

void poolzero ( struct memorypool *  pool)

Definition at line 3830 of file triangle.c.

◆ preciselocate()

enum locateresult preciselocate ( struct mesh *  m,
struct behavior *  b,
vertex  searchpoint,
struct otri *  searchtri,
int  stopatsubsegment 
)

Definition at line 7470 of file triangle.c.

◆ printsubseg()

void printsubseg ( struct mesh *  m,
struct behavior *  b,
struct osub *  s 
)

Definition at line 3734 of file triangle.c.

◆ printtriangle()

void printtriangle ( struct mesh *  m,
struct behavior *  b,
struct otri *  t 
)

Definition at line 3640 of file triangle.c.

◆ quality_statistics()

void quality_statistics ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 15324 of file triangle.c.

◆ randomnation()

unsigned long randomnation ( unsigned int  choices)

Definition at line 6647 of file triangle.c.

◆ regionplague()

void regionplague ( struct mesh *  m,
struct behavior *  b,
REAL  attribute,
REAL  area 
)

Definition at line 12850 of file triangle.c.

◆ removeghosts()

long removeghosts ( struct mesh *  m,
struct behavior *  b,
struct otri *  startghost 
)

Definition at line 9890 of file triangle.c.

◆ scale_expansion_zeroelim()

int scale_expansion_zeroelim ( int  elen,
REAL e,
REAL  b,
REAL h 
)

Definition at line 5031 of file triangle.c.

◆ scoutsegment()

int scoutsegment ( struct mesh *  m,
struct behavior *  b,
struct otri *  searchtri,
vertex  endpoint2,
int  newmark 
)

Definition at line 11797 of file triangle.c.

◆ segmentintersection()

void segmentintersection ( struct mesh *  m,
struct behavior *  b,
struct otri *  splittri,
struct osub *  splitsubseg,
vertex  endpoint2 
)

Definition at line 11669 of file triangle.c.

◆ statistics()

void statistics ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 15532 of file triangle.c.

◆ subsegdealloc()

void subsegdealloc ( struct mesh *  m,
subseg dyingsubseg 
)

Definition at line 4402 of file triangle.c.

◆ subsegtraverse()

subseg * subsegtraverse ( struct mesh *  m)

Definition at line 4423 of file triangle.c.

◆ transfernodes()

void transfernodes ( struct mesh *  m,
struct behavior *  b,
REAL pointlist,
REAL pointattriblist,
int *  pointmarkerlist,
int  numberofpoints,
int  numberofpointattribs 
)

Definition at line 14067 of file triangle.c.

◆ traversalinit()

void traversalinit ( struct memorypool *  pool)

Definition at line 4065 of file triangle.c.

◆ traverse()

VOID * traverse ( struct memorypool *  pool)

Definition at line 4101 of file triangle.c.

◆ triangledealloc()

void triangledealloc ( struct mesh *  m,
triangle dyingtriangle 
)

Definition at line 4356 of file triangle.c.

◆ triangledeinit()

void triangledeinit ( struct mesh *  m,
struct behavior *  b 
)

Definition at line 4596 of file triangle.c.

◆ triangleinit()

void triangleinit ( struct mesh *  m)

Definition at line 6608 of file triangle.c.

◆ triangletraverse()

triangle * triangletraverse ( struct mesh *  m)

Definition at line 4377 of file triangle.c.

◆ triangulate()

void triangulate ( char *  triswitches,
struct triangulateio in,
struct triangulateio out,
struct triangulateio vorout 
)

Definition at line 15652 of file triangle.c.

◆ triangulatepolygon()

void triangulatepolygon ( struct mesh *  m,
struct behavior *  b,
struct otri *  firstedge,
struct otri *  lastedge,
int  edgecount,
int  doflip,
int  triflaws 
)

Definition at line 8834 of file triangle.c.

◆ triexit()

void triexit ( int  status)

Definition at line 1385 of file triangle.c.

◆ trifree()

void trifree ( VOID memptr)

Definition at line 1414 of file triangle.c.

◆ trimalloc()

VOID * trimalloc ( int  size)

Definition at line 1396 of file triangle.c.

◆ triunsuitable()

int triunsuitable ( vertex  triorg,
vertex  tridest,
vertex  triapex,
REAL  area 
)

Definition at line 1336 of file triangle.c.

◆ unflip()

void unflip ( struct mesh *  m,
struct behavior *  b,
struct otri *  flipedge 
)

Definition at line 8024 of file triangle.c.

◆ vertexdealloc()

void vertexdealloc ( struct mesh *  m,
vertex  dyingvertex 
)

Definition at line 4448 of file triangle.c.

◆ vertexmedian()

void vertexmedian ( vertex sortarray,
int  arraysize,
int  median,
int  axis 
)

Definition at line 9257 of file triangle.c.

◆ vertexsort()

void vertexsort ( vertex sortarray,
int  arraysize 
)

Definition at line 9183 of file triangle.c.

◆ vertextraverse()

vertex vertextraverse ( struct mesh *  m)

Definition at line 4469 of file triangle.c.

◆ writeedges()

void writeedges ( struct mesh *  m,
struct behavior *  b,
int **  edgelist,
int **  edgemarkerlist 
)

Definition at line 14764 of file triangle.c.

◆ writeelements()

void writeelements ( struct mesh *  m,
struct behavior *  b,
int **  trianglelist,
REAL **  triangleattriblist 
)

Definition at line 14477 of file triangle.c.

◆ writeneighbors()

void writeneighbors ( struct mesh *  m,
struct behavior *  b,
int **  neighborlist 
)

Definition at line 15131 of file triangle.c.

◆ writenodes()

void writenodes ( struct mesh *  m,
struct behavior *  b,
REAL **  pointlist,
REAL **  pointattriblist,
int **  pointmarkerlist 
)

Definition at line 14305 of file triangle.c.

◆ writepoly()

void writepoly ( struct mesh *  m,
struct behavior *  b,
int **  segmentlist,
int **  segmentmarkerlist 
)

Definition at line 14618 of file triangle.c.

◆ writevoronoi()

void writevoronoi ( struct mesh *  m,
struct behavior *  b,
REAL **  vpointlist,
REAL **  vpointattriblist,
int **  vpointmarkerlist,
int **  vedgelist,
int **  vedgemarkerlist,
REAL **  vnormlist 
)

Definition at line 14918 of file triangle.c.

Variable Documentation

◆ ccwerrboundA

REAL ccwerrboundA

Definition at line 619 of file triangle.c.

◆ ccwerrboundB

REAL ccwerrboundB

Definition at line 619 of file triangle.c.

◆ ccwerrboundC

REAL ccwerrboundC

Definition at line 619 of file triangle.c.

◆ epsilon

REAL epsilon

Definition at line 617 of file triangle.c.

◆ iccerrboundA

REAL iccerrboundA

Definition at line 620 of file triangle.c.

◆ iccerrboundB

REAL iccerrboundB

Definition at line 620 of file triangle.c.

◆ iccerrboundC

REAL iccerrboundC

Definition at line 620 of file triangle.c.

◆ minus1mod3

int minus1mod3[3] = {2, 0, 1}

Definition at line 903 of file triangle.c.

◆ o3derrboundA

REAL o3derrboundA

Definition at line 621 of file triangle.c.

◆ o3derrboundB

REAL o3derrboundB

Definition at line 621 of file triangle.c.

◆ o3derrboundC

REAL o3derrboundC

Definition at line 621 of file triangle.c.

◆ plus1mod3

int plus1mod3[3] = {1, 2, 0}

Definition at line 902 of file triangle.c.

◆ randomseed

unsigned long randomseed

Definition at line 625 of file triangle.c.

◆ resulterrbound

REAL resulterrbound

Definition at line 618 of file triangle.c.

◆ splitter

REAL splitter

Definition at line 616 of file triangle.c.