surf.cpp

Go to the documentation of this file.
00001 /*:
00002 **     surf.cpp
00003 **
00004 **   Copyright (C) 2004 Luiz Velho, Hélio Lopes, Esdras Medeiros.
00005 */
00006 #include "mesh.h"
00007 
00008 using namespace Mesh;
00009 
00013 Surf::~Surf()
00014 {
00015   for (VertexIter p = vc_.begin(); p != vc_.end(); p++) 
00016     delete *p;
00017   vc_.clear();
00018   for (EdgeIter e = ec_.begin(); e != ec_.end(); e++)
00019     delete *e;
00020   ec_.clear();
00021   for (FaceIter f = fc_.begin(); f != fc_.end(); f++)
00022     delete *f;
00023   fc_.clear();
00024   bc_.clear();
00025 }
00026 
00033 Hedge *Surf::add_new_edge(Vertex *v0, Vertex *v1)
00034 {
00035   Edge *e = new Edge(v0, v1);
00036   add_edge(e);
00037   return e->hedge(0);
00038 }
00039 
00044 Vertex *Surf::add_new_vertex(Point *p)
00045 {
00046   Vertex *v = new Vertex(p);
00047   add_vertex(v);
00048   return v;
00049 }
00050 
00057 Hedge* Surf::lookup_hedge(Point *p0, Point *p1)
00058 {
00059   for (EdgeIter e = ec_.begin(); e != ec_.end(); e++) {
00060     Hedge* h = (*e)->hedge(0);
00061     if (h->org()->p() == p0 && h->dst()->p() == p1) return h;
00062     if (h->org()->p() == p1 && h->dst()->p() == p0) return h->mate();
00063   }
00064   return NULL;
00065 }
00066 
00071 void Surf::transfer_cells(Surf *s2)
00072 {
00073   for (VertexIter p = s2->verts_begin(); p != s2->verts_end(); p++) 
00074     add_vertex(*p);
00075   for (EdgeIter e = s2->edges_begin(); e != s2->edges_end(); e++)
00076     add_edge(*e);
00077   for (FaceIter f = s2->faces_begin(); f != s2->faces_end(); f++)
00078     add_face(*f);
00079   for (EdgeIter e = s2->bdries_begin(); e != s2->bdries_end(); e++)
00080     add_bdry(*e);
00081 }
00082 
00083 
00084 
00085 
00086 

Generated on Fri Feb 24 12:23:21 2006 for TOPs by  doxygen 1.4.6-NO