From 9c314b7f2f916a60b7f976277f04b332c6807b36 Mon Sep 17 00:00:00 2001 From: cignoni Date: Sat, 5 Jul 2008 05:49:57 +0000 Subject: [PATCH] Added support for callback in Laplacian and Taubin; improved comments and removed a bug from the Taubin smoothing --- vcg/complex/trimesh/smooth.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/vcg/complex/trimesh/smooth.h b/vcg/complex/trimesh/smooth.h index 2e098acb..a51ff877 100644 --- a/vcg/complex/trimesh/smooth.h +++ b/vcg/complex/trimesh/smooth.h @@ -321,13 +321,14 @@ static void AccumulateLaplacianInfo(MeshType &m, SimpleTempData TD(m.vert,lpz); for(int i=0;i mu = 1/(0.1 - 2) = -0.53 - +So if +* lambda == 0.5, kpb==0.1 -> mu = 1/(0.1 - 2) = -0.526 +* lambda == 0.5, kpb==0.01 -> mu = 1/(0.01 - 2) = -0.502 */ -static void VertexCoordTaubin(MeshType &m, int step, float lambda, float mu, bool SmoothSelected=false) +static void VertexCoordTaubin(MeshType &m, int step, float lambda, float mu, bool SmoothSelected=false, vcg::CallBackPos * cb=0) { LaplacianInfo lpz(CoordType(0,0,0),0); SimpleTempData TD(m.vert,lpz); VertexIterator vi; for(int i=0;i0 ) { if(!SmoothSelected || (*vi).IsS()) { CoordType Delta = TD[*vi].sum/TD[*vi].cnt - (*vi).P(); - (*vi).P() = (*vi).P() - Delta*mu ; + (*vi).P() = (*vi).P() + Delta*mu ; } } } // end for step