Logo ROOT  
Reference Guide
sweep.c File Reference
#include "gluos.h"
#include <assert.h>
#include <stddef.h>
#include <setjmp.h>
#include <limits.h>
#include "mesh.h"
#include "geom.h"
#include "tess.h"
#include "dict.h"
#include "priorityq.h"
#include "memalloc.h"
#include "sweep.h"
Include dependency graph for sweep.c:

Macros

#define AddWinding(eDst, eSrc)
 
#define DebugEvent(tess)
 
#define FALSE   0
 
#define MAX(x, y)   ((x) >= (y) ? (x) : (y))
 
#define MIN(x, y)   ((x) <= (y) ? (x) : (y))
 
#define SENTINEL_COORD   (4 * GLU_TESS_MAX_COORD)
 
#define TOLERANCE_NONZERO   FALSE
 
#define TRUE   1
 

Functions

int __gl_computeInterior (GLUtesselator *tess)
 
static ActiveRegionAddRegionBelow (GLUtesselator *tess, ActiveRegion *regAbove, GLUhalfEdge *eNewUp)
 
static void AddRightEdges (GLUtesselator *tess, ActiveRegion *regUp, GLUhalfEdge *eFirst, GLUhalfEdge *eLast, GLUhalfEdge *eTopLeft, GLboolean cleanUp)
 
static void AddSentinel (GLUtesselator *tess, GLdouble t)
 
static void CallCombine (GLUtesselator *tess, GLUvertex *isect, void *data[4], GLfloat weights[4], int needed)
 
static int CheckForIntersect (GLUtesselator *tess, ActiveRegion *regUp)
 
static int CheckForLeftSplice (GLUtesselator *tess, ActiveRegion *regUp)
 
static int CheckForRightSplice (GLUtesselator *tess, ActiveRegion *regUp)
 
static void ComputeWinding (GLUtesselator *tess, ActiveRegion *reg)
 
static void ConnectLeftDegenerate (GLUtesselator *tess, ActiveRegion *regUp, GLUvertex *vEvent)
 
static void ConnectLeftVertex (GLUtesselator *tess, GLUvertex *vEvent)
 
static void ConnectRightVertex (GLUtesselator *tess, ActiveRegion *regUp, GLUhalfEdge *eBottomLeft)
 
static void DeleteRegion (GLUtesselator *tess, ActiveRegion *reg)
 
static void DoneEdgeDict (GLUtesselator *tess)
 
static void DonePriorityQ (GLUtesselator *tess)
 
static int EdgeLeq (GLUtesselator *tess, ActiveRegion *reg1, ActiveRegion *reg2)
 
static GLUhalfEdgeFinishLeftRegions (GLUtesselator *tess, ActiveRegion *regFirst, ActiveRegion *regLast)
 
static void FinishRegion (GLUtesselator *tess, ActiveRegion *reg)
 
static int FixUpperEdge (ActiveRegion *reg, GLUhalfEdge *newEdge)
 
static void GetIntersectData (GLUtesselator *tess, GLUvertex *isect, GLUvertex *orgUp, GLUvertex *dstUp, GLUvertex *orgLo, GLUvertex *dstLo)
 
static void InitEdgeDict (GLUtesselator *tess)
 
static int InitPriorityQ (GLUtesselator *tess)
 
static GLboolean IsWindingInside (GLUtesselator *tess, int n)
 
static void RemoveDegenerateEdges (GLUtesselator *tess)
 
static int RemoveDegenerateFaces (GLUmesh *mesh)
 
static void SpliceMergeVertices (GLUtesselator *tess, GLUhalfEdge *e1, GLUhalfEdge *e2)
 
static void SweepEvent (GLUtesselator *tess, GLUvertex *vEvent)
 
static ActiveRegionTopLeftRegion (ActiveRegion *reg)
 
static ActiveRegionTopRightRegion (ActiveRegion *reg)
 
static void VertexWeights (GLUvertex *isect, GLUvertex *org, GLUvertex *dst, GLfloat *weights)
 
static void WalkDirtyRegions (GLUtesselator *tess, ActiveRegion *regUp)
 

Macro Definition Documentation

◆ AddWinding

#define AddWinding (   eDst,
  eSrc 
)
Value:
(eDst->winding += eSrc->winding, \
eDst->Sym->winding += eSrc->Sym->winding)

Definition at line 100 of file sweep.c.

◆ DebugEvent

#define DebugEvent (   tess)

Definition at line 59 of file sweep.c.

◆ FALSE

#define FALSE   0

Definition at line 53 of file sweep.c.

◆ MAX

#define MAX (   x,
  y 
)    ((x) >= (y) ? (x) : (y))

Definition at line 94 of file sweep.c.

◆ MIN

#define MIN (   x,
  y 
)    ((x) <= (y) ? (x) : (y))

Definition at line 95 of file sweep.c.

◆ SENTINEL_COORD

#define SENTINEL_COORD   (4 * GLU_TESS_MAX_COORD)

Definition at line 1126 of file sweep.c.

◆ TOLERANCE_NONZERO

#define TOLERANCE_NONZERO   FALSE

Definition at line 939 of file sweep.c.

◆ TRUE

#define TRUE   1

Definition at line 50 of file sweep.c.

Function Documentation

◆ __gl_computeInterior()

int __gl_computeInterior ( GLUtesselator tess)

Definition at line 1301 of file sweep.c.

◆ AddRegionBelow()

