From 76fcb798451712a29dee2db9318dba8bb5c5b273 Mon Sep 17 00:00:00 2001 From: nicopietroni Date: Fri, 6 Aug 2004 01:49:18 +0000 Subject: [PATCH] corrected some errors --- apps/test/lem/insert_vertex.h | 48 +++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/apps/test/lem/insert_vertex.h b/apps/test/lem/insert_vertex.h index 4c3c529f..5bdea4d2 100644 --- a/apps/test/lem/insert_vertex.h +++ b/apps/test/lem/insert_vertex.h @@ -37,15 +37,25 @@ namespace vcg{ namespace tri{ - + template + void FFAttach(FACE_TYPE *f0,int z0,FACE_TYPE *f1,int z1) + { + f0->FFp(z0)=f1; + f0->FFi(z0)=z1; + f1->FFp(z1)=f0; + f1->FFi(z1)=z0; + } + template ///insert a vertex iside a face and re-triangolarize v will be pointer to inserted vertex - void InsertVert(MESH_TYPE &m,typename MESH_TYPE::FaceType* &f,typename MESH_TYPE::VertexType* &v) + void InsertVert(MESH_TYPE &m,typename MESH_TYPE::FaceType* f,typename MESH_TYPE::CoordType pos) { std::vector local_var; local_var.push_back(&f); - MESH_TYPE::FaceIterator Finit=vcg::tri::Allocator::AddFaces(m,3,local_var); MESH_TYPE::VertexIterator Vi=vcg::tri::Allocator::AddVertices(m,1); + MESH_TYPE::FaceIterator Finit=vcg::tri::Allocator::AddFaces(m,3,local_var); + + Vi->P()=pos; if (MESH_TYPE::HasVFTopology()) Vi->VFp()=0; @@ -55,53 +65,59 @@ namespace vcg{ //set vertex pointer of new face for (int i=0;i<3;i++) { - Fi->V(0)=f->V(i); - Fi->V(1)=f->V((i+1)%3); - Fi->V(2)=&(*Vi); - F=&(*Fi); + F->V(0)=f->V(i); + F->V(1)=f->V((i+1)%3); + F->V(2)=&(*Vi); + + + //assign topology in substitution of the old one - if (MESH_TYPE::HasFFTopology()) + /*if (MESH_TYPE::HasFFTopology()) { - vcg::face::FFAttach(F,0,f->FFp(i),f->FFi(i)); - } + FFAttach(F,0,f->FFp(i),f->FFi(i)); + }*/ if (MESH_TYPE::HasVFTopology()) { - vcg::face::VFDetach(f,i); + //put new faces on list of the old vertex and new one vcg::face::VFAppend(F,0); vcg::face::VFAppend(F,1); vcg::face::VFAppend(F,2); + + vcg::face::VFDetach((*f),i); } Fi++; } //then attach the faces between themselfes - Fi=Finit; + /*Fi=Finit; MESH_TYPE::FaceIterator Fsucc=Fi; Fsucc++; MESH_TYPE::FaceType *F0=&(*Fi); MESH_TYPE::FaceType *F1=&(*Fsucc); - vcg::face::FFAttach(F0,1,F1,2); + FFAttach(F0,1,F1,2); Fi++; Fsucc++; F0=&(*Fi); F1=&(*Fsucc); - vcg::face::FFAttach(F0,1,F1,2); + FFAttach(F0,1,F1,2); + Fsucc=Finit; Fi++; F0=&(*Fi); F1=&(*Fsucc); - vcg::face::FFAttach(F0,1,F1,2); + FFAttach(F0,1,F1,2);*/ + //at the end set as deleted the old face that was substituted f->SetD(); - v=&(*Vi); +// v=&(*Vi); }