kef.cpp

Go to the documentation of this file.
00001 /**
00002  *\file         kef.cpp
00003  *
00004  *\brief        merge two adjacent faces.
00005  *
00006  *              Inverse of mef: face is merged to that of opposite half edge.
00007  *
00008  *\author       Xianming Chen\n
00009  *              Computer Science Department\n
00010  *              University of Utah
00011  *
00012  *\date         16 Aug 2006\n
00013  *              Copyright (c) 2006, University of Utah
00014  */
00015 
00016 
00017 #include "print.h"
00018 #include <cassert>
00019 
00020 
00021 namespace euler
00022 {
00023   void solid_t :: kef(edge_t* e)
00024   {
00025     assert( e->l->f->l == e->l );     // e has to be on the outer (first) loop of the merged face.
00026     loop_t *l1 = e->o->l, *l2 = e->l; // l2 is to be merged into l1.
00027     
00028     add_face_to(e->l->f, e->o->l->f);
00029 
00030     edge_t *temp = e;
00031     do
00032     {
00033       temp->l = l1;
00034     }
00035     while ( (temp=temp->nxt) != e );
00036 
00037     //merge l2 to l1.
00038     e->o->pre->nxt = e->nxt;
00039     e->nxt->pre = e->o->pre;
00040 
00041     e->pre->nxt = e->o->nxt;
00042     e->o->nxt->pre = e->pre;
00043 
00044     if(l1->e == e->o)
00045       l1->e = e->o->nxt;
00046 
00047     l2->e = 0;
00048     l1->f->del_loop(l2);
00049 
00050     delete e;
00051     delete e->o;
00052 
00053     solid_t::assert_consistent_B_rep();
00054   }
00055   
00056 
00057 
00058 
00059 
00060 }//end namespace euler

Generated on Wed Aug 30 16:27:58 2006 for euler by  doxygen 1.4.6