00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <cassert>
00024 #include "print.h"
00025
00026
00027 namespace euler
00028 {
00029
00030 loop_t* solid_t :: mef(edge_t* e1, edge_t* e2)
00031 {
00032 pair<edge_t*, edge_t*> p = add_edge_pair(e2->v, e1,
00033 e1->v, e2);
00034 edge_t *&ne1 = p.first, *&ne2 = p.second;
00035
00036
00037 edge_t *ne2__pre = ne2->pre;
00038 ne2->pre = ne1->pre; ne1->pre->nxt = ne2;
00039 ne1->pre = ne2__pre; ne2__pre->nxt = ne1;
00040
00041
00042 face_t *f = new_face();
00043
00044 loop_t *nl = f->new_loop();
00045 edge_t *e = ne1;
00046 do
00047 {
00048 e->l = nl;
00049 }
00050 while( (e = e->nxt) != ne1 );
00051
00052
00053 ne1->l->e = ne1;
00054 ne2->l->e = ne2;
00055
00056 solid_t::assert_consistent_B_rep();
00057 return nl;
00058 }
00059
00060
00061 }