Chaste
Release::3.4
|
#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 |
Macros | |
#define | REAL double |
#define | INEXACT /* Nothing */ |
#define | FILENAMESIZE 2048 |
#define | INPUTLINESIZE 1024 |
#define | TRIPERBLOCK 4092 /* Number of triangles allocated at once. */ |
#define | SUBSEGPERBLOCK 508 /* Number of subsegments allocated at once. */ |
#define | VERTEXPERBLOCK 4092 /* Number of vertices allocated at once. */ |
#define | VIRUSPERBLOCK 1020 /* Number of virus triangles allocated at once. */ |
#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 |
Functions | |
char * | readline () |
char * | findfield () |
int | triunsuitable (triorg, tridest, triapex, area) vertex triorg |
if (maxlen > 0.05 *(triorg[0]*triorg[0]+triorg[1]*triorg[1])+0.02) | |
void | triexit (status) int status |
VOID * | trimalloc (size) int size |
if (memptr==(VOID *) NULL) | |
return (memptr) | |
void | trifree (memptr) VOID *memptr |
void | syntax () |
void | info () |
void | internalerror () |
void | parsecommandline (argc, argv, b) int argc |
for (i=STARTINDEX;i< argc;i++) | |
if (b->innodefilename[0]== '\0') | |
if (!strcmp(&b->innodefilename[strlen(b->innodefilename)-5],".node")) | |
if (!strcmp(&b->innodefilename[strlen(b->innodefilename)-5],".poly")) | |
if (!strcmp(&b->innodefilename[strlen(b->innodefilename)-4],".ele")) | |
if (!strcmp(&b->innodefilename[strlen(b->innodefilename)-5],".area")) | |
if (b->goodangle==1.0) | |
b goodangle * | if (b->refine &&b->noiterationnum) |
if (!b->refine &&!b->poly) | |
if (b->refine||!b->poly) | |
if (b->weighted &&(b->poly||b->quality)) | |
if (b->jettison &&b->nonodewritten &&!b->quiet) | |
strcpy (b->inpolyfilename, b->innodefilename) | |
strcpy (workstring, b->innodefilename) | |
while (workstring[j]!= '\0') | |
if (increment > 0) | |
else | if (increment==0) |
sprintf (b->outnodefilename, workstring, meshnumber+1) | |
strcat (b->outnodefilename,".node") | |
strcat (b->outpolyfilename,".poly") | |
strcat (b->outelefilename,".ele") | |
strcat (b->edgefilename,".edge") | |
strcat (b->vnodefilename,".v.node") | |
strcat (b->vedgefilename,".v.edge") | |
strcat (b->neighborfilename,".neigh") | |
strcat (b->offfilename,".off") | |
strcat (b->areafilename,".area") | |
void | printtriangle (m, b, t) struct mesh *m |
printf ("triangle x%lx with orientation %d:\n",(unsigned long) t->tri, t->orient) | |
decode (t->tri[0], printtri) | |
if (printtri.tri==m->dummytri) | |
decode (t->tri[1], printtri) | |
decode (t->tri[2], printtri) | |
if (printvertex==(vertex) NULL) printf(" Origin[%d] | |
called is pointed to *void | dummyinit (m, b, trianglebytes, subsegbytes) struct mesh *m |
void | initializevertexpool (m, b) struct mesh *m |
poolinit & | m (REAL) |
void | initializetrisubpools (m, b) struct mesh *m |
else | if (m->eextras+b->regionattrib > 0) |
if ((b->voronoi||b->neighbors)&&(trisize< 6 *sizeof(triangle)+sizeof(int))) | |
poolinit & | m (2 *m->invertices-2) > TRIPERBLOCK?(2 *m->invertices-2):TRIPERBLOCK, 4 |
void | triangledealloc (m, dyingtriangle) struct mesh *m |
pooldealloc & | m (VOID *) dyingtriangle |
triangle * | triangletraverse (m) struct mesh *m |
if (newtriangle==(triangle *) NULL) | |
while (deadtri(newtriangle)) | |
void | subsegdealloc (m, dyingsubseg) struct mesh *m |
subseg * | subsegtraverse (m) struct mesh *m |
if (newsubseg==(subseg *) NULL) | |
while (deadsubseg(newsubseg)) | |
void | vertexdealloc (m, dyingvertex) struct mesh *m |
vertex | vertextraverse (m) struct mesh *m |
if (newvertex==(vertex) NULL) | |
while (vertextype(newvertex)==DEADVERTEX) | |
void | badsubsegdealloc (m, dyingseg) struct mesh *m |
struct badsubseg * | badsubsegtraverse (m) struct mesh *m |
if (newseg==(struct badsubseg *) NULL) | |
while (newseg->subsegorg==(vertex) NULL) | |
vertex | getvertex (m, b, number) struct mesh *m |
if (current+m->vertices.itemsfirstblock<=number) | |
return() | vertex (foundvertex+m->vertices.itembytes *(number-current)) |
void | triangledeinit (m, b) struct mesh *m |
trifree ((VOID *) m->dummytribase) | |
void | maketriangle (m, b, newotri) struct mesh *m |
for (i=0;i< m->eextras;i++) | |
void | makesubseg (m, newsubseg) struct mesh *m |
void | exactinit () |
int | fast_expansion_sum_zeroelim (elen, e, flen, f, h) int elen |
if ((fnow > enow)==(fnow >-enow)) | |
if ((eindex< elen)&&(findex< flen)) | |
while (eindex< elen) | |
if ((Q!=0.0)||(hindex==0)) | |
int | scale_expansion_zeroelim (elen, e, b, h) int elen |
Split (b, bhi, blo) | |
Two_Product_Presplit (e[0], b, bhi, blo, Q, hh) | |
if (hh!=0) | |
REAL | estimate (elen, e) int elen |
REAL | counterclockwiseadapt (pa, pb, pc, detsum) vertex pa |
Two_Product (acx, bcy, detleft, detlefttail) | |
Two_Product (acy, bcx, detright, detrighttail) | |
Two_Two_Diff (detleft, detlefttail, detright, detrighttail, B3, B[2], B[1], B[0]) | |
if ((det >=errbound)||(-det >=errbound)) | |
Two_Diff_Tail (pa[0], pc[0], acx, acxtail) | |
Two_Diff_Tail (pb[0], pc[0], bcx, bcxtail) | |
Two_Diff_Tail (pa[1], pc[1], acy, acytail) | |
Two_Diff_Tail (pb[1], pc[1], bcy, bcytail) | |
if ((acxtail==0.0)&&(acytail==0.0)&&(bcxtail==0.0)&&(bcytail==0.0)) | |
Two_Product (acxtail, bcy, s1, s0) | |
Two_Product (acytail, bcx, t1, t0) | |
Two_Two_Diff (s1, s0, t1, t0, u3, u[2], u[1], u[0]) | |
Two_Product (acx, bcytail, s1, s0) | |
Two_Product (acy, bcxtail, t1, t0) | |
Two_Product (acxtail, bcytail, s1, s0) | |
Two_Product (acytail, bcxtail, t1, t0) | |
return (D[Dlength-1]) | |
REAL | counterclockwise (m, b, pa, pb, pc) struct mesh *m |
if (detleft > 0.0) | |
else | if (detleft< 0.0) |
REAL | incircleadapt (pa, pb, pc, pd, permanent) vertex pa |
Two_Product (bdx, cdy, bdxcdy1, bdxcdy0) | |
Two_Product (cdx, bdy, cdxbdy1, cdxbdy0) | |
Two_Two_Diff (bdxcdy1, bdxcdy0, cdxbdy1, cdxbdy0, bc3, bc[2], bc[1], bc[0]) | |
Two_Product (cdx, ady, cdxady1, cdxady0) | |
Two_Product (adx, cdy, adxcdy1, adxcdy0) | |
Two_Two_Diff (cdxady1, cdxady0, adxcdy1, adxcdy0, ca3, ca[2], ca[1], ca[0]) | |
Two_Product (adx, bdy, adxbdy1, adxbdy0) | |
Two_Product (bdx, ady, bdxady1, bdxady0) | |
Two_Two_Diff (adxbdy1, adxbdy0, bdxady1, bdxady0, ab3, ab[2], ab[1], ab[0]) | |
Two_Diff_Tail (pa[0], pd[0], adx, adxtail) | |
Two_Diff_Tail (pa[1], pd[1], ady, adytail) | |
Two_Diff_Tail (pb[0], pd[0], bdx, bdxtail) | |
Two_Diff_Tail (pb[1], pd[1], bdy, bdytail) | |
Two_Diff_Tail (pc[0], pd[0], cdx, cdxtail) | |
Two_Diff_Tail (pc[1], pd[1], cdy, cdytail) | |
if ((adxtail==0.0)&&(bdxtail==0.0)&&(cdxtail==0.0)&&(adytail==0.0)&&(bdytail==0.0)&&(cdytail==0.0)) | |
if ((bdxtail!=0.0)||(bdytail!=0.0)||(cdxtail!=0.0)||(cdytail!=0.0)) | |
if ((cdxtail!=0.0)||(cdytail!=0.0)||(adxtail!=0.0)||(adytail!=0.0)) | |
if ((adxtail!=0.0)||(adytail!=0.0)||(bdxtail!=0.0)||(bdytail!=0.0)) | |
if (adxtail!=0.0) | |
if (adytail!=0.0) | |
if (bdxtail!=0.0) | |
if (bdytail!=0.0) | |
if (cdxtail!=0.0) | |
if (cdytail!=0.0) | |
if ((adxtail!=0.0)||(adytail!=0.0)) | |
if ((bdxtail!=0.0)||(bdytail!=0.0)) | |
if ((cdxtail!=0.0)||(cdytail!=0.0)) | |
REAL | incircle (m, b, pa, pb, pc, pd) struct mesh *m |
if ((det > errbound)||(-det > errbound)) | |
REAL | orient3dadapt (pa, pb, pc, pd, aheight, bheight, cheight, dheight, permanent) vertex pa |
Two_Diff_Tail (aheight, dheight, adheight, adheighttail) | |
Two_Diff_Tail (bheight, dheight, bdheight, bdheighttail) | |
Two_Diff_Tail (cheight, dheight, cdheight, cdheighttail) | |
if ((adxtail==0.0)&&(bdxtail==0.0)&&(cdxtail==0.0)&&(adytail==0.0)&&(bdytail==0.0)&&(cdytail==0.0)&&(adheighttail==0.0)&&(bdheighttail==0.0)&&(cdheighttail==0.0)) | |
if (adxtail==0.0) | |
if (adheighttail!=0.0) | |
if (bdheighttail!=0.0) | |
if (cdheighttail!=0.0) | |
REAL | orient3d (m, b, pa, pb, pc, pd, aheight, bheight, cheight, dheight) struct mesh *m |
REAL | nonregular (m, b, pa, pb, pc, pd) struct mesh *m |
if ((dodist< aodist)&&(dodist< dadist)) | |
void | triangleinit (m) struct mesh *m |
unsigned long | randomnation (choices) unsigned int choices |
return | randomseed (714025l/choices+1) |
void | checkmesh (m, b) struct mesh *m |
if (!b->quiet) | |
while (triangleloop.tri!=(triangle *) NULL) | |
if (horrors==0) | |
void | checkdelaunay (m, b) struct mesh *m |
void | enqueuebadtriang (m, b, badtri) struct mesh *m |
if (b->verbose > 2) | |
if (badtri->key >=1.0) | |
while (length > 2.0) | |
if (posexponent) | |
if (m->queuefront[queuenumber]==(struct badtriang *) NULL) | |
void | enqueuebadtri (m, b, enqtri, minedge, enqapex, enqorg, enqdest) struct mesh *m |
enqueuebadtriang (m, b, newbad) | |
struct badtriang * | dequeuebadtriang (m) struct mesh *m |
if (result==m->queuetail[m->firstnonemptyq]) | |
int | checkseg4encroach (m, b, testsubseg) struct mesh *m |
if (neighbortri.tri!=m->dummytri) | |
stpivot (testsym, neighbortri) | |
if (encroached &&(!b->nobisect||((b->nobisect==1)&&(sides==2)))) | |
void | testtriangle (m, b, testtri) struct mesh *m |
if ((apexlen< orglen)&&(apexlen< destlen)) | |
if (b->vararea||b->fixedarea||b->usertest) | |
if (angle > b->goodangle) | |
void | makevertexmap (m, b) struct mesh *m |
enum locateresult | preciselocate (m, b, searchpoint, searchtri, stopatsubsegment) struct mesh *m |
while (1) | |
enum locateresult | locate (m, b, searchpoint, searchtri) struct mesh *m |
if (m->recenttri.tri!=(triangle *) NULL) | |
while (SAMPLEFACTOR *m->samples *m->samples *m->samples< m->triangles.items) | |
while (totalsamplesleft > 0) | |
if ((torg[0]==searchpoint[0])&&(torg[1]==searchpoint[1])) | |
if ((tdest[0]==searchpoint[0])&&(tdest[1]==searchpoint[1])) | |
else | if (ahead==0.0) |
return | preciselocate (m, b, searchpoint, searchtri, 0) |
void | insertsubseg (m, b, tri, subsegmark) struct mesh *m |
if (vertexmark(triorg)==0) | |
if (vertexmark(tridest)==0) | |
if (newsubseg.ss==m->dummysub) | |
apex (top, farvertex) | |
lprev (top, topleft) | |
sym (topleft, toplcasing) | |
lnext (top, topright) | |
sym (topright, toprcasing) | |
sym (botleft, botlcasing) | |
sym (botright, botrcasing) | |
bond (topleft, botlcasing) | |
bond (botleft, botrcasing) | |
bond (botright, toprcasing) | |
bond (topright, toplcasing) | |
if (m->checksegments) | |
setorg (top, botvertex) | |
setdest (top, farvertex) | |
setapex (top, leftvertex) | |
void | unflip (m, b, flipedge) struct mesh *m |
bond (topleft, toprcasing) | |
bond (botleft, toplcasing) | |
bond (botright, botlcasing) | |
bond (topright, botrcasing) | |
setorg (top, farvertex) | |
setdest (top, botvertex) | |
setapex (top, rightvertex) | |
enum insertvertexresult | insertvertex (m, b, newvertex, searchtri, splitseg, segmentflaws, triflaws) struct mesh *m |
if (b->verbose > 1) | |
if (splitseg==(struct osub *) NULL) | |
if (intersect==ONVERTEX) | |
if ((intersect==ONEDGE)||(intersect==OUTSIDE)) | |
lprev (horiz, botright) | |
maketriangle (m, b,&newbotleft) | |
org (horiz, rightvertex) | |
dest (horiz, leftvertex) | |
apex (horiz, botvertex) | |
setorg (newbotleft, leftvertex) | |
setdest (newbotleft, botvertex) | |
setapex (newbotleft, newvertex) | |
setorg (newbotright, botvertex) | |
setdest (newbotright, rightvertex) | |
setapex (newbotright, newvertex) | |
setapex (horiz, newvertex) | |
bond (newbotleft, botlcasing) | |
bond (newbotright, botrcasing) | |
lnextself (newbotleft) | |
lprevself (newbotright) | |
bond (newbotleft, newbotright) | |
bond (botleft, newbotleft) | |
bond (botright, newbotright) | |
org (horiz, first) | |
void | triangulatepolygon (m, b, firstedge, lastedge, edgecount, doflip, triflaws) struct mesh *m |
dest (besttri, bestvertex) | |
otricopy (besttri, testtri) | |
if (bestnumber > 1) | |
if (doflip) | |
otricopy (besttri,*lastedge) | |
void | deletevertex (m, b, deltri) struct mesh *m |
vertexdealloc (m, delvertex) | |
while (!otriequal(*deltri, countingtri)) | |
if (edgecount > 3) | |
sym (lefttri, leftcasing) | |
oprev (deltriright, righttri) | |
sym (righttri, rightcasing) | |
bond (deltriright, rightcasing) | |
tspivot (lefttri, leftsubseg) | |
if (leftsubseg.ss!=m->dummysub) | |
tspivot (righttri, rightsubseg) | |
if (rightsubseg.ss!=m->dummysub) | |
org (lefttri, neworg) | |
triangledealloc (m, lefttri.tri) | |
triangledealloc (m, righttri.tri) | |
void | undovertex (m, b) struct mesh *m |
while (m->lastflip!=(struct flipstacker *) NULL) | |
void | vertexsort (sortarray, arraysize) vertex *sortarray |
if (arraysize==2) | |
if (left > 1) | |
void | vertexmedian (sortarray, arraysize, median, axis) vertex *sortarray |
if (left > median) | |
void | alternateaxes (sortarray, arraysize, axis) vertex *sortarray |
if (arraysize<=3) | |
vertexmedian (sortarray, arraysize, divider, axis) | |
if (arraysize-divider >=2) | |
void | mergehulls (m, b, farleft, innerleft, innerright, farright, axis) struct mesh *m |
if (b->dwyer &&(axis==1)) | |
if (counterclockwise(m, b, innerleftdest, innerleftapex, innerrightorg) > 0.0) | |
if (counterclockwise(m, b, innerrightapex, innerrightorg, innerleftdest) > 0.0) | |
while (changemade) | |
bond (baseedge,*innerleft) | |
lnextself (baseedge) | |
setorg (baseedge, innerrightorg) | |
setdest (baseedge, innerleftdest) | |
if (innerleftdest==farleftpt) | |
if (innerrightorg==farrightpt) | |
apex (leftcand, upperleft) | |
apex (rightcand, upperright) | |
void | divconqrecurse (m, b, sortarray, vertices, axis, farleft, farright) struct mesh *m |
if (vertices==2) | |
divconqrecurse (m, b, sortarray, divider, 1-axis, farleft,&innerleft) | |
divconqrecurse (m, b,&sortarray[divider], vertices-divider, 1-axis,&innerright, farright) | |
mergehulls (m, b, farleft,&innerleft,&innerright, farright, axis) | |
long | removeghosts (m, b, startghost) struct mesh *m |
symself (searchedge) | |
lnext (dissolveedge, deadtriangle) | |
lprevself (dissolveedge) | |
symself (dissolveedge) | |
dissolve (dissolveedge) | |
sym (deadtriangle, dissolveedge) | |
triangledealloc (m, deadtriangle.tri) | |
while (!otriequal(dissolveedge,*startghost)) | |
long | divconqdelaunay (m, b) struct mesh *m |
vertexsort (sortarray, m->invertices) | |
for (j=1;j< m->invertices;j++) | |
divconqrecurse (m, b, sortarray, i, 0,&hullleft,&hullright) | |
trifree ((VOID *) sortarray) | |
return | removeghosts (m, b,&hullleft) |
void | boundingbox (m, b) struct mesh *m |
if (m->ymax-m->ymin > width) | |
if (width==0.0) | |
setorg (inftri, m->infvertex1) | |
setdest (inftri, m->infvertex2) | |
setapex (inftri, m->infvertex3) | |
long | removebox (m, b) struct mesh *m |
symself (nextedge) | |
lprev (nextedge, finaledge) | |
lnextself (nextedge) | |
lprev (nextedge, searchedge) | |
lnext (nextedge, checkedge) | |
symself (checkedge) | |
if (checkedge.tri==m->dummytri) | |
while (!otriequal(nextedge, finaledge)) | |
triangledealloc (m, finaledge.tri) | |
long | incrementaldelaunay (m, b) struct mesh *m |
while (vertexloop!=(vertex) NULL) | |
void | eventheapinsert (heap, heapsize, newevent) struct event **heap |
while (notdone) | |
void | eventheapify (heap, heapsize, eventnum) struct event **heap |
void | eventheapdelete (heap, heapsize, eventnum) struct event **heap |
if (eventnum > 0) | |
eventheapify (heap, heapsize-1, eventnum) | |
void | createeventheap (m, eventheap, events, freeevents) struct mesh *m |
int | rightofhyperbola (m, fronttri, newsite) struct mesh *m |
if ((leftvertex[1]< rightvertex[1])||((leftvertex[1]==rightvertex[1])&&(leftvertex[0]< rightvertex[0]))) | |
REAL | circletop (m, pa, pb, pc, ccwabc) struct mesh *m |
return | pc (xac *bclen2-xbc *aclen2+sqrt(aclen2 *bclen2 *ablen2))/(2.0 *ccwabc) |
void | check4deadevent (checktri, freeevents, eventheap, heapsize) struct otri *checktri |
if (eventvertex!=(vertex) NULL) | |
struct splaynode * | splay (m, splaytree, searchpoint, searchtri) struct mesh *m |
if (splaytree==(struct splaynode *) NULL) | |
dest (splaytree->keyedge, checkvertex) | |
if (checkvertex==splaytree->keydest) | |
if (lefttree==(struct splaynode *) NULL) | |
else | if (righttree==(struct splaynode *) NULL) |
else | if (lefttree->rchild==(struct splaynode *) NULL) |
else | if (righttree->lchild==(struct splaynode *) NULL) |
while (leftright->rchild!=(struct splaynode *) NULL) | |
struct splaynode * | splayinsert (m, splayroot, newkey, searchpoint) struct mesh *m |
if (splayroot==(struct splaynode *) NULL) | |
else | if (rightofhyperbola(m,&splayroot->keyedge, searchpoint)) |
struct splaynode * | circletopinsert (m, b, splayroot, newkey, pa, pb, pc, topy) struct mesh *m |
return | splayinsert (m, splay(m, splayroot,(vertex) searchpoint,&dummytri), newkey,(vertex) searchpoint) |
struct splaynode * | frontlocate (m, splayroot, bottommost, searchvertex, searchtri, farright) struct mesh *m |
while (!farrightflag &&rightofhyperbola(m, searchtri, searchvertex)) | |
long | sweeplinedelaunay (m, b) struct mesh *m |
poolinit & | m (struct splaynode), SPLAYNODEPERBLOCK, SPLAYNODEPERBLOCK, 0 |
createeventheap (m,&eventheap,&events,&freeevents) | |
bond (lefttri, righttri) | |
lnextself (lefttri) | |
lprevself (righttri) | |
eventheapdelete (eventheap, heapsize, 0) | |
if ((firstvertex[0]==secondvertex[0])&&(firstvertex[1]==secondvertex[1])) | |
while ((firstvertex[0]==secondvertex[0])&&(firstvertex[1]==secondvertex[1])) | |
setorg (lefttri, firstvertex) | |
setdest (lefttri, secondvertex) | |
setorg (righttri, secondvertex) | |
setdest (righttri, firstvertex) | |
lprev (lefttri, bottommost) | |
while (heapsize > 0) | |
lprevself (bottommost) | |
long | delaunay (m, b) struct mesh *m |
if (m->triangles.items==0) | |
long | reconstruct (m, b, elefilename, areafilename, polyfilename, polyfile) struct mesh *m |
if (elefile==(FILE *) NULL) | |
for (elementnumber=1;elementnumber<=m->inelements;elementnumber++) | |
fclose (elefile) | |
enum finddirectionresult | finddirection (m, b, searchtri, searchpoint) struct mesh *m |
if (leftflag &&rightflag) | |
while (leftflag) | |
while (rightflag) | |
if (leftccw==0.0) | |
else | if (rightccw==0.0) |
void | segmentintersection (m, b, splittri, splitsubseg, endpoint2) struct mesh *m |
if (denom==0.0) | |
setvertexmark (newvertex, mark(*splitsubseg)) | |
setvertextype (newvertex, INPUTVERTEX) | |
if (success!=SUCCESSFULVERTEX) | |
setvertex2tri (newvertex, encode(*splittri)) | |
if (m->steinerleft > 0) | |
sdissolve (opposubseg) | |
while (splitsubseg->ss!=m->dummysub) | |
snextself (opposubseg) | |
while (opposubseg.ss!=m->dummysub) | |
finddirection (m, b, splittri, endpoint1) | |
if ((leftvertex[0]==endpoint1[0])&&(leftvertex[1]==endpoint1[1])) | |
else | if ((rightvertex[0]!=endpoint1[0])||(rightvertex[1]!=endpoint1[1])) |
int | scoutsegment (m, b, searchtri, endpoint2, newmark) struct mesh *m |
if (((leftvertex[0]==endpoint2[0])&&(leftvertex[1]==endpoint2[1]))||((rightvertex[0]==endpoint2[0])&&(rightvertex[1]==endpoint2[1]))) | |
else | if (collinear==LEFTCOLLINEAR) |
tspivot (crosstri, crosssubseg) | |
if (crosssubseg.ss==m->dummysub) | |
otricopy (crosstri,*searchtri) | |
insertsubseg (m, b, searchtri, newmark) | |
void | conformingedge (m, b, endpoint1, endpoint2, newmark) struct mesh *m |
setvertexmark (newvertex, newmark) | |
setvertextype (newvertex, SEGMENTVERTEX) | |
if (success==DUPLICATEVERTEX) | |
finddirection (m, b,&searchtri2, endpoint2) | |
if (!scoutsegment(m, b,&searchtri1, endpoint1, newmark)) | |
if (!scoutsegment(m, b,&searchtri2, endpoint2, newmark)) | |
void | delaunayfixup (m, b, fixuptri, leftside) struct mesh *m |
sym (neartri, fartri) | |
if (fartri.tri==m->dummytri) | |
tspivot (neartri, faredge) | |
if (faredge.ss!=m->dummysub) | |
apex (neartri, nearvertex) | |
org (neartri, leftvertex) | |
dest (neartri, rightvertex) | |
apex (fartri, farvertex) | |
if (leftside) | |
delaunayfixup (m, b,&fartri, leftside) | |
void | constrainededge (m, b, starttri, endpoint2, newmark) struct mesh *m |
flip (m, b,&fixuptri) | |
if ((farvertex[0]==endpoint2[0])&&(farvertex[1]==endpoint2[1])) | |
if (area==0.0) | |
segmentintersection (m, b,&fixuptri,&crosssubseg, endpoint2) | |
while (!done) | |
insertsubseg (m, b,&fixuptri, newmark) | |
if (collision) | |
void | insertsegment (m, b, endpoint1, endpoint2, newmark) struct mesh *m |
if (encodedtri!=(triangle) NULL) | |
if (checkvertex!=endpoint1) | |
otricopy (searchtri1, m->recenttri) | |
if (scoutsegment(m, b,&searchtri1, endpoint2, newmark)) | |
org (searchtri1, endpoint1) | |
otricopy (searchtri2, m->recenttri) | |
if (scoutsegment(m, b,&searchtri2, endpoint1, newmark)) | |
org (searchtri2, endpoint2) | |
void | markhull (m, b) struct mesh *m |
symself (hulltri) | |
otricopy (hulltri, starttri) | |
lnextself (hulltri) | |
oprev (hulltri, nexttri) | |
while (nexttri.tri!=m->dummytri) | |
while (!otriequal(hulltri, starttri)) | |
void | formskeleton (m, b, polyfile, polyfilename) struct mesh *m |
if (b->convex||!b->poly) | |
void | infecthull (m, b) struct mesh *m |
void | plague (m, b) struct mesh *m |
while (virusloop!=(triangle **) NULL) | |
void | regionplague (m, b, attribute, area) struct mesh *m |
void | carveholes (m, b, holelist, holes, regionlist, regions) struct mesh *m |
if (!(b->quiet||(b->noholes &&b->convex))) | |
if (regions > 0) | |
if (((holes > 0)&&!b->noholes)||!b->convex||(regions > 0)) | |
if ((holes > 0)&&!b->noholes) | |
if (m->viri.items > 0) | |
void | tallyencs (m, b) struct mesh *m |
while (subsegloop.ss!=(subseg *) NULL) | |
void | precisionerror () |
void | splitencsegs (m, b, triflaws) struct mesh *m |
while ((m->badsubsegs.items > 0)&&(m->steinerleft!=0)) | |
void | tallyfaces (m, b) struct mesh *m |
void | splittriangle (m, b, badtri) struct mesh *m |
decode (badtri->poortri, badotri) | |
org (badotri, borg) | |
dest (badotri, bdest) | |
apex (badotri, bapex) | |
if (!deadtri(badotri.tri)&&(borg==badtri->triangorg)&&(bdest==badtri->triangdest)&&(bapex==badtri->triangapex)) | |
void | enforcequality (m, b) struct mesh *m |
poolinit & | m (struct badsubseg), BADSUBSEGPERBLOCK, BADSUBSEGPERBLOCK, 0 |
if (b->verbose &&(m->badsubsegs.items > 0)) | |
splitencsegs (m, b, 0) | |
if ((b->minangle > 0.0)||b->vararea||b->fixedarea||b->usertest) | |
if (!b->quiet &&b->conformdel &&(m->badsubsegs.items > 0)&&(m->steinerleft==0)) | |
void | highorder (m, b) struct mesh *m |
char * | readline (string, infile, infilename) char *string |
while ((*result!= '\0')&&(*result!= '#')&&(*result!= '.')&&(*result!= '+')&&(*result!= '-')&&((*result< '0')||(*result > '9'))) | |
while ((*result== '#')||(*result== '\0')) | |
char * | findfield (string) char *string |
while ((*result!= '\0')&&(*result!= '#')&&(*result!= ' ')&&(*result!= '\t')) | |
void | readnodes (m, b, nodefilename, polyfilename, polyfile) struct mesh *m |
if (m->mesh_dim!=2) | |
void | readholes (m, b, polyfile, polyfilename, hlist, holes, rlist, regions) struct mesh *m |
if ((b->regionattrib||b->vararea)&&!b->refine) | |
fclose (polyfile) | |
void | finishfile (outfile, argc, argv) FILE *outfile |
fprintf (outfile,"# Generated by") | |
fprintf (outfile,"\n") | |
fclose (outfile) | |
void | writenodes (m, b, nodefilename, argc, argv) struct mesh *m |
if (outfile==(FILE *) NULL) | |
fprintf (outfile,"%ld %d %d %d\n", outvertices, m->mesh_dim, m->nextras, 1-b->nobound) | |
void | numbernodes (m, b) struct mesh *m |
void | writeelements (m, b, elefilename, argc, argv) struct mesh *m |
fprintf (outfile,"%ld %d %d\n", m->triangles.items,(b->order+1)*(b->order+2)/2, m->eextras) | |
void | writepoly (m, b, polyfilename, holelist, holes, regionlist, regions, argc, argv) struct mesh *m |
fprintf (outfile,"%d %d %d %d\n", 0, m->mesh_dim, m->nextras, 1-b->nobound) | |
fprintf (outfile,"%ld %d\n", m->subsegs.items, 1-b->nobound) | |
fprintf (outfile,"%d\n", holes) | |
if (holes > 0) | |
void | writeedges (m, b, edgefilename, argc, argv) struct mesh *m |
fprintf (outfile,"%ld %d\n", m->edges, 1-b->nobound) | |
void | writevoronoi (m, b, vnodefilename, vedgefilename, argc, argv) struct mesh *m |
fprintf (outfile,"%ld %d %d %d\n", m->triangles.items, 2, m->nextras, 0) | |
fprintf (outfile,"%ld %d\n", m->edges, 0) | |
void | writeneighbors (m, b, neighborfilename, argc, argv) struct mesh *m |
fprintf (outfile,"%ld %d\n", m->triangles.items, 3) | |
void | writeoff (m, b, offfilename, argc, argv) struct mesh *m |
fprintf (outfile,"OFF\n%ld %ld %ld\n", outvertices, m->triangles.items, m->edges) | |
void | quality_statistics (m, b) struct mesh *m |
printf ("Mesh quality statistics:\n\n") | |
smallestarea *biggestarea * | if (smallestangle >=1.0) |
if (biggestangle >=1.0) | |
printf (" Shortest edge: %16.5g | Longest edge: %16.5g\n", shortest, longest) | |
printf (" Shortest altitude: %12.5g | Largest aspect ratio: %8.5g\n\n", minaltitude, worstaspect) | |
printf (" Triangle aspect ratio histogram:\n") | |
printf (" 1.1547 - %-6.6g : %8d | %6.6g - %-6.6g : %8d\n", ratiotable[0], aspecttable[0], ratiotable[7], ratiotable[8], aspecttable[8]) | |
printf (" %6.6g - %-6.6g : %8d | %6.6g - : %8d\n", ratiotable[6], ratiotable[7], aspecttable[7], ratiotable[14], aspecttable[15]) | |
printf (" (Aspect ratio is longest edge divided by shortest altitude)\n\n") | |
printf (" Smallest angle: %15.5g | Largest angle: %15.5g\n\n", smallestangle, biggestangle) | |
printf (" Angle histogram:\n") | |
printf ("\n") | |
void | statistics (m, b) struct mesh *m |
printf (" Input vertices: %d\n", m->invertices) | |
printf ("\n Mesh vertices: %ld\n", m->vertices.items-m->undeads) | |
printf (" Mesh triangles: %ld\n", m->triangles.items) | |
printf (" Mesh edges: %ld\n", m->edges) | |
printf (" Mesh exterior boundary edges: %ld\n", m->hullsize) | |
if (b->poly||b->refine) | |
int | main (argc, argv) int argc |
parsecommandline (argc, argv,&b) | |
if (!b.quiet) | |
if (b.refine) | |
if (b.poly &&(m.triangles.items > 0)) | |
if (b.quality &&(m.triangles.items > 0)) | |
if (b.order > 1) | |
if (b.nonodewritten||(b.noiterationnum &&m.readnodefile)) | |
if (b.poly||b.convex) | |
if (m.regions > 0) | |
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 = 1 |
int | plus1mod3 [3] = {1, 2, 0} |
int | minus1mod3 [3] = {2, 0, 1} |
vertex | tridest |
vertex | triapex |
REAL | area |
REAL | dyoa |
REAL | dyda = tridest[1] - triapex[1] |
REAL | dyod = triorg[1] - tridest[1] |
REAL | oalen = dxoa * dxoa + dyoa * dyoa |
REAL | dalen = dxda * dxda + dyda * dyda |
REAL | odlen = dxod * dxod + dyod * dyod |
REAL | maxlen = (dalen > oalen) ? dalen : oalen |
dxoa = triorg[0] - triapex[0] | |
dxda = tridest[0] - triapex[0] | |
dxod = triorg[0] - tridest[0] | |
else | |
memptr = (VOID *) malloc((unsigned int) size) | |
char ** | argv |
struct behavior * | b |
int | meshnumber |
int | i = 0 |
int | j = 1 |
int | k |
char | workstring [FILENAMESIZE] = 'd' |
b | poly = b->refine = b->quality = 0 |
b | vararea = b->fixedarea = b->usertest = 0 |
b | regionattrib = b->convex = b->weighted = b->jettison = 0 |
b | firstnumber = 1 |
b | edgesout = b->voronoi = b->neighbors = b->geomview = 0 |
b | nobound = b->nopolywritten = b->nonodewritten = b->noelewritten = 0 |
b | noiterationnum = 0 |
b | noholes = b->noexact = 0 |
b | incremental = b->sweepline = 0 |
b | dwyer = 1 |
b | splitseg = 0 |
b | docheck = 0 |
b | nobisect = 0 |
b | conformdel = 0 |
b | steiner = -1 |
b | order = 1 |
b | minangle = 0.0 |
b | maxarea = -1.0 |
b | quiet = b->verbose = 0 |
b | innodefilename [0] = '\0' |
b | usesegments = b->poly || b->refine || b->quality || b->convex |
b | goodangle = cos(b->minangle * PI / 180.0) |
increment = 0 | |
struct otri * | t |
struct osub | printsh |
vertex | printvertex |
called | dummytri |
int | trianglebytes |
int | subsegbytes |
m | dummytribase |
alignptr = (unsigned long) m->dummytribase | |
m | vertexmarkindex |
vertexsize = (m->vertexmarkindex + 2) * sizeof(int) | |
m | highorderindex = 6 + (b->usesegments * 3) |
trisize | |
m | elemattribindex = (trisize + sizeof(REAL) - 1) / sizeof(REAL) |
m | areaboundindex = m->elemattribindex + m->eextras + b->regionattrib |
triangle * | dyingtriangle |
do | |
return | newtriangle |
subseg * | dyingsubseg |
return | newsubseg |
vertex | dyingvertex |
return | newvertex = (vertex) poolalloc(&m->vertices) |
struct badsubseg * | dyingseg |
return | newseg |
int | number |
char * | foundvertex |
int | current = b->firstnumber |
getblock = m->vertices.firstblock | |
pooldeinit & | m |
struct otri * | newotri |
newotri | tri = (triangle *) poolalloc(&m->triangles) |
newotri | orient = 0 |
newsubseg | ss [0] = (subseg) m->dummysub |
newsubseg | ssorient = 0 |
REAL * | e |
int | flen |
REAL * | f |
REAL * | h |
INEXACT REAL | Qnew |
INEXACT REAL | hh |
INEXACT REAL | bvirt |
REAL | avirt |
REAL | bround |
REAL | around |
int | eindex = findex = 0 |
int | findex |
int | hindex = 0 |
REAL | enow = e[0] |
REAL | fnow = f[0] |
INEXACT REAL | product1 |
REAL | product0 |
INEXACT REAL | c |
INEXACT REAL | abig |
REAL | ahi |
REAL | alo |
REAL | bhi |
REAL | blo |
REAL | err1 |
REAL | err2 |
REAL | err3 |
Q = e[0] | |
vertex | pb |
vertex | pc |
REAL | detsum |
REAL | acxtail |
REAL | acytail |
REAL | bcxtail |
REAL | bcytail |
INEXACT REAL | detleft = (pa[0] - pc[0]) * (pb[1] - pc[1]) |
INEXACT REAL | detright = (pa[1] - pc[1]) * (pb[0] - pc[0]) |
REAL | detlefttail |
REAL | detrighttail |
REAL | det = estimate(4, B) |
REAL | errbound = ccwerrboundB * detsum |
REAL | B [4] = B3 |
REAL | C1 [8] |
REAL | C2 [12] |
REAL | D [16] |
INEXACT REAL | B3 |
int | C1length = fast_expansion_sum_zeroelim(4, B, 4, u, C1) |
int | C2length = fast_expansion_sum_zeroelim(C1length, C1, 4, u, C2) |
int | Dlength = fast_expansion_sum_zeroelim(C2length, C2, 4, u, D) |
REAL | u [4] = u3 |
INEXACT REAL | u3 |
INEXACT REAL | s1 |
INEXACT REAL | t1 |
REAL | s0 |
REAL | t0 |
INEXACT REAL | _i |
INEXACT REAL | _j |
REAL | _0 |
acx = (REAL) (pa[0] - pc[0]) | |
bcx = (REAL) (pb[0] - pc[0]) | |
acy = (REAL) (pa[1] - pc[1]) | |
bcy = (REAL) (pb[1] - pc[1]) | |
vertex | pa |
m | counterclockcount |
vertex | pd |
REAL | permanent |
INEXACT REAL | bdxcdy1 |
INEXACT REAL | cdxbdy1 |
INEXACT REAL | cdxady1 |
INEXACT REAL | adxcdy1 |
INEXACT REAL | adxbdy1 |
INEXACT REAL | bdxady1 |
REAL | bdxcdy0 |
REAL | cdxbdy0 |
REAL | cdxady0 |
REAL | adxcdy0 |
REAL | adxbdy0 |
REAL | bdxady0 |
REAL | bc [4] = bc3 |
REAL | ca [4] = ca3 |
REAL | ab [4] = ab3 |
INEXACT REAL | bc3 |
INEXACT REAL | ca3 |
INEXACT REAL | ab3 |
REAL | axbc [8] |
REAL | axxbc [16] |
REAL | aybc [8] |
REAL | ayybc [16] |
REAL | adet [32] |
int | axbclen = scale_expansion_zeroelim(4, bc, adx, axbc) |
int | axxbclen = scale_expansion_zeroelim(axbclen, axbc, adx, axxbc) |
int | aybclen = scale_expansion_zeroelim(4, bc, ady, aybc) |
int | ayybclen = scale_expansion_zeroelim(aybclen, aybc, ady, ayybc) |
int | alen = fast_expansion_sum_zeroelim(axxbclen, axxbc, ayybclen, ayybc, adet) |
REAL | bxca [8] |
REAL | bxxca [16] |
REAL | byca [8] |
REAL | byyca [16] |
REAL | bdet [32] |
int | bxcalen = scale_expansion_zeroelim(4, ca, bdx, bxca) |
int | bxxcalen = scale_expansion_zeroelim(bxcalen, bxca, bdx, bxxca) |
int | bycalen = scale_expansion_zeroelim(4, ca, bdy, byca) |
int | byycalen = scale_expansion_zeroelim(bycalen, byca, bdy, byyca) |
int | blen = fast_expansion_sum_zeroelim(bxxcalen, bxxca, byycalen, byyca, bdet) |
REAL | cxab [8] |
REAL | cxxab [16] |
REAL | cyab [8] |
REAL | cyyab [16] |
REAL | cdet [32] |
int | cxablen = scale_expansion_zeroelim(4, ab, cdx, cxab) |
int | cxxablen = scale_expansion_zeroelim(cxablen, cxab, cdx, cxxab) |
int | cyablen = scale_expansion_zeroelim(4, ab, cdy, cyab) |
int | cyyablen = scale_expansion_zeroelim(cyablen, cyab, cdy, cyyab) |
int | clen = fast_expansion_sum_zeroelim(cxxablen, cxxab, cyyablen, cyyab, cdet) |
REAL | abdet [64] |
int | ablen = fast_expansion_sum_zeroelim(alen, adet, blen, bdet, abdet) |
REAL | fin1 [1152] |
REAL | fin2 [1152] |
REAL * | finnow = fin1 |
REAL * | finother = fin2 |
REAL * | finswap = finnow |
int | finlength = fast_expansion_sum_zeroelim(ablen, abdet, clen, cdet, fin1) |
REAL | adxtail |
REAL | bdxtail |
REAL | cdxtail |
REAL | adytail |
REAL | bdytail |
REAL | cdytail |
INEXACT REAL | adxadx1 |
INEXACT REAL | adyady1 |
INEXACT REAL | bdxbdx1 |
INEXACT REAL | bdybdy1 |
INEXACT REAL | cdxcdx1 |
INEXACT REAL | cdycdy1 |
REAL | adxadx0 |
REAL | adyady0 |
REAL | bdxbdx0 |
REAL | bdybdy0 |
REAL | cdxcdx0 |
REAL | cdycdy0 |
REAL | aa [4] |
REAL | bb [4] |
REAL | cc [4] |
INEXACT REAL | aa3 |
INEXACT REAL | bb3 |
INEXACT REAL | cc3 |
INEXACT REAL | ti1 |
INEXACT REAL | tj1 |
REAL | ti0 |
REAL | tj0 |
REAL | v [4] |
INEXACT REAL | v3 |
REAL | temp8 [8] |
REAL | temp16a [16] |
REAL | temp16b [16] |
REAL | temp16c [16] |
REAL | temp32a [32] |
REAL | temp32b [32] |
REAL | temp48 [48] |
REAL | temp64 [64] |
int | temp8len |
int | temp16alen |
int | temp16blen |
int | temp16clen |
int | temp32alen |
int | temp32blen |
int | temp48len |
int | temp64len |
REAL | axtbb [8] |
REAL | axtcc [8] |
REAL | aytbb [8] |
REAL | aytcc [8] |
int | axtbblen |
int | axtcclen |
int | aytbblen |
int | aytcclen |
REAL | bxtaa [8] |
REAL | bxtcc [8] |
REAL | bytaa [8] |
REAL | bytcc [8] |
int | bxtaalen |
int | bxtcclen |
int | bytaalen |
int | bytcclen |
REAL | cxtaa [8] |
REAL | cxtbb [8] |
REAL | cytaa [8] |
REAL | cytbb [8] |
int | cxtaalen |
int | cxtbblen |
int | cytaalen |
int | cytbblen |
REAL | axtbc [8] |
REAL | aytbc [8] |
REAL | bxtca [8] |
REAL | bytca [8] |
REAL | cxtab [8] |
REAL | cytab [8] |
int | axtbclen =0 |
int | aytbclen =0 |
int | bxtcalen =0 |
int | bytcalen =0 |
int | cxtablen =0 |
int | cytablen =0 |
REAL | axtbct [16] |
REAL | aytbct [16] |
REAL | bxtcat [16] |
REAL | bytcat [16] |
REAL | cxtabt [16] |
REAL | cytabt [16] |
int | axtbctlen |
int | aytbctlen |
int | bxtcatlen |
int | bytcatlen |
int | cxtabtlen |
int | cytabtlen |
REAL | axtbctt [8] |
REAL | aytbctt [8] |
REAL | bxtcatt [8] |
REAL | bytcatt [8] |
REAL | cxtabtt [8] |
REAL | cytabtt [8] |
int | axtbcttlen |
int | aytbcttlen |
int | bxtcattlen |
int | bytcattlen |
int | cxtabttlen |
int | cytabttlen |
REAL | abt [8] |
REAL | bct [8] |
REAL | cat [8] |
int | abtlen = fast_expansion_sum_zeroelim(at_blen, at_b, bt_alen, bt_a, abt) |
int | bctlen |
int | catlen = fast_expansion_sum_zeroelim(ct_alen, ct_a, at_clen, at_c, cat) |
REAL | abtt [4] |
REAL | bctt [4] |
REAL | catt [4] |
int | abttlen |
int | bcttlen |
int | cattlen |
INEXACT REAL | abtt3 |
INEXACT REAL | bctt3 |
INEXACT REAL | catt3 |
REAL | negate |
adx = (REAL) (pa[0] - pd[0]) | |
bdx = (REAL) (pb[0] - pd[0]) | |
cdx = (REAL) (pc[0] - pd[0]) | |
ady = (REAL) (pa[1] - pd[1]) | |
bdy = (REAL) (pb[1] - pd[1]) | |
cdy = (REAL) (pc[1] - pd[1]) | |
REAL | bdxcdy |
REAL | cdxbdy = cdx * bdy |
REAL | cdxady = cdx * ady |
REAL | adxcdy = adx * cdy |
REAL | adxbdy = adx * bdy |
REAL | bdxady = bdx * ady |
REAL | alift = adx * adx + ady * ady |
REAL | blift = bdx * bdx + bdy * bdy |
REAL | clift = cdx * cdx + cdy * cdy |
m | incirclecount = m->counterclockcount = m->orient3dcount = 0 |
REAL | aheight |
REAL | bheight |
REAL | cheight |
REAL | dheight |
REAL | adheighttail |
REAL | bdheighttail |
REAL | cdheighttail |
INEXACT REAL | at_blarge |
INEXACT REAL | at_clarge |
INEXACT REAL | bt_clarge |
INEXACT REAL | bt_alarge |
INEXACT REAL | ct_alarge |
INEXACT REAL | ct_blarge |
REAL | at_b [4] |
REAL | at_c [4] |
REAL | bt_c [4] |
REAL | bt_a [4] |
REAL | ct_a [4] |
REAL | ct_b [4] |
int | at_blen |
int | at_clen |
int | bt_clen |
int | bt_alen |
int | ct_alen |
int | ct_blen |
INEXACT REAL | bdxt_cdy1 |
INEXACT REAL | cdxt_bdy1 |
INEXACT REAL | cdxt_ady1 |
INEXACT REAL | adxt_cdy1 |
INEXACT REAL | adxt_bdy1 |
INEXACT REAL | bdxt_ady1 |
REAL | bdxt_cdy0 |
REAL | cdxt_bdy0 |
REAL | cdxt_ady0 |
REAL | adxt_cdy0 |
REAL | adxt_bdy0 |
REAL | bdxt_ady0 |
INEXACT REAL | bdyt_cdx1 |
INEXACT REAL | cdyt_bdx1 |
INEXACT REAL | cdyt_adx1 |
INEXACT REAL | adyt_cdx1 |
INEXACT REAL | adyt_bdx1 |
INEXACT REAL | bdyt_adx1 |
REAL | bdyt_cdx0 |
REAL | cdyt_bdx0 |
REAL | cdyt_adx0 |
REAL | adyt_cdx0 |
REAL | adyt_bdx0 |
REAL | bdyt_adx0 |
INEXACT REAL | bdxt_cdyt1 |
INEXACT REAL | cdxt_bdyt1 |
INEXACT REAL | cdxt_adyt1 |
INEXACT REAL | adxt_cdyt1 |
INEXACT REAL | adxt_bdyt1 |
INEXACT REAL | bdxt_adyt1 |
REAL | bdxt_cdyt0 |
REAL | cdxt_bdyt0 |
REAL | cdxt_adyt0 |
REAL | adxt_cdyt0 |
REAL | adxt_bdyt0 |
REAL | bdxt_adyt0 |
REAL | w [16] |
int | vlength |
int | wlength = scale_expansion_zeroelim(bctlen, bct, adheight, w) |
INEXACT REAL | _k |
adheight = (REAL) (aheight - dheight) | |
bdheight = (REAL) (bheight - dheight) | |
cdheight = (REAL) (cheight - dheight) | |
m | orient3dcount |
vertex | torg |
vertex | tdest |
vertex | tapex |
vertex | circumcenter = torg[1] + dy |
REAL * | xi = (yao * dx - xao * dy) * (2.0 * denominator) |
REAL * | eta = (xdo * dy - ydo * dx) * (2.0 * denominator) |
int | offcenter |
REAL | dodist |
REAL | aodist = xao * xao + yao * yao |
REAL | dadist |
REAL | denominator |
REAL | dx = (yao * dodist - ydo * aodist) * denominator |
REAL | dy = (xdo * aodist - xao * dodist) * denominator |
REAL | dxoff |
REAL | dyoff |
m | circumcentercount |
xdo = tdest[0] - torg[0] | |
ydo = tdest[1] - torg[1] | |
xao = tapex[0] - torg[0] | |
yao = tapex[1] - torg[1] | |
m | undeads = 0 |
m | samples = 1 |
m | checksegments = 0 |
m | checkquality = 0 |
m | hyperbolacount = m->circletopcount = m->circumcentercount = 0 |
struct otri oppotri | oppooppotri |
vertex | triorg |
vertex | oppoorg |
vertex | oppodest |
int | horrors = 0 |
int | saveexact = b->noexact |
triangle | ptr |
b | noexact = 0 |
struct otri | oppotri |
struct osub | opposubseg |
vertex | oppoapex |
int | shouldbedelaunay |
subseg | sptr |
struct badtriang * | badtri |
int | exponent |
int | expincrement |
int | queuenumber |
int | posexponent = 0 |
m | queuetail [queuenumber] = badtri |
badtri | nexttriang = (struct badtriang *) NULL |
struct otri * | enqtri |
REAL | minedge |
vertex | enqapex |
vertex | enqorg |
vertex | enqdest |
newbad = (struct badtriang *) poolalloc(&m->badtriangles) | |
newbad | poortri = encode(*enqtri) |
newbad | key = minedge |
newbad | triangapex = enqapex |
newbad | triangorg = enqorg |
newbad | triangdest = enqdest |
result = m->queuefront[m->firstnonemptyq] | |
m | queuefront [m->firstnonemptyq] = result->nexttriang |
struct osub * | testsubseg |
struct osub | testsym |
struct badsubseg * | encroachedseg |
REAL | dotproduct |
int | encroached = 0 |
int | sides = 0 |
vertex | eorg |
vertex | edest |
vertex | eapex |
struct otri * | testtri |
struct osub | testsub |
vertex | base1 = tapex |
vertex | base2 = torg |
vertex | org1 |
vertex | dest1 |
vertex | org2 |
vertex | dest2 |
vertex | joinvertex |
REAL | dxao = tapex[0] - torg[0] |
REAL | dyao = tapex[1] - torg[1] |
REAL | dxod2 = dxod * dxod |
REAL | dyod2 = dyod * dyod |
REAL | dxda2 = dxda * dxda |
REAL | dyda2 = dyda * dyda |
REAL | dxao2 = dxao * dxao |
REAL | dyao2 = dyao * dyao |
REAL | apexlen = dxod2 + dyod2 |
REAL | orglen = dxda2 + dyda2 |
REAL | destlen = dxao2 + dyao2 |
REAL | angle = dxod * dxda + dyod * dyda |
REAL | dist1 |
REAL | dist2 |
vertex | searchpoint = pc[0] - (yac * bclen2 - ybc * aclen2) / (2.0 * ccwabc) |
struct otri * | searchtri |
int | stopatsubsegment |
struct osub | checkedge |
vertex | forg |
vertex | fdest |
vertex | fapex |
REAL | orgorient |
REAL | destorient |
int | moveleft |
char * | firsttri |
struct otri | sampletri |
REAL | searchdist |
REAL | dist |
REAL | ahead = counterclockwise(m, b, torg, tdest, searchpoint) |
long | samplesperblock = (m->samples * TRIPERBLOCK - 1) / m->triangles.maxitems + 1 |
long | totalsamplesleft = m->samples |
long | samplesleft |
long | population = m->triangles.itemsfirstblock |
long | totalpopulation = m->triangles.maxitems |
sampleblock = m->triangles.firstblock | |
int | subsegmark |
struct otri * | flipedge |
struct otri topleft | topright |
struct otri | top |
struct otri botlcasing | botrcasing |
struct otri toplcasing | toprcasing ={NULL, 0} |
struct osub botlsubseg | botrsubseg |
struct osub toplsubseg | toprsubseg |
vertex | leftvertex |
vertex | rightvertex = first |
vertex | botvertex |
vertex | farvertex |
int | segmentflaws |
int | triflaws |
struct otri botleft | botright |
struct otri newbotleft | newbotright |
struct otri | newtopright |
struct otri | toplcasing ={NULL, 0} |
struct osub | brokensubseg |
struct osub | checksubseg |
struct osub | rightsubseg |
struct flipstacker * | newflip |
vertex | first |
vertex | topvertex |
vertex | segmentorg |
vertex | segmentdest |
REAL | attrib |
enum insertvertexresult | success = SUCCESSFULVERTEX |
enum locateresult | intersect = ONEDGE |
int | doflip |
int | mirrorflag |
int | enq |
struct otri * | firstedge |
struct otri * | lastedge |
int | edgecount = 1 |
struct otri | besttri |
struct otri | tempedge |
vertex | leftbasevertex |
vertex | rightbasevertex |
vertex | testvertex |
vertex | bestvertex |
int | bestnumber = 1 |
struct otri * | deltri |
struct otri | deltriright |
struct otri lefttri | righttri |
struct otri leftcasing | rightcasing |
vertex | delvertex |
vertex | neworg |
struct otri | gluetri |
int | arraysize |
int | pivot |
REAL | pivotx = sortarray[pivot][0] |
REAL | pivoty = sortarray[pivot][1] |
vertex | temp |
left = -1 | |
right = arraysize | |
int | median |
int | axis |
REAL | pivot1 = sortarray[pivot][axis] |
REAL | pivot2 = sortarray[pivot][1 - axis] |
divider = arraysize >> 1 | |
struct otri * | farleft |
struct otri * | innerleft |
struct otri * | innerright |
struct otri * | farright = farrightflag |
struct otri | baseedge |
struct otri | nextedge |
struct otri sidecasing topcasing | outercasing |
vertex | innerleftdest |
vertex | innerrightorg |
vertex | innerleftapex |
vertex | innerrightapex |
vertex | farleftpt |
vertex | farrightpt |
vertex | farleftapex |
vertex | farrightapex |
vertex | lowerleft = innerleftdest |
vertex | lowerright = innerrightorg |
vertex | upperleft |
vertex | upperright |
vertex | nextapex |
vertex | checkvertex = (vertex) NULL |
int | changemade |
int | badedge |
int | leftfinished |
int | rightfinished |
vertex * | sortarray = (vertex *) trimalloc(m->invertices * (int) sizeof(vertex)) |
int | vertices |
struct otri * | startghost |
struct otri | dissolveedge |
struct otri | deadtriangle |
vertex | markorg |
long | hullsize = 0 |
struct otri hullleft | hullright |
REAL | width |
m | infvertex1 = (vertex) trimalloc(m->vertices.itembytes) |
m | infvertex2 = (vertex) trimalloc(m->vertices.itembytes) |
m | infvertex3 = (vertex) trimalloc(m->vertices.itembytes) |
struct otri | searchedge |
vertex | vertexloop |
int | heapsize = m->invertices |
struct event * | newevent |
int | eventnum |
int | parent |
int | notdone = eventnum > 0 |
eventx = newevent->xkey | |
eventy = newevent->ykey | |
heap [eventnum] = newevent | |
newevent | heapposition = eventnum |
int | leftchild = 2 * eventnum + 1 |
int | rightchild |
int | smallest |
thisevent = heap[eventnum] | |
moveevent = heap[heapsize - 1] | |
struct event *** | eventheap |
struct event ** | events = (struct event *) trimalloc(maxevents * (int) sizeof(struct event)) |
struct event ** | freeevents = (struct event *) NULL |
int | maxevents |
struct otri * | fronttri |
vertex | newsite |
REAL | dxa |
REAL | dya = leftvertex[1] - newsite[1] |
REAL | dxb = rightvertex[0] - newsite[0] |
REAL | dyb = rightvertex[1] - newsite[1] |
REAL | ccwabc = counterclockwise(m, b, pa, pb, pc) |
REAL | aclen2 |
REAL | bclen2 = xbc * xbc + ybc * ybc |
REAL | ablen2 = xab * xab + yab * yab |
m | circletopcount |
xac = pa[0] - pc[0] | |
yac = pa[1] - pc[1] | |
xbc = pb[0] - pc[0] | |
ybc = pb[1] - pc[1] | |
xab = pa[0] - pb[0] | |
yab = pa[1] - pb[1] | |
vertex | eventvertex |
org * | checktri |
struct splaynode * | splaytree |
struct splaynode * | lefttree |
struct splaynode * | righttree = splay(m, splaytree->rchild, searchpoint, searchtri) |
struct splaynode * | leftright |
int | rightofroot |
int | rightofchild |
leftright | rchild = righttree |
struct splaynode * | splayroot = splay(m, splayroot, searchvertex, searchtri) |
struct otri * | newkey |
newsplaynode = (struct splaynode *) poolalloc(&m->splaynodes) | |
splayroot | lchild = (struct splaynode *) NULL |
REAL | topy |
struct otri * | bottommost |
vertex | searchvertex |
farrightflag = 0 | |
struct event * | nextevent |
struct otri | fliptri |
struct otri lefttri righttri farlefttri | farrighttri |
struct otri | inserttri |
vertex | firstvertex = (vertex) eventheap[0]->eventptr |
vertex | secondvertex |
vertex | nextvertex |
vertex | lastvertex = secondvertex |
vertex | connectvertex |
vertex | midvertex |
REAL | lefttest |
REAL | righttest |
int | check4events |
eventheap[0] | eventptr = (VOID *) freeevents |
m | eextras = 0 |
char * | elefilename |
char * | areafilename |
char * | polyfilename |
FILE * | polyfile = (FILE *) NULL |
FILE * | areafile |
char | inputline [INPUTLINESIZE] |
char * | stringptr = readline(inputline, elefile, elefilename) |
int | areaelements |
struct otri | triangleloop |
struct otri | triangleleft |
struct otri | checkleft |
struct otri | checkneighbor |
struct osub | subsegloop |
triangle * | vertexarray |
triangle * | prevlink |
triangle | nexttri |
vertex | checkdest |
vertex | checkapex |
vertex | shorg |
vertex | killvertex |
int | corner [3] |
int | end [2] |
int | killvertexindex |
int | incorners |
int | segmentmarkers = 0 |
int | boundmarker |
int | aroundvertex |
int | notfound |
long | elementnumber = b->firstnumber |
long | segmentnumber |
elefile = fopen(elefilename, "r") | |
m | inelements = (int) strtol(stringptr, &stringptr, 0) |
vertex | startvertex |
REAL | leftccw = counterclockwise(m, b, searchpoint, startvertex, leftvertex) |
REAL | rightccw = counterclockwise(m, b, startvertex, searchpoint, rightvertex) |
int | leftflag = leftccw > 0.0 |
int | rightflag = rightccw > 0.0 |
struct otri * | splittri |
struct osub * | splitsubseg |
vertex | endpoint2 |
vertex | endpoint1 |
REAL | ex = endpoint2[0] - endpoint1[0] |
REAL | ey = endpoint2[1] - endpoint1[1] |
REAL | tx = tdest[0] - torg[0] |
REAL | ty = tdest[1] - torg[1] |
REAL | etx = torg[0] - endpoint2[0] |
REAL | ety = torg[1] - endpoint2[1] |
REAL | split = (ey * etx - ex * ety) / denom |
REAL | denom = ty * ex - tx * ey |
int | newmark |
struct osub | crosssubseg |
enum finddirectionresult | collinear = finddirection(m, b, searchtri, endpoint2) |
vertex | midvertex1 |
vertex | midvertex2 |
struct otri * | fixuptri |
int | leftside |
struct otri | fartri |
struct osub | faredge |
vertex | nearvertex |
struct otri * | starttri |
int | collision = 0 |
int | done = 0 |
triangle | encodedtri |
int | end1 |
int | end2 |
struct osub | hullsubseg |
vertex | horg |
vertex | hdest |
struct otri | neighbor |
triangle ** | virusloop = (triangle **) traverse(&m->viri) |
struct osub | neighborsubseg |
vertex | norg |
vertex | ndest |
vertex | deadorg |
vertex | deaddest |
vertex | deadapex |
int | killorg |
REAL | attribute |
triangle ** | regiontri |
vertex | regionorg |
vertex | regiondest |
vertex | regionapex |
REAL * | holelist |
int | holes = (int) strtol(stringptr, &stringptr, 0) |
REAL * | regionlist |
int | regions = 0 |
struct otri * | regiontris |
triangle ** | holetri |
vertex | searchorg |
vertex | searchdest |
struct osub | testsh |
struct osub | currentenc |
struct badsubseg * | encloop |
REAL | segmentlength |
REAL | nearestpoweroftwo |
REAL | multiplier |
REAL | divisor |
int | acuteorg |
int | acuteorg2 |
int | acutedest |
int | acutedest2 |
vertex | borg |
vertex | bdest |
vertex | bapex |
int | errorflag |
struct osub | checkmark |
m vertices | deaditemstack = (VOID *) NULL |
FILE * | infile |
char * | infilename = nodefilename |
char * | nodefilename |
REAL | x |
REAL | y |
int | firstnode |
int | nodemarkers |
int | currentmarker |
m | xminextreme = 10 * m->xmin - 9 * m->xmax |
REAL ** | hlist = holelist |
REAL ** | rlist = (REAL *) NULL |
int | index |
int | argc |
long | outvertices |
int | vertexnumber = b->firstnumber |
outfile = fopen(nodefilename, "w") | |
vertex | p1 |
vertex | p2 |
vertex | p3 |
vertex | mid1 |
vertex | mid2 |
vertex | mid3 |
long | holenumber |
long | regionnumber |
long | subsegnumber = b->firstnumber |
char * | edgefilename |
struct otri triangleloop | trisym |
long | edgenumber = b->firstnumber |
char * | vnodefilename |
char * | vedgefilename |
long | vnodenumber = b->firstnumber |
long | vedgenumber = b->firstnumber |
char * | neighborfilename |
int | neighbor1 |
int | neighbor2 |
int | neighbor3 |
char * | offfilename |
vertex | p [3] |
REAL | cossquaretable [8] |
REAL | ratiotable [16] = 1.5 |
REAL | edgelength [3] |
REAL | cossquare |
REAL | triarea |
REAL | shortest = minaltitude |
REAL | longest = 0.0 |
REAL | trilongest2 |
REAL | smallestarea = minaltitude |
REAL | biggestarea = 0.0 |
REAL | triminaltitude2 |
REAL | minaltitude = m->xmax - m->xmin + m->ymax - m->ymin |
REAL | triaspect2 |
REAL | worstaspect = 0.0 |
REAL | smallestangle = 0.0 |
REAL | biggestangle = 2.0 |
REAL | radconst = PI / 18.0 |
REAL | degconst = 180.0 / PI |
int | angletable [18] |
int | aspecttable [16] |
int | aspectindex |
int | tendegree |
int | acutebiggest = 1 |
int | ii |
REAL * | holearray |
REAL * | regionarray |
struct timeval tv0 tv1 tv2 tv3 tv4 tv5 | tv6 |
struct timezone | tz |
gettimeofday & | tv0 |
m | steinerleft = b.steiner |
m | edges = (3l * m.triangles.items + m.hullsize) / 2l |
return | |
This file is part of the triangle source code, not part of Chaste per se.
We use the <autogenerated> tag to ignore it from our Doxygen checker.
Definition in file triangle.cpp.
#define bond | ( | otri1, | |
otri2 | |||
) |
Definition at line 1166 of file triangle.cpp.
#define decode | ( | ptr, | |
otri | |||
) |
Definition at line 1021 of file triangle.cpp.
#define dnext | ( | otri1, | |
otri2 | |||
) |
Definition at line 1095 of file triangle.cpp.
#define dnextself | ( | otri | ) |
Definition at line 1099 of file triangle.cpp.
#define dprev | ( | otri1, | |
otri2 | |||
) |
Definition at line 1107 of file triangle.cpp.
#define dprevself | ( | otri | ) |
Definition at line 1111 of file triangle.cpp.
#define Fast_Two_Sum | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4853 of file triangle.cpp.
#define Fast_Two_Sum_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4849 of file triangle.cpp.
#define infect | ( | otri | ) |
Definition at line 1193 of file triangle.cpp.
#define killsubseg | ( | sub | ) |
Definition at line 1351 of file triangle.cpp.
#define killtri | ( | tria | ) |
Definition at line 1228 of file triangle.cpp.
#define lnext | ( | otri1, | |
otri2 | |||
) |
Definition at line 1051 of file triangle.cpp.
#define lprev | ( | otri1, | |
otri2 | |||
) |
Definition at line 1060 of file triangle.cpp.
#define onext | ( | otri1, | |
otri2 | |||
) |
Definition at line 1071 of file triangle.cpp.
#define onextself | ( | otri | ) |
Definition at line 1075 of file triangle.cpp.
#define oprev | ( | otri1, | |
otri2 | |||
) |
Definition at line 1083 of file triangle.cpp.
#define oprevself | ( | otri | ) |
Definition at line 1087 of file triangle.cpp.
#define otricopy | ( | otri1, | |
otri2 | |||
) |
Definition at line 1180 of file triangle.cpp.
#define otriequal | ( | otri1, | |
otri2 | |||
) |
Definition at line 1186 of file triangle.cpp.
#define rnext | ( | otri1, | |
otri2 | |||
) |
Definition at line 1119 of file triangle.cpp.
#define rnextself | ( | otri | ) |
Definition at line 1124 of file triangle.cpp.
#define rprev | ( | otri1, | |
otri2 | |||
) |
Definition at line 1133 of file triangle.cpp.
#define rprevself | ( | otri | ) |
Definition at line 1138 of file triangle.cpp.
#define sbond | ( | osub1, | |
osub2 | |||
) |
Definition at line 1322 of file triangle.cpp.
#define sdecode | ( | sptr, | |
osub | |||
) |
Definition at line 1241 of file triangle.cpp.
#define snext | ( | osub1, | |
osub2 | |||
) |
Definition at line 1276 of file triangle.cpp.
#define snextself | ( | osub | ) |
Definition at line 1280 of file triangle.cpp.
#define spivot | ( | osub1, | |
osub2 | |||
) |
Definition at line 1265 of file triangle.cpp.
#define spivotself | ( | osub | ) |
Definition at line 1269 of file triangle.cpp.
#define Split | ( | a, | |
ahi, | |||
alo | |||
) |
Definition at line 4879 of file triangle.cpp.
#define Square | ( | a, | |
x, | |||
y | |||
) |
Definition at line 4916 of file triangle.cpp.
#define Square_Tail | ( | a, | |
x, | |||
y | |||
) |
Definition at line 4910 of file triangle.cpp.
#define ssym | ( | osub1, | |
osub2 | |||
) |
Definition at line 1255 of file triangle.cpp.
Definition at line 1368 of file triangle.cpp.
#define subsegcopy | ( | osub1, | |
osub2 | |||
) |
Definition at line 1334 of file triangle.cpp.
#define subsegequal | ( | osub1, | |
osub2 | |||
) |
Definition at line 1340 of file triangle.cpp.
#define sym | ( | otri1, | |
otri2 | |||
) |
Definition at line 1041 of file triangle.cpp.
#define symself | ( | otri | ) |
Definition at line 1045 of file triangle.cpp.
Definition at line 1374 of file triangle.cpp.
Definition at line 1361 of file triangle.cpp.
#define Two_Diff | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4875 of file triangle.cpp.
#define Two_Diff_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4868 of file triangle.cpp.
#define Two_One_Diff | ( | a1, | |
a0, | |||
b, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Definition at line 4927 of file triangle.cpp.
#define Two_One_Product | ( | a1, | |
a0, | |||
b, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Definition at line 4941 of file triangle.cpp.
#define Two_One_Sum | ( | a1, | |
a0, | |||
b, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Definition at line 4923 of file triangle.cpp.
#define Two_Product | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4893 of file triangle.cpp.
#define Two_Product_Presplit | ( | a, | |
b, | |||
bhi, | |||
blo, | |||
x, | |||
y | |||
) |
Definition at line 4900 of file triangle.cpp.
#define Two_Product_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4885 of file triangle.cpp.
#define Two_Sum | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4864 of file triangle.cpp.
#define Two_Sum_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Definition at line 4857 of file triangle.cpp.
#define Two_Two_Diff | ( | a1, | |
a0, | |||
b1, | |||
b0, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Definition at line 4935 of file triangle.cpp.
#define Two_Two_Sum | ( | a1, | |
a0, | |||
b1, | |||
b0, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Definition at line 4931 of file triangle.cpp.
#define uninfect | ( | otri | ) |
Definition at line 1197 of file triangle.cpp.
for | ( | ) |
Definition at line 3406 of file triangle.cpp.
if | ( | b-> | goodangle = = 1.0 | ) |
Definition at line 3604 of file triangle.cpp.
if | ( | ) |
Definition at line 5350 of file triangle.cpp.
REAL aclen2 |
Definition at line 10582 of file triangle.cpp.
REAL acxtail |
Definition at line 5239 of file triangle.cpp.
FILE* areafile |
Definition at line 11212 of file triangle.cpp.
struct otri baseedge |
Definition at line 9515 of file triangle.cpp.
REAL bdxcdy |
Definition at line 5979 of file triangle.cpp.
struct otri besttri |
Definition at line 8950 of file triangle.cpp.
vertex borg |
Definition at line 13577 of file triangle.cpp.
struct osub brokensubseg |
Definition at line 8305 of file triangle.cpp.
struct otri checkedge |
Definition at line 7588 of file triangle.cpp.
struct osub checkmark |
Definition at line 13805 of file triangle.cpp.
struct osub crosssubseg |
Definition at line 11909 of file triangle.cpp.
dadist |
Definition at line 6615 of file triangle.cpp.
REAL detsum |
Definition at line 5236 of file triangle.cpp.
struct otri nextedge finaledge dissolveedge |
Definition at line 10000 of file triangle.cpp.
do |
Definition at line 4490 of file triangle.cpp.
dodist |
Definition at line 6615 of file triangle.cpp.
*int *m dummytri |
Definition at line 4246 of file triangle.cpp.
m dummytribase |
Definition at line 4284 of file triangle.cpp.
REAL dxa |
Definition at line 10541 of file triangle.cpp.
dyoa |
Definition at line 1454 of file triangle.cpp.
else |
Definition at line 1476 of file triangle.cpp.
encodedtri |
Definition at line 12343 of file triangle.cpp.
vertex endpoint1 |
Definition at line 11781 of file triangle.cpp.
eventheap |
Definition at line 10499 of file triangle.cpp.
int eventnum |
Definition at line 10362 of file triangle.cpp.
vertex eventvertex |
Definition at line 10616 of file triangle.cpp.
exponent |
Definition at line 6993 of file triangle.cpp.
struct otri fartri |
Definition at line 12122 of file triangle.cpp.
char* firsttri |
Definition at line 7728 of file triangle.cpp.
foundvertex |
Definition at line 4667 of file triangle.cpp.
REAL hh |
Definition at line 5054 of file triangle.cpp.
long holenumber |
Definition at line 14752 of file triangle.cpp.
struct otri hullleft hullright |
Definition at line 10062 of file triangle.cpp.
struct otri innerleft innerright |
Definition at line 9508 of file triangle.cpp.
struct otri firstedge lastedge |
Definition at line 8942 of file triangle.cpp.
return lefttree |
Definition at line 10650 of file triangle.cpp.
triangledeinit & m |
Definition at line 4714 of file triangle.cpp.
maxevents |
Definition at line 10504 of file triangle.cpp.
meshnumber |
Definition at line 3372 of file triangle.cpp.
struct otri neighbor |
Definition at line 12748 of file triangle.cpp.
struct osub newsubseg |
Definition at line 4542 of file triangle.cpp.
struct otri nexttri |
Definition at line 11231 of file triangle.cpp.
struct otri oppotri oppooppotri |
Definition at line 6784 of file triangle.cpp.
struct otri oppotri |
Definition at line 6883 of file triangle.cpp.
vertex p[3] |
Definition at line 15433 of file triangle.cpp.
REAL permanent |
Definition at line 5395 of file triangle.cpp.
int pivot |
Definition at line 9290 of file triangle.cpp.
struct osub printsh |
Definition at line 3756 of file triangle.cpp.
triangle ptr |
Definition at line 6789 of file triangle.cpp.
INEXACT REAL Qnew |
Definition at line 5051 of file triangle.cpp.
REAL * regionlist |
Definition at line 13070 of file triangle.cpp.
samplesleft |
Definition at line 7736 of file triangle.cpp.
searchdist |
Definition at line 7734 of file triangle.cpp.
struct otri searchedge |
Definition at line 10215 of file triangle.cpp.
vertex startvertex |
Definition at line 11685 of file triangle.cpp.
struct osub testsub |
Definition at line 7303 of file triangle.cpp.
struct osub testsym |
Definition at line 7191 of file triangle.cpp.
struct otri testtri |
Definition at line 7298 of file triangle.cpp.
struct otri top |
Definition at line 8004 of file triangle.cpp.
struct otri botleft botright topright |
Definition at line 8003 of file triangle.cpp.
struct otri triangleloop |
Definition at line 11223 of file triangle.cpp.
vertex triorg |
Definition at line 6785 of file triangle.cpp.
trisize |
Definition at line 4409 of file triangle.cpp.
struct otri triangleloop trisym |
Definition at line 14900 of file triangle.cpp.
vertexarray |
Definition at line 11229 of file triangle.cpp.
vertex vertexloop |
Definition at line 10312 of file triangle.cpp.
m vertexmarkindex |
Definition at line 4363 of file triangle.cpp.
width |
Definition at line 10147 of file triangle.cpp.