Go to the documentation of this file.
3 #ifndef tools_glutess_mesh
4 #define tools_glutess_mesh
120 #define Rface Sym->Lface
123 #define Oprev Sym->Lnext
124 #define Lprev Onext->Sym
125 #define Dprev Lnext->Sym
126 #define Rprev Sym->Onext
127 #define Dnext Rprev->Sym
128 #define Rnext Oprev->Sym
251 if (pair == NULL)
return NULL;
257 if( eNext->
Sym < eNext ) { eNext = eNext->
Sym; }
317 assert(vNew != NULL);
335 }
while( e != eOrig );
350 assert(fNew != NULL);
374 }
while( e != eOrig );
385 if( eDel->
Sym < eDel ) { eDel = eDel->
Sym; }
410 }
while( e != eStart );
434 }
while( e != eStart );
459 if (newVertex1 == NULL || newVertex2 == NULL || newFace == NULL) {
460 if (newVertex1 != NULL)
memFree(newVertex1);
461 if (newVertex2 != NULL)
memFree(newVertex2);
462 if (newFace != NULL)
memFree(newFace);
509 if( eOrg == eDst )
return 1;
511 if( eDst->
Org != eOrg->
Org ) {
525 if( ! joiningVertices ) {
527 if (newVertex == NULL)
return 0;
535 if( ! joiningLoops ) {
537 if (newFace == NULL)
return 0;
568 if( eDel->
Lface != eDel->Rface ) {
577 if( eDel->
Onext == eDel ) {
581 eDel->Rface->anEdge = eDel->Oprev;
585 if( ! joiningLoops ) {
587 if (newFace == NULL)
return 0;
597 if( eDelSym->
Onext == eDelSym ) {
629 if (eNew == NULL)
return NULL;
637 eNew->
Org = eOrg->Dst;
640 if (newVertex == NULL)
return NULL;
658 if (tempHalfEdge == NULL)
return NULL;
660 eNew = tempHalfEdge->
Sym;
667 eOrg->Dst = eNew->
Org;
668 eNew->Dst->anEdge = eNew->
Sym;
669 eNew->Rface = eOrg->Rface;
692 if (eNew == NULL)
return NULL;
707 eNew->
Org = eOrg->Dst;
714 if( ! joiningLoops ) {
716 if (newFace == NULL)
return NULL;
741 eNext = eStart->
Lnext;
747 if( e->Rface == NULL ) {
750 if( e->
Onext == e ) {
758 if( eSym->
Onext == eSym ) {
767 }
while( e != eStart );
844 if( f2->
next != f2 ) {
851 if( v2->
next != v2 ) {
858 if( e2->
next != e2 ) {
870 #ifdef DELETE_BY_ZAPPING
878 while( fHead->
next != fHead ) {
927 for( fPrev = fHead ; (f = fPrev->
next) != fHead; fPrev = f) {
928 assert( f->
prev == fPrev );
931 assert( e->
Sym != e );
932 assert( e->
Sym->
Sym == e );
935 assert( e->
Lface == f );
937 }
while( e != f->
anEdge );
939 assert( f->
prev == fPrev && f->
anEdge == NULL && f->
data == NULL );
942 for( vPrev = vHead ; (v = vPrev->
next) != vHead; vPrev = v) {
943 assert( v->
prev == vPrev );
946 assert( e->
Sym != e );
947 assert( e->
Sym->
Sym == e );
950 assert( e->
Org == v );
952 }
while( e != v->
anEdge );
954 assert( v->
prev == vPrev && v->
anEdge == NULL && v->
data == NULL );
957 for( ePrev = eHead ; (e = ePrev->
next) != eHead; ePrev = e) {
959 assert( e->
Sym != e );
960 assert( e->
Sym->
Sym == e );
961 assert( e->
Org != NULL );
962 assert( e->Dst != NULL );
969 && e->
Org == NULL && e->Dst == NULL
970 && e->
Lface == NULL && e->Rface == NULL );
GLUhalfEdge * __gl_meshSplitEdge(GLUhalfEdge *eOrg)
inline void static_KillVertex(GLUvertex *vDel, GLUvertex *newOrg)
inline GLUvertex * static_allocVertex()
inlined C code : ///////////////////////////////////
GLUhalfEdge * __gl_meshConnect(GLUhalfEdge *eOrg, GLUhalfEdge *eDst)
int __gl_meshSplice(GLUhalfEdge *eOrg, GLUhalfEdge *eDst)
inline void static_Splice(GLUhalfEdge *a, GLUhalfEdge *b)
void __gl_meshDeleteMesh(GLUmesh *mesh)
inline GLUhalfEdge * static_MakeEdge(GLUhalfEdge *eNext)
inline void static_KillEdge(GLUhalfEdge *eDel)
ActiveRegion * activeRegion
int __gl_meshDelete(GLUhalfEdge *eDel)
GLUhalfEdge * __gl_meshMakeEdge(GLUmesh *mesh)
inline void static_MakeVertex(GLUvertex *newVertex, GLUhalfEdge *eOrig, GLUvertex *vNext)
GLUmesh * __gl_meshUnion(GLUmesh *mesh1, GLUmesh *mesh2)
void __gl_meshZapFace(GLUface *fZap)
GLUmesh * __gl_meshNewMesh(void)
GLUhalfEdge * __gl_meshAddEdgeVertex(GLUhalfEdge *eOrg)
inline void static_KillFace(GLUface *fDel, GLUface *newLface)
void __gl_meshCheckMesh(GLUmesh *mesh)
inline GLUface * static_allocFace()
inline void static_MakeFace(GLUface *newFace, GLUhalfEdge *eOrig, GLUface *fNext)