Computer Assited Medical Intervention Tool Kit  version 4.1
Public Slots | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
MeshQuality Class Reference

Display mesures of mesh quality listed by element types. More...

#include <MeshQuality.h>

Inherits camitk::Action.

Public Slots

virtual ApplyStatus apply ()
 method called when the action is applied More...
 
void computeMeasure (int i)
 method called when the selected item in qualityMeasureComboBox is changed More...
 
void updateComboBox (int i)
 method called when the selected item in elementsComboBox is changed More...
 
- Public Slots inherited from camitk::Action
virtual ApplyStatus apply ()=0
 This method is called when the action has to be applied on the target list (get the target lists using getTargets()) It calls the algorithm of your action on the target list of components. More...
 
ApplyStatus applyAndRegister ()
 This method is called whenever the action has to be applied on the target list (like the apply()) method AND registered within the application history of actions. More...
 
ApplyStatus trigger (QWidget *parent=nullptr)
 This method triggers the action. More...
 

Public Member Functions

virtual QWidget * getWidget ()
 method called when the action when the action is triggered (i.e. started) More...
 
 MeshQuality (camitk::ActionExtension *)
 the constructor More...
 
virtual ~MeshQuality ()=default
 the destructor More...
 
- Public Member Functions inherited from camitk::Action
 Action (ActionExtension *)
 Default Constructor: the ActionExtension is needed. More...
 
ComponentgetOutputComponent ()
 Returns the output Components in case of only one Component. More...
 
ComponentList getOutputComponents ()
 Returns the output Component(s) More...
 
void setInputComponent (Component *input)
 Specify the input Components in case of only one Component. More...
 
void setInputComponents (ComponentList inputs)
 Specify the input Component(s) Only applyInPipeline() should be called with this method (maybe apply), but not trigger() as its first intruction is to clear the target components list !!! More...
 
 ~Action () override
 Destructor. More...
 
QAction * getQAction ()
 Get the corresponding QAction. More...
 
QString getName () const
 get the name of the action More...
 
QString getDescription () const
 the description of the action More...
 
QString getComponent () const
 the name of the component class that can be used by this action More...
 
QString getFamily () const
 the name of the family in which this action is associated More...
 
QString getExtensionName () const
 the name of the extension in the family in which this action is associated More...
 
QStringList getTag () const
 the name of the tag called this action More...
 
bool getEmbedded () const
 argument use to know if the widget is embedded or not More...
 
virtual QPixmap getIcon ()
 the icon to personalize the action (no icon by default) More...
 
const ComponentList getTargets () const
 the currently selected and valid (regarding the component property) components, for which this action is called More...
 
bool getAutoUpdateProperties () const
 
void setAutoUpdateProperties (bool)
 are the properties to be udpated every time the user makes a change in the widget (default is false)? More...
 
virtual Q_INVOKABLE PropertygetProperty (QString name)
 Get a Property given its name. More...
 
virtual bool addParameter (Property *)
 Add a new parameter to the action, using the CamiTK property class. More...
 
void applyTargetPosition (Component *input, Component *target)
 Change the target frame according to the default frame policy regarding the input's one. More...
 
void applyTargetPosition (Component *input, Component *target, Application::TargetPositionningPolicy policy)
 Change the target frame according to a given frame policy regarding the input's one. More...
 
ApplyStatus applyInPipeline ()
 This method encapsulates the apply() method. More...
 

Private Member Functions

vtkSmartPointer< vtkDoubleArray > computeHexasQuality (camitk::MeshComponent *meshComponent, int qualityTest)
 
vtkSmartPointer< vtkDoubleArray > computeQuadsQuality (camitk::MeshComponent *meshComponent, int qualityTest)
 
vtkSmartPointer< vtkDoubleArray > computeTetrasQuality (camitk::MeshComponent *meshComponent, int qualityTest)
 
vtkSmartPointer< vtkDoubleArray > computeTrisQuality (camitk::MeshComponent *meshComponent, int qualityTest)
 methods to compute the correct quality from a mesh More...
 
QString getInfos (camitk::MeshComponent *meshComponent)
 return a rich text describing the mesh More...
 
double getQualityColor (double val, double minAR, double maxAR, double minNR, double maxNR)
 get the appropriate color between [0;1] for a colorScale More...
 
