Added triangle quality with possibiliti to cohose metric.

This commit is contained in:
Federico Ponchio ponchio 2007-11-20 18:26:52 +00:00
parent 41aeeb2994
commit 78d2db647a
2 changed files with 46 additions and 9 deletions

View File

@ -23,6 +23,9 @@
/****************************************************************************
History
$Log$
Revision 1.38 2007/11/20 18:26:52 ponchio
Added triangle quality with possibiliti to cohose metric.
Revision 1.37 2007/11/19 17:08:54 ponchio
Added triangle quality.
@ -288,10 +291,24 @@ bool ExtraMeshColorizePlugin::getParameters(QAction *action, QWidget * parent, M
return true;
}
default :assert(0);
}
return true;
}
void ExtraMeshColorizePlugin::initParameterSet(QAction *a,MeshModel &m, FilterParameterSet & par) {
switch(ID(a))
{
case CP_TRIANGLE_QUALITY: {
QStringList metrics;
metrics.push_back("area/max side");
metrics.push_back("inradius/circumradius");
par.addEnum("Metric", 0, metrics, tr("Metric:"), tr("Choose a metric to compute triangle quality."));
break;
}
default: assert(0);
}
}
bool ExtraMeshColorizePlugin::applyFilter(QAction *filter, MeshModel &m, FilterParameterSet & par, vcg::CallBackPos *cb)
@ -325,12 +342,22 @@ bool ExtraMeshColorizePlugin::applyFilter(QAction *filter, MeshModel &m, FilterP
}
case CP_TRIANGLE_QUALITY:
{
float min = 0;
float max = 0.5;//sqrt(3)/2;
for(unsigned int i = 0; i < m.cm.face.size(); i++) {
CFaceO &f = m.cm.face[i];
f.C().ColorRamp(min, max, QualityRadii(f.P(0), f.P(1), f.P(2)));
}
int metric = par.getEnum("Metric");
if(metric == 0) { //area / max edge
float min = 0;
float max = sqrt(3)/2;
for(unsigned int i = 0; i < m.cm.face.size(); i++) {
CFaceO &f = m.cm.face[i];
f.C().ColorRamp(min, max, Quality(f.P(0), f.P(1), f.P(2)));
}
} else { //inradius / circumradius
float min = 0;
float max = 0.5;
for(unsigned int i = 0; i < m.cm.face.size(); i++) {
CFaceO &f = m.cm.face[i];
f.C().ColorRamp(min, max, QualityRadii(f.P(0), f.P(1), f.P(2)));
}
}
break;
}
@ -382,12 +409,19 @@ const MeshFilterInterface::FilterClass ExtraMeshColorizePlugin::getClass(QAction
case CP_COLOR_NON_TOPO_COHERENT:
return MeshFilterInterface::VertexColoring;
case CP_SELFINTERSECT:
case CP_TRIANGLE_QUALITY:
case CP_TRIANGLE_QUALITY:
return MeshFilterInterface::FaceColoring;
default: assert(0);
return MeshFilterInterface::Generic;
}
}
bool ExtraMeshColorizePlugin::autoDialog(QAction *a) {
switch(ID(a)) {
case CP_TRIANGLE_QUALITY: return true;
default: return false;
}
}
Q_EXPORT_PLUGIN(ExtraMeshColorizePlugin)

View File

@ -23,6 +23,9 @@
/****************************************************************************
History
$Log$
Revision 1.26 2007/11/20 18:26:52 ponchio
Added triangle quality with possibiliti to cohose metric.
Revision 1.25 2007/11/19 17:08:54 ponchio
Added triangle quality.
@ -111,12 +114,12 @@ public:
virtual const QString filterInfo(FilterIDType filterId);
virtual const PluginInfo &pluginInfo();
virtual const FilterClass getClass(QAction *);
virtual bool autoDialog(QAction *) {return false;}
virtual bool autoDialog(QAction *);
virtual bool customDialog(QAction *filter) {
if(ID(filter) == CP_MAP_QUALITY_INTO_COLOR ) return true;
return false;
}
virtual void initParameterSet(QAction *,MeshModel &/*m*/, FilterParameterSet & /*parent*/){}
virtual void initParameterSet(QAction *,MeshModel &/*m*/, FilterParameterSet & /*parent*/);
virtual bool getParameters(QAction *action, QWidget * /*parent*/, MeshModel &/*m*/, FilterParameterSet & params, MainWindowInterface *mw);
virtual const int getRequirements(QAction *);
virtual bool applyFilter(QAction *filter, MeshModel &m, FilterParameterSet & /*parent*/, vcg::CallBackPos * cb) ;