diff --git a/vcg/complex/algorithms/parametrization/uv_utils.h b/vcg/complex/algorithms/parametrization/uv_utils.h index cd9b4b5b..8157c68a 100644 --- a/vcg/complex/algorithms/parametrization/uv_utils.h +++ b/vcg/complex/algorithms/parametrization/uv_utils.h @@ -27,6 +27,8 @@ namespace vcg { namespace tri{ + + ///calculate the BBox in UV space template vcg::Box2 PerWedgeUVBox(MeshType &m) { @@ -40,6 +42,25 @@ namespace vcg { } return UVBox; } + + ///transform curvature to UV space + template + vcg::Point2 Coord3DtoUV(FaceType &f, + typename FaceType::CoordType dir) + { + ///then transform to UV + CoordType bary3d=(f.P(0)+f.P(1)+f.P(2))/3.0; + vcg::Point2 baryUV=(f.WT(0).P()+f.WT(1).P()+f.WT(2).P())/3.0; + CoordType dir3d=bary3d+dir; + CoordType baryCoordsUV; + vcg::InterpolationParameters(f,dir3d,baryCoordsUV); + vcg::Point2 dirUV=baryCoordsUV.X()*f.WT(0).P()+ + baryCoordsUV.Y()*f.WT(1).P()+ + baryCoordsUV.Z()*f.WT(2).P()-baryUV; + dirUV.Normalize(); + return dirUV; + } + } //End Namespace Tri } // End Namespace vcg #endif \ No newline at end of file