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-sort.h"
#include "memalloc.h"
#include "sweep.h"
Include dependency graph for sweep.c:
This graph shows which files directly or indirectly include this file:


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


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

Define Documentation

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

Referenced by AddRightEdges(), RemoveDegenerateFaces(), and WalkDirtyRegions().

#define DebugEvent ( tess   ) 
#define FALSE   0
#define MAX ( x,
 )     ((x) >= (y) ? (x) : (y))

Referenced by CheckForIntersect().

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

Referenced by CheckForIntersect().


Referenced by AddSentinel(), and InitEdgeDict().


Referenced by ConnectLeftDegenerate().

#define TRUE   1

Function Documentation

int __gl_computeInterior ( SGItesselator tess  ) 
static ActiveRegion* AddRegionBelow ( SGItesselator tess,
ActiveRegion regAbove,
GLUhalfEdge eNewUp 
) [static]
static void AddRightEdges ( SGItesselator tess,
ActiveRegion regUp,
GLUhalfEdge eFirst,
GLUhalfEdge eLast,
GLUhalfEdge eTopLeft,
GLboolean  cleanUp 
) [static]
static void AddSentinel ( SGItesselator tess,
GLdouble  t 
) [static]
static void CallCombine ( SGItesselator tess,
GLUvertex isect,
void *  data[4],
GLfloat  weights[4],
int  needed 
) [static]
static int CheckForIntersect ( SGItesselator tess,
ActiveRegion regUp 
) [static]
static int CheckForLeftSplice ( SGItesselator tess,
ActiveRegion regUp 
) [static]
static int CheckForRightSplice ( SGItesselator tess,
ActiveRegion regUp 
) [static]
static void ComputeWinding ( SGItesselator tess,
ActiveRegion reg 
) [static]
static void ConnectLeftDegenerate ( SGItesselator tess,
ActiveRegion regUp,
GLUvertex vEvent 
) [static]
static void ConnectLeftVertex ( SGItesselator tess,
GLUvertex vEvent 
) [static]
static void ConnectRightVertex ( SGItesselator tess,
ActiveRegion regUp,
GLUhalfEdge eBottomLeft 
) [static]
static void DeleteRegion ( SGItesselator tess,
ActiveRegion reg 
) [static]
static void DoneEdgeDict ( SGItesselator tess  )  [static]
static void DonePriorityQ ( SGItesselator tess  )  [static]
static int EdgeLeq ( SGItesselator tess,
ActiveRegion reg1,
ActiveRegion reg2 
) [static]
static GLUhalfEdge* FinishLeftRegions ( SGItesselator tess,
ActiveRegion regFirst,
ActiveRegion regLast 
) [static]
static void FinishRegion ( SGItesselator tess,
ActiveRegion reg 
) [static]
static int FixUpperEdge ( ActiveRegion reg,
GLUhalfEdge newEdge 
) [static]
static void GetIntersectData ( SGItesselator tess,
GLUvertex isect,
GLUvertex orgUp,
GLUvertex dstUp,
GLUvertex orgLo,
GLUvertex dstLo 
) [static]
static void InitEdgeDict ( SGItesselator tess  )  [static]
static int InitPriorityQ ( SGItesselator tess  )  [static]
static GLboolean IsWindingInside ( SGItesselator tess,
int  n 
) [static]

References FALSE, and SGItesselator::windingRule.

Referenced by AddRightEdges(), and ComputeWinding().

static void RemoveDegenerateEdges ( SGItesselator tess  )  [static]
static int RemoveDegenerateFaces ( GLUmesh mesh  )  [static]
static void SpliceMergeVertices ( SGItesselator tess,
GLUhalfEdge e1,
GLUhalfEdge e2 
) [static]
static void SweepEvent ( SGItesselator tess,
GLUvertex vEvent 
) [static]
static ActiveRegion* TopLeftRegion ( ActiveRegion reg  )  [static]
static ActiveRegion* TopRightRegion ( ActiveRegion reg  )  [static]
static void VertexWeights ( GLUvertex isect,
GLUvertex org,
GLUvertex dst,
GLfloat *  weights 
) [static]

References GLUvertex::coords, and VertL1dist.

Referenced by GetIntersectData().

static void WalkDirtyRegions ( SGItesselator tess,
ActiveRegion regUp 
) [static]

Generated on Mon Mar 21 07:40:14 2011 for K-3D by doxygen 1.6.3