From 215aaa2e84f80d4a367b1f8715aa6c00cfec5d92 Mon Sep 17 00:00:00 2001 From: ganovelli Date: Wed, 29 Sep 2004 17:08:16 +0000 Subject: [PATCH] corrected error in -error (see localoptimization) --- .../tri_edge_collapse_quadric.h | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/vcg/complex/local_optimization/tri_edge_collapse_quadric.h b/vcg/complex/local_optimization/tri_edge_collapse_quadric.h index 2b206d4d..0e598af7 100644 --- a/vcg/complex/local_optimization/tri_edge_collapse_quadric.h +++ b/vcg/complex/local_optimization/tri_edge_collapse_quadric.h @@ -125,7 +125,13 @@ public: // puntatori ai vertici che sono stati messi non-w per preservare il boundary static std::vector & WV(){static std::vector _WV; return _WV;}; - TriEdgeCollapseQuadric(PosType p, int i):TEC(p,i){} + TriEdgeCollapseQuadric(PosType p, int i) + //:TEC(p,i){} + { + _Imark() = i; + pos=p; + _priority = ComputePriority(); + } bool IsFeasible(){ @@ -241,15 +247,15 @@ public: static void SetDefaultParams(){ Params().UseArea=true; Params().UseVertexWeight=false; - Params().NormalCheck=false; - Params().NormalThr=M_PI/2; + Params().NormalCheck=true; + Params().CosineThr=M_PI/2; Params().QualityCheck=true; Params().QualityThr=.1; Params().BoundaryWeight=.5; Params().OptimalPlacement=true; Params().ScaleIndependent=true; Params().ComplexCheck=false; - Params().QuadricEpsilon = 1e-15; + Params().QuadricEpsilon =1e-15; Params().ScaleFactor=1.0; } @@ -259,11 +265,10 @@ public: // // Da ottimizzare il ciclo sulle normali (deve sparire on e si deve usare per face normals) //*/ - ScalarType ComputePriority() { + ScalarType ComputePriority() { ScalarType error; typename vcg::face::VFIterator x; std::vector on; // original normals - typename TriMeshType::VertexType * v[2]; v[0] = pos.V(); v[1] = pos.V(1); @@ -344,13 +349,10 @@ public: if(!Params().QualityCheck && Params().NormalCheck) error = QuadErr / MinCos; if( Params().QualityCheck && Params().NormalCheck) error = QuadErr / (MinQual*MinCos); - - error=QuadErr; - //Rrestore old position of v0 and v1 v[0]->P()=OldPos0; v[1]->P()=OldPos1; - _priority = error; + _priority = -error; return _priority; } @@ -380,7 +382,7 @@ static void InitQuadric(TriMeshType &m) // Se normalizzo non dipende dall'area if(!Params().UseArea) - { p.SetDirection(p.Direction()); p.Normalize();} + p.Normalize(); p.SetOffset( p.Direction() * (*pf).V(0)->cP());