91 #ifndef vtkMultiThreshold_h
92 #define vtkMultiThreshold_h
94 #include "vtkFiltersGeneralModule.h"
103 VTK_ABI_NAMESPACE_BEGIN
195 int AddIntervalSet(
double xmin,
double xmax,
int omin,
int omax,
int assoc,
const char* arrayName,
197 int AddIntervalSet(
double xmin,
double xmax,
int omin,
int omax,
int assoc,
int attribType,
209 int AddLowpassIntervalSet(
210 double xmax,
int assoc,
const char* arrayName,
int component,
int allScalars);
211 int AddHighpassIntervalSet(
212 double xmin,
int assoc,
const char* arrayName,
int component,
int allScalars);
213 int AddBandpassIntervalSet(
214 double xmin,
double xmax,
int assoc,
const char* arrayName,
int component,
int allScalars);
215 int AddNotchIntervalSet(
216 double xlo,
double xhi,
int assoc,
const char* arrayName,
int component,
int allScalars);
222 int AddBooleanSet(
int operation,
int numInputs,
int* inputs);
227 int OutputSet(
int setId);
279 else if (this->Component > other.
Component)
284 else if (this->AllScalars && (!other.
AllScalars))
287 if (this->Type == -1)
289 if (other.
Type == -1)
290 return this->Name < other.
Name;
295 return this->Type < other.
Type;
313 Set() { this->OutputId = -1; }
315 virtual ~
Set() =
default;
317 virtual void PrintNodeName(ostream& os);
319 virtual void PrintNode(ostream& os) = 0;
322 virtual Interval* GetIntervalPointer();
330 double EndpointValues[2];
332 int EndpointClosures[2];
341 int Match(
double cellNorm[2]);
344 void PrintNode(ostream& os)
override;
345 Interval* GetIntervalPointer()
override;
359 : Inputs(inBegin, inEnd)
365 void PrintNode(ostream& os)
override;
421 typedef std::map<NormKey, IntervalList>
RuleMap;
449 void UpdateDependents(
int id, std::set<int>& unresolvedOutputs, TruthTreeValues& setStates,
451 std::vector<vtkUnstructuredGrid*>& outv);
456 int AddIntervalSet(
NormKey& nk,
double xmin,
double xmax,
int omin,
int omax);
461 void PrintGraph(ostream& os);
468 double xmax,
int assoc,
const char* arrayName,
int component,
int allScalars)
475 double xmin,
int assoc,
const char* arrayName,
int component,
int allScalars)
482 double xmin,
double xmax,
int assoc,
const char* arrayName,
int component,
int allScalars)
488 double xlo,
double xhi,
int assoc,
const char* arrayName,
int component,
int allScalars)
519 VTK_ABI_NAMESPACE_END
520 #endif // vtkMultiThreshold_h
std::vector< Set * > Sets
A list of rules keyed by their unique integer ID.
int NextArrayIndex
A variable used to store the next index to use when calling SetInputArrayToProcess.
static double NegInf()
Special IEEE-754 number used to represent negative infinity.
Only include elements that don't belong to any input set.
A subset of a mesh represented by a range of acceptable attribute values.
bool operator<(const NormKey &other) const
A partial ordering of NormKey objects is required for them to serve as keys in the vtkMultiThreshold:...
int Operator
The boolean operation that will be performed on the inputs to obtain the output.
A subset of a mesh represented as a boolean set operation.
std::vector< TruthTreeValues > TruthTree
int AddBooleanSet(int operation, int numInputs, int *inputs)
Create a new mesh subset using boolean operations on pre-existing sets.
TruthTree DependentSets
A list of boolean sets whose values depend on the given set.
static double Inf()
Special IEEE-754 number used to represent positive infinity.
represent and manipulate cell attribute data
int OutputId
A unique identifier for this set.
virtual Interval * GetIntervalPointer()
Set()
The index of the output mesh that will hold this set or -1 if the set is not output.
BooleanSet(int sId, int op, int *inBegin, int *inEnd)
Construct a new set with the given ID, operator, and inputs.
std::map< NormKey, IntervalList > RuleMap
A map describing the IntervalSets that share a common attribute and norm.
NormKey Norm
This contains information about the attribute over which the interval is defined. ...
virtual BooleanSet * GetBooleanSetPointer()
Avoid dynamic_casts. Subclasses must override.
std::vector< Interval * > IntervalList
A list of pointers to IntervalSets.
concrete class for storing a set of points
Include elements that belong to an odd number of input sets (a kind of "winding XOR") ...
int AddBandpassIntervalSet(double xmin, double xmax, int assoc, const char *arrayName, int component, int allScalars)
These convenience members make it easy to insert closed intervals.
int AddIntervalSet(double xmin, double xmax, int omin, int omax, int assoc, const char *arrayName, int component, int allScalars)
Add a mesh subset to be computed by thresholding an attribute of the input mesh.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
provides thread-safe access to cells
Ruling
When an interval is evaluated, its value is used to update a truth table.
static vtkMultiBlockDataSetAlgorithm * New()
int AddLowpassIntervalSet(double xmax, int assoc, const char *arrayName, int component, int allScalars)
These convenience members make it easy to insert closed intervals.
abstract class to specify cell behavior
int AddHighpassIntervalSet(double xmin, int assoc, const char *arrayName, int component, int allScalars)
These convenience members make it easy to insert closed intervals.
a simple class to control print indentation
Closure
Whether the endpoint value of an interval should be included or excluded.
std::vector< int > Inputs
A list of input sets. These may be IntervalSets or BooleanSets.
dataset represents arbitrary combinations of all possible cell types
abstract superclass for arrays of numeric data
Interval * GetIntervalPointer() override
Include an element if it belongs to exactly one input set.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
Specify a closed interval.
int NumberOfOutputs
The number of output datasets.
int AddNotchIntervalSet(double xlo, double xhi, int assoc, const char *arrayName, int component, int allScalars)
These convenience members make it easy to insert closed intervals.
BooleanSet * GetBooleanSetPointer() override
Avoid dynamic_casts. Subclasses must override.
RuleMap IntervalRules
A set of threshold rules sorted by the attribute+norm to which they are applied.
Only include an element if it belongs to all the input sets.
SetOperation
Operations that can be performed on sets to generate another set.
A class with comparison operator used to index input array norms used in threshold rules...
Norm
Norms that can be used to threshold vector attributes.
Include an element if it belongs to any input set.
Threshold cells within multiple intervals.
A base class for representing threshold sets.
std::vector< int > TruthTreeValues