static ActiveRegion * AddRegionBelow ( GLUtesselator tess,
ActiveRegion regAbove,
GLUhalfEdge eNewUp 
)
static

Definition at line 213 of file sweep.c.

◆ AddRightEdges()

static void AddRightEdges ( GLUtesselator tess,
ActiveRegion regUp,
GLUhalfEdge eFirst,
GLUhalfEdge eLast,
GLUhalfEdge eTopLeft,
GLboolean  cleanUp 
)
static

Definition at line 340 of file sweep.c.

◆ AddSentinel()

static void AddSentinel ( GLUtesselator tess,
GLdouble  t 
)
static

Definition at line 1128 of file sweep.c.

◆ CallCombine()

static void CallCombine ( GLUtesselator tess,
GLUvertex isect,
void data[4],
GLfloat  weights[4],
int  needed 
)
static

Definition at line 412 of file sweep.c.

◆ CheckForIntersect()

static int CheckForIntersect ( GLUtesselator tess,
ActiveRegion regUp 
)
static

Definition at line 606 of file sweep.c.

◆ CheckForLeftSplice()

static int CheckForLeftSplice ( GLUtesselator tess,
ActiveRegion regUp 
)
static

Definition at line 556 of file sweep.c.

◆ CheckForRightSplice()

static int CheckForRightSplice ( GLUtesselator tess,
ActiveRegion regUp 
)
static

Definition at line 499 of file sweep.c.

◆ ComputeWinding()

static void ComputeWinding ( GLUtesselator tess,
ActiveRegion reg 
)
static

Definition at line 259 of file sweep.c.

◆ ConnectLeftDegenerate()

static void ConnectLeftDegenerate ( GLUtesselator tess,
ActiveRegion regUp,
GLUvertex vEvent 
)
static

Definition at line 941 of file sweep.c.

◆ ConnectLeftVertex()

static void ConnectLeftVertex ( GLUtesselator tess,
GLUvertex vEvent 
)
static

Definition at line 1001 of file sweep.c.

◆ ConnectRightVertex()

static void ConnectRightVertex ( GLUtesselator tess,
ActiveRegion regUp,
GLUhalfEdge eBottomLeft 
)
static

Definition at line 847 of file sweep.c.

◆ DeleteRegion()

static void DeleteRegion ( GLUtesselator tess,
ActiveRegion reg 
)
static

Definition at line 151 of file sweep.c.

◆ DoneEdgeDict()

static void DoneEdgeDict ( GLUtesselator tess)
static

Definition at line 1173 of file sweep.c.

◆ DonePriorityQ()

static void DonePriorityQ ( GLUtesselator tess)
static

Definition at line 1261 of file sweep.c.

◆ EdgeLeq()

static int EdgeLeq ( GLUtesselator tess,
ActiveRegion reg1,
ActiveRegion reg2 
)
static

Definition at line 107 of file sweep.c.

◆ FinishLeftRegions()

static GLUhalfEdge * FinishLeftRegions ( GLUtesselator tess,
ActiveRegion regFirst,
ActiveRegion regLast 
)
static

Definition at line 284 of file sweep.c.

◆ FinishRegion()

static void FinishRegion ( GLUtesselator tess,
ActiveRegion reg 
)
static

Definition at line 266 of file sweep.c.

◆ FixUpperEdge()

static int FixUpperEdge ( ActiveRegion reg,
GLUhalfEdge newEdge 
)
static

Definition at line 166 of file sweep.c.

◆ GetIntersectData()

static void GetIntersectData ( GLUtesselator tess,
GLUvertex isect,
GLUvertex orgUp,
GLUvertex dstUp,
GLUvertex orgLo,
GLUvertex dstLo 
)
static

Definition at line 475 of file sweep.c.

◆ InitEdgeDict()

static void InitEdgeDict ( GLUtesselator tess)
static

Definition at line 1158 of file sweep.c.

◆ InitPriorityQ()

static int InitPriorityQ ( GLUtesselator tess)
static

Definition at line 1233 of file sweep.c.

◆ IsWindingInside()

static GLboolean IsWindingInside ( GLUtesselator tess,
int  n 
)
static

Definition at line 238 of file sweep.c.

◆ RemoveDegenerateEdges()

static void RemoveDegenerateEdges ( GLUtesselator tess)
static

Definition at line 1199 of file sweep.c.

◆ RemoveDegenerateFaces()

static int RemoveDegenerateFaces ( GLUmesh mesh)
static

Definition at line 1267 of file sweep.c.

◆ SpliceMergeVertices()

static void SpliceMergeVertices ( GLUtesselator tess,
GLUhalfEdge e1,
GLUhalfEdge e2 
)
static

Definition at line 438 of file sweep.c.

◆ SweepEvent()

static void SweepEvent ( GLUtesselator tess,
GLUvertex vEvent 
)
static

Definition at line 1068 of file sweep.c.

◆ TopLeftRegion()

static ActiveRegion * TopLeftRegion ( ActiveRegion reg)
static

Definition at line 180 of file sweep.c.

◆ TopRightRegion()

static ActiveRegion * TopRightRegion ( ActiveRegion reg)
static

Definition at line 202 of file sweep.c.

◆ VertexWeights()

static void VertexWeights ( GLUvertex isect,
GLUvertex org,
GLUvertex dst,
GLfloat weights 
)
static

Definition at line 454 of file sweep.c.

◆ WalkDirtyRegions()

static void WalkDirtyRegions ( GLUtesselator tess,
ActiveRegion regUp 
)
static

Definition at line 760 of file sweep.c.