void updateMeshColor (vtkSmartPointer< vtkDoubleArray > qualityArray)
 update the mesh to diplay a scalar color to show good and bad elements More...
 
void updateTableWidget (vtkSmartPointer< vtkDoubleArray > qualityArray)
 update the table widget to display quality measure for each element More...
 

Private Attributes

QString currentMeshName
 name of the current mesh (needed as an attribute to avoid recomputing of tableWidget) More...
 
QLabel * elementInfoLabel
 text that gives general mesh quality for one type of element (min max avg) More...
 
QComboBox * elementsComboBox
 list of elements describing the current mesh More...
 
std::map< unsigned char, std::vector< vtkIdType > > elementsMap
 map describing index of cell for each type of element (needed as an attribute to update tableWidget) More...
 
QFrame * informationFrame
 this action widget (to simplify, it is just a label that gives mesh quality information) More...
 
QLabel * informationLabel
 the information label (needed as an attributes to update the displayed text) More...
 
bool isConnected
 true, if slots are connected, false otherwise More...
 
double maxAR
 
double maxNR
 
double maxV
 
double minAR
 minimum and maximum of acceptable range of a quality measure (included in normal range) More...
 
double minNR
 minimum and maximum of normal range of a quality measure More...
 
double minV
 minimum and maximum of values found for the concerned mesh. These data are used when ratio are computed or when NormalRange is unbounded More...
 
QTableWidget * qualityInfo
 the list of quality informations More...
 
QComboBox * qualityMeasureComboBox
 list of measure quality computable for one type of element More...
 

Static Private Attributes

static QStringList hexasFuncList = QStringList() << "Diagonal" << "Dimension" << "Distortion" << "Edge Ratio" << "Jacobian" << "Maximum Aspect Frobenius" << "Maximum Edge Ratio" << "Mean Aspect Frobenius" << "Oddy" << "Scaled Jacobian" << "Relative Size Squared" << "Shape" << "Shape and Size" << "Shear" << "Shear and Size" << "Skew" << "Stretch" << "Taper" << "Volume"
 
static QStringList quadsFuncList = QStringList() << "Area" << "Aspect Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Jacobian" << "Maximum Angle" << "Maximum Aspect Frobenius" << "Maximum Edge Ratio" << "Mean Aspect Frobenius" << "Minimum Angle" << "Oddy" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size" << "Shear" << "Shear and Size" << "Skew" << "Stretch" << "Taper" << "Warpage"
 
static QStringList tetrasFuncList = QStringList() << "Aspect Beta" << "Aspect Frobenius" << "Aspect Gamma" << "Aspect Ratio" << "Collapse Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Jacobian" << "Minimum Angle" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size" << "Volume"
 
static QStringList trisFuncList = QStringList() << "Area" << "Aspect Frobenius" << "Aspect Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Maximum Angle" << "Minimum Angle" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size"
 lists defining quality methods for each type of element More...
 

Additional Inherited Members

- Public Types inherited from camitk::Action
enum  ApplyStatus {
  SUCCESS, ERROR, WARNING, ABORTED,
  TRIGGERED
}
 describes what happened during the application of an algorithm (i.e. results of the apply method) More...
 
- Static Public Member Functions inherited from camitk::Action
static QString getStatusAsString (ApplyStatus)
 
- Protected Member Functions inherited from camitk::Action
void setName (QString name)
 
void setDescription (QString description)
 the description of the action More...
 
void setComponent (QString component)
 the name of the component class that can be used by this action More...
 
void setFamily (QString family)
 the name of the family in which this action is associated More...
 
void addTag (QString tag)
 add a tag to the tags list of this action More...
 
void setEmbedded (bool isEmbedded)
 set the embedded property (an action is embedded by default, unless specified otherwise by explicitly calling this method with false) More...
 
void setIcon (QPixmap)
 set the Pixmap More...
 
- Protected Attributes inherited from camitk::Action
QWidget * actionWidget
 the action widget More...
 

Detailed Description

Display mesures of mesh quality listed by element types.

@techreport{knupp2006verdict,
title={The verdict geometric quality library.},
author={Knupp, Patrick Michael and Ernst, CD and Thompson, David C and Stimpson, CJ and Pebay, Philippe Pierre},
year={2006},
institution={Sandia National Laboratories}
}
basic_mesh_quality.png
The mesh quality widget.

