corrected several bugs and done several changes

This commit is contained in:
Nico Pietroni 2012-03-16 13:47:42 +00:00
parent 57bd611892
commit d941439fbb
1 changed files with 27 additions and 5 deletions

View File

@ -35,7 +35,7 @@ namespace vcg {
typedef typename MeshType::CoordType CoordType;
typedef typename MeshType::ScalarType ScalarType;
static ScalarType Area3D(FaceType *f)
static ScalarType Area3D(const FaceType *f)
{
CoordType vp0=f->P(0);
CoordType vp1=f->P(1);
@ -69,7 +69,7 @@ namespace vcg {
return (UVlenght);
}
static ScalarType Angle3D(FaceType *f,int e)
static ScalarType Angle3D(const FaceType *f,int e)
{
assert((e>=0)&&(e<3));
CoordType p0=f->P((e+2)%3);
@ -84,7 +84,7 @@ namespace vcg {
return angle;
}
static ScalarType AngleUV(FaceType *f,int e)
static ScalarType AngleUV(const FaceType *f,int e)
{
vcg::Point2<ScalarType> uv0=f->V((e+2)%3)->T().P();
vcg::Point2<ScalarType> uv1=f->V(e)->T().P();
@ -101,13 +101,23 @@ namespace vcg {
///return the variance of angle, normalized
///in absolute value
static ScalarType AngleDistorsion(FaceType *f,int e)
static ScalarType AngleDistorsion(const FaceType *f,int e)
{
ScalarType Angle_3D=Angle3D(f,e);
ScalarType Angle_UV=AngleUV(f,e);
ScalarType diff=fabs(Angle_3D-Angle_UV)/Angle_3D;
ScalarType diff=fabs(Angle_3D-Angle_UV);///Angle_3D;
return diff;
}
///return the variance of angle, normalized
///in absolute value
static ScalarType AngleDistorsion(const FaceType *f)
{
ScalarType angleDist=0;
for (int i=0;i<3;i++)
angleDist+=AngleDistorsion(f,i);
return angleDist;
}
///return the global scaling factor from 3D to UV
static ScalarType ScalingFactor(MeshType &m,
@ -181,6 +191,18 @@ namespace vcg {
int num=Folded(m);
return (num>(m.fn)/2);
}
static ScalarType AngleDistorsion(const MeshType &m)
{
ScalarType UDdist=0;
for (int i=0;i<m.face.size();i++)
{
if (m.face[i].IsD())continue;
const FaceType *f=&(m.face[i]);
UDdist+=AngleDistorsion(f)*Area3D(f);
}
return UDdist;
}
};
}
}