98 if(
f->inside && !
f->marked ) {
126 if( !
tess->flagBoundary ) {
135 (*(max.render))(
tess, max.eStart, max.size );
146#define Marked(f) (! (f)->inside || (f)->marked)
148#define AddToTrail(f,t) ((f)->trail = (t), (t) = (f), (f)->marked = TRUE)
150#define FreeTrail(t) do { \
151 while( (t) != NULL ) { \
152 (t)->marked = FALSE; t = (t)->trail; \
183#define IsEven(n) (((n) & 1) == 0)
260 for( ;
f !=
NULL;
f =
f->trail ) {
265 if(
tess->flagBoundary ) {
278 }
while(
e !=
f->anEdge );
295 e->Lface->marked =
TRUE;
318 e->Lface->marked =
TRUE;
324 e->Lface->marked =
TRUE;
354 }
while(
e !=
f->anEdge );
363#define SIGN_INCONSISTENT 2
395 norm[0] = norm[1] = norm[2] = 0.0;
399 xc =
vc->coords[0] -
v0->coords[0];
400 yc =
vc->coords[1] -
v0->coords[1];
401 zc =
vc->coords[2] -
v0->coords[2];
404 xc =
vc->coords[0] -
v0->coords[0];
405 yc =
vc->coords[1] -
v0->coords[1];
406 zc =
vc->coords[2] -
v0->coords[2];
413 dot =
n[0]*norm[0] +
n[1]*norm[1] +
n[2]*norm[2];
419 norm[0] +=
n[0]; norm[1] +=
n[1]; norm[2] +=
n[2];
421 norm[0] -=
n[0]; norm[1] -=
n[1]; norm[2] -=
n[2];
423 }
else if(
dot != 0 ) {
452 if(
tess->cacheCount < 3 ) {
457 norm[0] =
tess->normal[0];
458 norm[1] =
tess->normal[1];
459 norm[2] =
tess->normal[2];
460 if( norm[0] == 0 && norm[1] == 0 && norm[2] == 0 ) {
475 switch(
tess->windingRule ) {
#define GLU_TESS_WINDING_NONZERO
#define GLU_TESS_WINDING_POSITIVE
#define GLU_TESS_WINDING_NEGATIVE
#define GLU_TESS_WINDING_ODD
#define GL_TRIANGLE_STRIP
#define GLU_TESS_WINDING_ABS_GEQ_TWO
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
static struct FaceCount MaximumFan(GLUhalfEdge *eOrig)
static void RenderStrip(GLUtesselator *tess, GLUhalfEdge *eStart, long size)
#define SIGN_INCONSISTENT
static void RenderMaximumFaceGroup(GLUtesselator *tess, GLUface *fOrig)
static struct FaceCount MaximumStrip(GLUhalfEdge *eOrig)
GLboolean __gl_renderCache(GLUtesselator *tess)
static void RenderLonelyTriangles(GLUtesselator *tess, GLUface *head)
static void RenderTriangle(GLUtesselator *tess, GLUhalfEdge *eStart, long size)
void __gl_renderMesh(GLUtesselator *tess, GLUmesh *mesh)
void __gl_renderBoundary(GLUtesselator *tess, GLUmesh *mesh)
static void RenderFan(GLUtesselator *tess, GLUhalfEdge *eStart, long size)
static int ComputeNormal(GLUtesselator *tess, GLdouble norm[3], int check)
void(* render)(GLUtesselator *, GLUhalfEdge *, long)
#define CALL_EDGE_FLAG_OR_EDGE_FLAG_DATA(a)
#define CALL_BEGIN_OR_BEGIN_DATA(a)
#define CALL_VERTEX_OR_VERTEX_DATA(a)
#define CALL_END_OR_END_DATA()