Constructor & Destructor Documentation

◆ MeshQuality()

MeshQuality::MeshQuality ( camitk::ActionExtension extension)

◆ ~MeshQuality()

virtual MeshQuality::~MeshQuality ( )
virtualdefault

the destructor

Member Function Documentation

◆ apply

Action::ApplyStatus MeshQuality::apply ( )
virtualslot

◆ computeHexasQuality()

vtkSmartPointer< vtkDoubleArray > MeshQuality::computeHexasQuality ( camitk::MeshComponent meshComponent,
int  qualityTest 
)
private

◆ computeMeasure

void MeshQuality::computeMeasure ( int  i)
slot

◆ computeQuadsQuality()

vtkSmartPointer< vtkDoubleArray > MeshQuality::computeQuadsQuality ( camitk::MeshComponent meshComponent,
int  qualityTest 
)
private

◆ computeTetrasQuality()

vtkSmartPointer< vtkDoubleArray > MeshQuality::computeTetrasQuality ( camitk::MeshComponent meshComponent,
int  qualityTest 
)
private

◆ computeTrisQuality()

vtkSmartPointer< vtkDoubleArray > MeshQuality::computeTrisQuality ( camitk::MeshComponent meshComponent,
int  qualityTest 
)
private

methods to compute the correct quality from a mesh

References camitk::Component::getDataPort, maxAR, maxNR, minAR, and minNR.

Referenced by computeMeasure().

◆ getInfos()

QString MeshQuality::getInfos ( camitk::MeshComponent meshComponent)
private

return a rich text describing the mesh

Parameters
meshComponentinput mesh
Returns
QString the text describing the mesh

References currentMeshName, elementsComboBox, elementsMap, and camitk::InterfaceGeometry::getPointSet().

Referenced by apply().

◆ getQualityColor()

double MeshQuality::getQualityColor ( double  val,
double  minAR,
double  maxAR,
double  minNR,
double  maxNR 
)
private

get the appropriate color between [0;1] for a colorScale

Parameters
valinput value which determinates the color
minARminimum of acceptable range
maxARmaximum of acceptable range
minNRminimum of normal range (smaller than minAR)
maxNRmaximum of normal range (greater than maxAR)
Returns
double the color. It is a value between [0:1]

References CAMITK_ERROR, maxAR, maxNR, maxV, minAR, minNR, and minV.

Referenced by updateMeshColor().

◆ getWidget()

QWidget * MeshQuality::getWidget ( )
virtual

method called when the action when the action is triggered (i.e. started)

Reimplemented from camitk::Action.

References apply(), computeMeasure(), elementInfoLabel, elementsComboBox, informationFrame, informationLabel, isConnected, qualityInfo, qualityMeasureComboBox, and updateComboBox().

◆ updateComboBox

void MeshQuality::updateComboBox ( int  i)
slot

method called when the selected item in elementsComboBox is changed

References computeMeasure(), elementsComboBox, hexasFuncList, isConnected, quadsFuncList, qualityMeasureComboBox, tetrasFuncList, and trisFuncList.

Referenced by getWidget().

◆ updateMeshColor()

void MeshQuality::updateMeshColor ( vtkSmartPointer< vtkDoubleArray >  qualityArray)
private

update the mesh to diplay a scalar color to show good and bad elements

References elementsComboBox, elementsMap, camitk::InterfaceGeometry::getPointSet(), getQualityColor(), camitk::Action::getTargets(), maxAR, maxNR, minAR, and minNR.

Referenced by computeMeasure().

◆ updateTableWidget()

void MeshQuality::updateTableWidget ( vtkSmartPointer< vtkDoubleArray >  qualityArray)
private

update the table widget to display quality measure for each element

References elementInfoLabel, elementsComboBox, elementsMap, maxV, minV, and qualityInfo.

Referenced by computeMeasure().

Member Data Documentation

◆ currentMeshName

QString MeshQuality::currentMeshName
private

name of the current mesh (needed as an attribute to avoid recomputing of tableWidget)

Referenced by apply(), and getInfos().

◆ elementInfoLabel

QLabel* MeshQuality::elementInfoLabel
private

text that gives general mesh quality for one type of element (min max avg)

