mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 03:16:10 +00:00
Added triangle quality with possibiliti to cohose metric.
This commit is contained in:
parent
41aeeb2994
commit
78d2db647a
@ -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)
|
||||
|
||||
|
||||
@ -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) ;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user