You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
3.9 KiB
C
149 lines
3.9 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkHyperTreeGridThreshold.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkHyperTreeGridThreshold
|
||
|
* @brief Extract cells from a hyper tree grid
|
||
|
* where selected scalar value is within given range.
|
||
|
*
|
||
|
*
|
||
|
* This filter extracts cells from a hyper tree grid that satisfy the
|
||
|
* following threshold: a cell is considered to be within range if its
|
||
|
* value for the active scalar is within a specified range (inclusive).
|
||
|
* The output remains a hyper tree grid.
|
||
|
* JB Un parametre (JustCreateNewMask=true) permet de ne pas faire
|
||
|
* le choix de la creation d'un nouveau HTG mais
|
||
|
* de redefinir juste le masque.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkHyperTreeGrid vtkHyperTreeGridAlgorithm vtkThreshold
|
||
|
*
|
||
|
* @par Thanks:
|
||
|
* This class was written by Guenole Harel and Jacques-Bernard Lekien 2014
|
||
|
* This class was revised by Philippe Pebay, 2016
|
||
|
* This class was optimized by Jacques-Bernard Lekien, 2018.
|
||
|
* This work was supported by Commissariat a l'Energie Atomique
|
||
|
* CEA, DAM, DIF, F-91297 Arpajon, France.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkHyperTreeGridThreshold_h
|
||
|
#define vtkHyperTreeGridThreshold_h
|
||
|
|
||
|
#include "vtkFiltersHyperTreeModule.h" // For export macro
|
||
|
#include "vtkHyperTreeGridAlgorithm.h"
|
||
|
|
||
|
class vtkBitArray;
|
||
|
class vtkHyperTreeGrid;
|
||
|
|
||
|
class vtkHyperTreeGridNonOrientedCursor;
|
||
|
|
||
|
class VTKFILTERSHYPERTREE_EXPORT vtkHyperTreeGridThreshold : public vtkHyperTreeGridAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
static vtkHyperTreeGridThreshold* New();
|
||
|
vtkTypeMacro(vtkHyperTreeGridThreshold, vtkHyperTreeGridAlgorithm);
|
||
|
void PrintSelf(ostream&, vtkIndent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set/Get True, create a new mask ; false, create a new HTG.
|
||
|
*/
|
||
|
vtkSetMacro(JustCreateNewMask, bool);
|
||
|
vtkGetMacro(JustCreateNewMask, bool);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set/Get minimum scalar value of threshold
|
||
|
*/
|
||
|
vtkSetMacro(LowerThreshold, double);
|
||
|
vtkGetMacro(LowerThreshold, double);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set/Get maximum scalar value of threshold
|
||
|
*/
|
||
|
vtkSetMacro(UpperThreshold, double);
|
||
|
vtkGetMacro(UpperThreshold, double);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Convenience method to set both threshold values at once
|
||
|
*/
|
||
|
void ThresholdBetween(double, double);
|
||
|
|
||
|
protected:
|
||
|
vtkHyperTreeGridThreshold();
|
||
|
~vtkHyperTreeGridThreshold() override;
|
||
|
|
||
|
/**
|
||
|
* For this algorithm the output is a vtkHyperTreeGrid instance
|
||
|
*/
|
||
|
int FillOutputPortInformation(int, vtkInformation*) override;
|
||
|
|
||
|
/**
|
||
|
* Main routine to extract cells based on thresholded value
|
||
|
*/
|
||
|
int ProcessTrees(vtkHyperTreeGrid*, vtkDataObject*) override;
|
||
|
|
||
|
/**
|
||
|
* Recursively descend into tree down to leaves
|
||
|
*/
|
||
|
bool RecursivelyProcessTree(
|
||
|
vtkHyperTreeGridNonOrientedCursor*, vtkHyperTreeGridNonOrientedCursor*);
|
||
|
bool RecursivelyProcessTreeWithCreateNewMask(vtkHyperTreeGridNonOrientedCursor*);
|
||
|
|
||
|
/**
|
||
|
* LowerThreshold scalar value to be accepted
|
||
|
*/
|
||
|
double LowerThreshold;
|
||
|
|
||
|
/**
|
||
|
* UpperThreshold scalar value to be accepted
|
||
|
*/
|
||
|
double UpperThreshold;
|
||
|
|
||
|
/**
|
||
|
* Input material mask
|
||
|
*/
|
||
|
vtkBitArray* InMask;
|
||
|
|
||
|
/**
|
||
|
* Output material mask constructed by this filter
|
||
|
*/
|
||
|
vtkBitArray* OutMask;
|
||
|
|
||
|
/**
|
||
|
* Keep track of current index in output hyper tree grid
|
||
|
*/
|
||
|
vtkIdType CurrentId;
|
||
|
|
||
|
/**
|
||
|
* Keep track of selected input scalars
|
||
|
*/
|
||
|
vtkDataArray* InScalars;
|
||
|
|
||
|
/**
|
||
|
* With or without copy
|
||
|
*/
|
||
|
bool JustCreateNewMask;
|
||
|
|
||
|
private:
|
||
|
vtkHyperTreeGridThreshold(const vtkHyperTreeGridThreshold&) = delete;
|
||
|
void operator=(const vtkHyperTreeGridThreshold&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif /* vtkHyperTreeGridThreshold */
|