Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

front.cpp

00001 /*: 00002 ** front.cpp - Adaptation Front 00003 ** 00004 ** Copyright (C) 2004 Luiz Velho. 00005 */ 00006 00007 #include "a48.h" 00008 00009 using namespace A48; 00010 00016 void Mesh::new_front() 00017 { 00018 while (rf_.extract() != NULL) 00019 ; 00020 for (EdgeIter ei = edges_begin(); ei != edges_end(); ei++) { 00021 if ((*ei)->is_subdiv()) 00022 rf_.insert((MxHeapable *) *ei, surf()->ref_rank(*ei)); 00023 } 00024 while (sf_.extract() != NULL) 00025 ; 00026 for (VertexIter w = verts_begin(); w != verts_end(); w++) 00027 if ((*w)->is_weld()) 00028 sf_.insert((MxHeapable *) *w, surf()->simpl_rank(*w)); 00029 } 00030 00035 void Mesh::update_ref_front(Edge *e) 00036 { 00037 rf_.remove(e); 00038 if (e->hedge(0)->next() != NULL) { 00039 Face *f = e->hedge(0)->face(); 00040 Vertex *v = e->hedge(0)->next()->dst(); 00041 if (!v->is_weld(f)) 00042 sf_.remove(v); 00043 } 00044 if (e->hedge(1)->next() != NULL) { 00045 Face *f = e->hedge(1)->face(); 00046 Vertex *v = e->hedge(1)->next()->dst(); 00047 if (!v->is_weld(f)) 00048 sf_.remove(v); 00049 } 00050 } 00051 00056 void Mesh::update_ref_front(Vertex *v) 00057 { 00058 sf_.insert(v, surf()->simpl_rank(v)); 00059 for (Hedge* s = v->star_first(); s != NULL; s = v->star_next(s)) 00060 if (s->prev() != NULL) { 00061 Edge *e = s->prev()->edge(); 00062 if (e->is_subdiv()) 00063 rf_.insert(e, surf()->ref_rank(e)); 00064 } 00065 } 00066 00071 void Mesh::update_simpl_front(Vertex *v) 00072 { 00073 sf_.remove(v); 00074 for (Hedge* s = v->star_first(); s != NULL; s = v->star_next(s)) 00075 if (s->prev() != NULL) { 00076 Hedge *m = s->prev()->mate(); 00077 if (!m->is_subdiv_itself()) { 00078 Edge *e = s->prev()->edge(); 00079 rf_.remove(e); 00080 } 00081 } 00082 } 00083 00088 void Mesh::update_simpl_front(Edge *e) 00089 { 00090 rf_.insert(e, surf()->ref_rank(e)); 00091 if (e->hedge(0)->next() != NULL) { 00092 Vertex* w = e->hedge(0)->next()->dst(); 00093 if (w->is_weld()) 00094 sf_.insert(w, surf()->simpl_rank(w)); 00095 } 00096 if (e->hedge(1)->next() != NULL) { 00097 Vertex* w = e->hedge(1)->next()->dst(); 00098 if (w->is_weld()) 00099 sf_.insert(w, surf()->simpl_rank(w)); 00100 } 00101 }

Generated on Mon Oct 11 19:32:06 2004 for A48 by doxygen 1.3.7