00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <cassert>
00019 #include "print.h"
00020
00021
00022 namespace euler
00023 {
00024 edge_t* face_t :: mekr(edge_t * e1, edge_t * e2)
00025 {
00026 assert(e1->l != e2->l && e2->l != l);
00027 loop_t *lp1 = e1->l, *lp2 = e2->l;
00028 edge_t
00029 *ne2 = lp1->mev(e1, e2->v),
00030 *ne1 = ne2->o;
00031
00032 if(e2->nxt != e2)
00033 {
00034 ne1->nxt = e2;
00035 ne2->pre = e2->pre;
00036
00037 e2->pre->nxt = ne2;
00038 e2->pre = ne1;
00039
00040 for(edge_t *e = e2; e!= ne2; e=e->nxt)
00041 e->l = lp1;
00042 }
00043 lp2->e = 0;
00044 del_loop(lp2);
00045
00046 solid_t::assert_consistent_B_rep();
00047
00048 return ne1;
00049 }
00050
00051
00052
00053
00054 }