00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "euler.h"
00021 #include <cassert>
00022 #include <utility>
00023 using namespace std;
00024
00025
00026 namespace euler
00027 {
00028
00029
00030
00031
00032
00033 edge_t* solid_t :: mev(edge_t* e1, edge_t* e2, point_t const& p)
00034 {
00035 assert(e1->v == e2->v);
00036 return mev(e1, e2, e1->l->f->s->new_vertex(p));
00037 }
00038
00039
00040 edge_t* solid_t :: mev(edge_t* e1, edge_t* e2, vertex_t* v)
00041 {
00042 pair<edge_t*, edge_t*> pr =
00043 add_edge_pair(e1->v, e1,
00044 v, e2);
00045
00046
00047 for(edge_t *&ne2 = pr.second, *e = pr.first->nxt; e != ne2; e = e->o->nxt)
00048 {
00049 e->v = ne2->v;
00050 }
00051 solid_t::assert_consistent_B_rep();
00052 return pr.second;
00053 }
00054
00055 edge_t* loop_t :: mev(edge_t* e, point_t const& p)
00056 {
00057 return f->s->mev(e, e, p);
00058 }
00059
00060 edge_t* loop_t :: mev(edge_t* e, vertex_t* v)
00061 {
00062 return f->s->mev(e, e, v);
00063 }
00064
00065
00066
00067 }