From 40a4e924073ffc1b0275bb5d39a3ed970ff1b8b4 Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Thu, 10 Jan 2008 11:59:33 +0000 Subject: [PATCH] added support of unused mesh --- .../editalign/align/OccupancyGrid.cpp | 20 ++++++++++++------- .../editalign/align/OccupancyGrid.h | 4 +++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/meshlabplugins/editalign/align/OccupancyGrid.cpp b/src/meshlabplugins/editalign/align/OccupancyGrid.cpp index 1f3ec22f7..ed56d6b05 100644 --- a/src/meshlabplugins/editalign/align/OccupancyGrid.cpp +++ b/src/meshlabplugins/editalign/align/OccupancyGrid.cpp @@ -42,7 +42,7 @@ using namespace vcg; // Nota che il bbox viene automaticamento inflatato dalla G.SetBBox(); bool OccupancyGrid::Init(int _mn, Box3d bb, int size) { - mn=_mn; + mn=_mn; // the number of meshes (including all the unused ones; eg it is the range of the possible id) if(mn>MeshCounter::MaxVal()) return false; MeshCounter MC; MC.Clear(); @@ -135,9 +135,10 @@ void OccupancyGrid::Compute() // Find the best arcs SVA.clear(); for(i=0;i0) - SVA.push_back( OGArcInfo(i,j, VA[i+j*mn], VA[i+j*mn]/float( min(VM[i].area,VM[j].area)) )); + if(VM[i].used) + for(j=i+1;j0) + SVA.push_back( OGArcInfo(i,j, VA[i+j*mn], VA[i+j*mn]/float( min(VM[i].area,VM[j].area)) )); // Compute Mesh Coverage for(i=0;i0) { + if(VM[m].used && VM[m].area>0) { mcnt++; UpdCovg[m]=VM[m].coverage; UpdArea[m]=VM[m].area; @@ -237,7 +238,12 @@ void OccupancyGrid::Dump(FILE *fp) fprintf(fp,"Computed %i arcs for %i meshes\n",SVA.size(),mn); for(int i=0;i .1; ++i) fprintf(fp,"%4i -> %4i Area:%5i NormArea:%5.3f\n",SVA[i].s,SVA[i].t,SVA[i].area,SVA[i].norm_area); @@ -279,7 +285,7 @@ void OccupancyGrid::ChooseArcs(vector > &AV, vector &BNV, vec ++i; } - for(i=0;i