diff --git a/vcg/space/polygon3.h b/vcg/space/polygon3.h index dd267214..811fedef 100644 --- a/vcg/space/polygon3.h +++ b/vcg/space/polygon3.h @@ -97,7 +97,7 @@ typename CoordType::ScalarType Area(const std::vector &Pos) //return per vertex Normals of a polygonal face template -void PolyNormals(PolygonType &F, +void PolyNormals(const PolygonType &F, std::vector &Norms) { typedef typename PolygonType::FaceType FaceType; @@ -107,16 +107,16 @@ void PolyNormals(PolygonType &F, Norms.clear(); if (F.VN()<=2) return; for (int i=0;i -typename PolygonType::CoordType PolyBarycenter(PolygonType &F) +typename PolygonType::CoordType PolyBarycenter(const PolygonType &F) { typename PolygonType::CoordType bary(0,0,0); for (int i=0;iP(); + bary+=F.cP(i); bary/=(typename PolygonType::ScalarType)F.VN(); return bary; @@ -124,7 +124,7 @@ typename PolygonType::CoordType PolyBarycenter(PolygonType &F) //return the area of a polygonal face template -typename PolygonType::ScalarType PolyArea(PolygonType &F) +typename PolygonType::ScalarType PolyArea(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -134,8 +134,8 @@ typename PolygonType::ScalarType PolyArea(PolygonType &F) ScalarType Area=0; for (size_t i=0;i T(p0,p1,p2); Area+=(vcg::DoubleArea(T)/2); @@ -145,19 +145,19 @@ typename PolygonType::ScalarType PolyArea(PolygonType &F) //return the normal of a polygonal face template -typename PolygonType::CoordType PolygonNormal(PolygonType &F) +typename PolygonType::CoordType PolygonNormal(const PolygonType &F) { typename PolygonType::CoordType n(0,0,0); for (int i=0;i -typename PolygonType::ScalarType PolyPerimeter(PolygonType &F) +typename PolygonType::ScalarType PolyPerimeter(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -166,7 +166,7 @@ typename PolygonType::ScalarType PolyPerimeter(PolygonType &F) ScalarType SumL=0; for (int i=0;i -typename PolygonType::ScalarType PolyNormDeviation(PolygonType &F) +typename PolygonType::ScalarType PolyNormDeviation(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -205,7 +205,7 @@ typename PolygonType::ScalarType PolyNormDeviation(PolygonType &F) //return a Scalar value that encode the distance wrt ideal angle for each //wrt the average one (1 correspond to hight variance, 0 no variance) template -void PolyAngleDeviation(PolygonType &F, +void PolyAngleDeviation(const PolygonType &F, typename PolygonType::ScalarType &AvgDev, typename PolygonType::ScalarType &MaxDev) { @@ -222,8 +222,8 @@ void PolyAngleDeviation(PolygonType &F, for (int i=0;i=0); @@ -244,7 +244,7 @@ void PolyAngleDeviation(PolygonType &F, //return the fitting plane of a polygonal face template -vcg::Plane3 PolyFittingPlane(PolygonType &F) +vcg::Plane3 PolyFittingPlane(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -253,7 +253,7 @@ vcg::Plane3 PolyFittingPlane(PolygonType &F) assert(F.VN()>=3); std::vector pointVec; for (int i=0;i PolyFittingPlane(PolygonType &F) //return the flatness of a polygonal face as avg distance to the best fitting plane divided by half perimeter template -typename PolygonType::ScalarType PolyFlatness(PolygonType &F) +typename PolygonType::ScalarType PolyFlatness(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -280,7 +280,7 @@ typename PolygonType::ScalarType PolyFlatness(PolygonType &F) ScalarType Flatness=0; for (int i=0;i -void PolyPCA(PolygonType &F, +void PolyPCA(const PolygonType &F, typename PolygonType::CoordType PCA[]) { typedef typename PolygonType::FaceType FaceType; @@ -309,7 +309,7 @@ void PolyPCA(PolygonType &F, Eigen::Vector3d p; for (int i=0;iP()-Barycenter).ToEigenVector(p); + (F.cP(i)-Barycenter).ToEigenVector(p); EigenCovMat+= p*p.transpose(); // outer product } @@ -358,7 +358,7 @@ void PolyPCA(PolygonType &F, //evaluate the PCA directions of a polygonal face //scaled by the area of the face template -void PolyScaledPCA(PolygonType &F, +void PolyScaledPCA(const PolygonType &F, typename PolygonType::CoordType PCA[]) { typedef typename PolygonType::FaceType FaceType; @@ -411,7 +411,7 @@ void getBaseTemplatePolygon(int N, //return the rigidly aligned template polygon as //described by "Static Aware Grid Shells" by Pietroni et Al. template -void GetPolyTemplatePos(PolygonType &F, +void GetPolyTemplatePos(const PolygonType &F, std::vector &TemplatePos) { typedef typename PolygonType::FaceType FaceType; @@ -444,7 +444,7 @@ void GetPolyTemplatePos(PolygonType &F, for (int i=0;iP()-Barycenter; + CoordType Pos=F.cP(i)-Barycenter; ///rotate Pos=ToPCA*Pos; //retranslate @@ -515,7 +515,7 @@ void GetPolyTemplatePos(PolygonType &F, //compute the aspect ratio using the rigidly aligned template polygon as //described by "Static Aware Grid Shells" by Pietroni et Al. template -typename PolygonType::ScalarType PolyAspectRatio(PolygonType &F) +typename PolygonType::ScalarType PolyAspectRatio(const PolygonType &F) { typedef typename PolygonType::FaceType FaceType; typedef typename PolygonType::CoordType CoordType; @@ -529,7 +529,7 @@ typename PolygonType::ScalarType PolyAspectRatio(PolygonType &F) ScalarType AreaP=PolyArea(F); for (size_t i=0;i