Referenced by getWidget(), and updateTableWidget().

◆ elementsComboBox

QComboBox* MeshQuality::elementsComboBox
private

list of elements describing the current mesh

Referenced by computeMeasure(), getInfos(), getWidget(), updateComboBox(), updateMeshColor(), and updateTableWidget().

◆ elementsMap

std::map<unsigned char, std::vector<vtkIdType> > MeshQuality::elementsMap
private

map describing index of cell for each type of element (needed as an attribute to update tableWidget)

Referenced by getInfos(), updateMeshColor(), and updateTableWidget().

◆ hexasFuncList

QStringList MeshQuality::hexasFuncList = QStringList() << "Diagonal" << "Dimension" << "Distortion" << "Edge Ratio" << "Jacobian" << "Maximum Aspect Frobenius" << "Maximum Edge Ratio" << "Mean Aspect Frobenius" << "Oddy" << "Scaled Jacobian" << "Relative Size Squared" << "Shape" << "Shape and Size" << "Shear" << "Shear and Size" << "Skew" << "Stretch" << "Taper" << "Volume"
staticprivate

Referenced by updateComboBox().

◆ informationFrame

QFrame* MeshQuality::informationFrame
private

this action widget (to simplify, it is just a label that gives mesh quality information)

Referenced by apply(), getWidget(), and MeshQuality().

◆ informationLabel

QLabel* MeshQuality::informationLabel
private

the information label (needed as an attributes to update the displayed text)

Referenced by apply(), and getWidget().

◆ isConnected

bool MeshQuality::isConnected
private

true, if slots are connected, false otherwise

Referenced by getWidget(), MeshQuality(), and updateComboBox().

◆ maxAR

double MeshQuality::maxAR
private

◆ maxNR

double MeshQuality::maxNR
private

◆ maxV

double MeshQuality::maxV
private

◆ minAR

double MeshQuality::minAR
private

minimum and maximum of acceptable range of a quality measure (included in normal range)

Referenced by computeHexasQuality(), computeQuadsQuality(), computeTetrasQuality(), computeTrisQuality(), getQualityColor(), and updateMeshColor().

◆ minNR

double MeshQuality::minNR
private

minimum and maximum of normal range of a quality measure

Referenced by computeHexasQuality(), computeQuadsQuality(), computeTetrasQuality(), computeTrisQuality(), getQualityColor(), and updateMeshColor().

◆ minV

double MeshQuality::minV
private

minimum and maximum of values found for the concerned mesh. These data are used when ratio are computed or when NormalRange is unbounded

Referenced by getQualityColor(), and updateTableWidget().

◆ quadsFuncList

QStringList MeshQuality::quadsFuncList = QStringList() << "Area" << "Aspect Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Jacobian" << "Maximum Angle" << "Maximum Aspect Frobenius" << "Maximum Edge Ratio" << "Mean Aspect Frobenius" << "Minimum Angle" << "Oddy" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size" << "Shear" << "Shear and Size" << "Skew" << "Stretch" << "Taper" << "Warpage"
staticprivate

Referenced by updateComboBox().

◆ qualityInfo

QTableWidget* MeshQuality::qualityInfo
private

the list of quality informations

Referenced by getWidget(), and updateTableWidget().

◆ qualityMeasureComboBox

QComboBox* MeshQuality::qualityMeasureComboBox
private

list of measure quality computable for one type of element

Referenced by getWidget(), and updateComboBox().

◆ tetrasFuncList

QStringList MeshQuality::tetrasFuncList = QStringList() << "Aspect Beta" << "Aspect Frobenius" << "Aspect Gamma" << "Aspect Ratio" << "Collapse Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Jacobian" << "Minimum Angle" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size" << "Volume"
staticprivate

Referenced by updateComboBox().

◆ trisFuncList

QStringList MeshQuality::trisFuncList = QStringList() << "Area" << "Aspect Frobenius" << "Aspect Ratio" << "Condition" << "Distortion" << "Edge Ratio" << "Maximum Angle" << "Minimum Angle" << "Radius Ratio" << "Relative Size Squared" << "Scaled Jacobian" << "Shape" << "Shape and Size"
staticprivate

lists defining quality methods for each type of element

Referenced by updateComboBox().


The documentation for this class was generated from the following files: