kffmh.cpp

Go to the documentation of this file.
00001 /**
00002  *\file         kffmh.cpp
00003  *
00004  *\brief        connected sum
00005  *
00006  *              \em kffmh(face_t* f1, face_t* f2) identifies and kills two faces f1 and f2,  to either make a hole if
00007  *              two faces are in the same shell,  or to kill a shell otherwise.
00008  *
00009  *\author       Xianming Chen\n
00010  *              Computer Science Department\n
00011  *              University of Utah
00012  *
00013  *\date         20 Aug 2006\n
00014  *              Copyright (c) 2006, University of Utah
00015  */
00016 
00017 
00018 #include "euler.h"
00019 #include "print.h"
00020 
00021 
00022 namespace euler
00023 {
00024 
00025   void solid_t :: kffmh(face_t* f1, face_t* f2)
00026   {
00027     assert( ! f1->l->nxt && ! f2->l->nxt && f1->l->total_vertices() == f2->l->total_vertices() );
00028     edge_t *e1 = f1->l->e, *e2 = f2->l->e, *e20 = e2;
00029     do
00030     {
00031       for(edge_t *e = e2->o; e != e2->nxt; e = e->pre->o)
00032       {
00033         e->v = e1->v;
00034       }
00035     }
00036     while( (e1 = e1->nxt, e2 = e2->pre) != e20 );
00037 
00038     e1 = f1->l->e, e2 = f2->l->e, e20 = e2;
00039     do
00040     {
00041       e1->o->o = e2->o;
00042       e2->o->o = e1->o;
00043     }
00044     while( (e1 = e1->nxt, e2 = e2->pre) != e20 );
00045 
00046     del_face(f1); 
00047     del_face(f2);
00048   }
00049   
00050 
00051 
00052 
00053 }//end namespace euler

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