VTK  9.2.6
vtkPiecewiseFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPiecewiseFunction.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
142 #ifndef vtkPiecewiseFunction_h
143 #define vtkPiecewiseFunction_h
144 
145 #include "vtkCommonDataModelModule.h" // For export macro
146 #include "vtkDataObject.h"
147 
148 class vtkPiecewiseFunctionInternals;
149 
150 class VTKCOMMONDATAMODEL_EXPORT vtkPiecewiseFunction : public vtkDataObject
151 {
152 public:
155  void PrintSelf(ostream& os, vtkIndent indent) override;
156 
157  void DeepCopy(vtkDataObject* f) override;
158  void ShallowCopy(vtkDataObject* f) override;
159 
163  int GetDataObjectType() override { return VTK_PIECEWISE_FUNCTION; }
164 
168  int GetSize();
169 
171 
177  int AddPoint(double x, double y);
178  int AddPoint(double x, double y, double midpoint, double sharpness);
180 
185  bool RemovePointByIndex(size_t id);
186 
191  int RemovePoint(double x);
192 
197  int RemovePoint(double x, double y);
198 
203 
209  void AddSegment(double x1, double y1, double x2, double y2);
210 
215  double GetValue(double x);
216 
218 
224  int GetNodeValue(int index, double val[4]);
225  int SetNodeValue(int index, double val[4]);
227 
229 
236  double* GetDataPointer();
237  void FillFromDataPointer(int, double*);
239 
241 
244  vtkGetVector2Macro(Range, double);
246 
252  int AdjustRange(double range[2]);
253 
255 
261  void GetTable(
262  double x1, double x2, int size, float* table, int stride = 1, int logIncrements = 0);
263  void GetTable(
264  double x1, double x2, int size, double* table, int stride = 1, int logIncrements = 0);
266 
273  void BuildFunctionFromTable(double x1, double x2, int size, double* table, int stride = 1);
274 
276 
284  vtkSetMacro(Clamping, vtkTypeBool);
285  vtkGetMacro(Clamping, vtkTypeBool);
286  vtkBooleanMacro(Clamping, vtkTypeBool);
288 
294  vtkSetMacro(UseLogScale, bool);
295  vtkGetMacro(UseLogScale, bool);
296  vtkBooleanMacro(UseLogScale, bool);
307  const char* GetType();
308 
314 
320  void Initialize() override;
321 
323 
329 
331 
335  vtkSetMacro(AllowDuplicateScalars, vtkTypeBool);
336  vtkGetMacro(AllowDuplicateScalars, vtkTypeBool);
337  vtkBooleanMacro(AllowDuplicateScalars, vtkTypeBool);
339 
344  int EstimateMinNumberOfSamples(double const& x1, double const& x2);
345 
346 protected:
349 
356 
360  bool UpdateRange();
361 
366 
367  // The internal STL structures
368  vtkPiecewiseFunctionInternals* Internal;
369 
370  // Determines the function value outside of defined points
371  // Zero = always return 0.0 outside of defined points
372  // One = clamp to the lowest value below defined points and
373  // highest value above defined points
375 
376  // Array of points ((X,Y) pairs)
377  double* Function;
378 
379  // Min and max range of function point locations
380  double Range[2];
381 
383 
385 
386 private:
388  void operator=(const vtkPiecewiseFunction&) = delete;
389 };
390 
391 #endif
general representation of visualization data
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Defines a 1D piecewise function.
int SetNodeValue(int index, double val[4])
For the node specified by index, set/get the location (X), value (Y), midpoint, and sharpness values ...
int AdjustRange(double range[2])
Remove all points out of the new range, and make sure there is a point at each end of that range.
double GetValue(double x)
Returns the value of the function at the specified location using the specified interpolation.
int AddPoint(double x, double y, double midpoint, double sharpness)
Add points to the function.
static vtkPiecewiseFunction * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
void GetTable(double x1, double x2, int size, float *table, int stride=1, int logIncrements=0)
Fills in an array of function values evaluated at regular intervals.
int RemovePoint(double x)
Remove the first point found at the given x location Return the index of the remove point if any,...
double * GetDataPointer()
Returns a pointer to the data stored in the table.
void GetTable(double x1, double x2, int size, double *table, int stride=1, int logIncrements=0)
Fills in an array of function values evaluated at regular intervals.
int AddPoint(double x, double y)
Add points to the function.
double GetFirstNonZeroValue()
Returns the first point location which precedes a non-zero segment of the function.
int RemovePoint(double x, double y)
Remove the first point found at the given x and y location Return the index of the remove point if an...
void SortAndUpdateRange()
Internal method to sort the vector and update the Range whenever a node is added, edited or removed.
vtkPiecewiseFunctionInternals * Internal
void FillFromDataPointer(int, double *)
Returns a pointer to the data stored in the table.
void BuildFunctionFromTable(double x1, double x2, int size, double *table, int stride=1)
Constructs a piecewise function from a table.
int GetSize()
Get the number of points used to specify the function.
~vtkPiecewiseFunction() override
void Initialize() override
Clears out the current function.
bool UpdateRange()
Returns true if the range has been updated and Modified() has been called.
void RemoveAllPoints()
Removes all points from the function.
void DeepCopy(vtkDataObject *f) override
Shallow and Deep copy.
static vtkPiecewiseFunction * New()
const char * GetType()
Return the type of function: Function Types: 0 : Constant (No change in slope between end points) 1 :...
double FindMinimumXDistance()
Traverses the nodes to find the minimum distance.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkPiecewiseFunction * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
void AddSegment(double x1, double y1, double x2, double y2)
Add a line segment to the function.
int EstimateMinNumberOfSamples(double const &x1, double const &x2)
Estimates the minimum size of a table such that it would correctly sample this function.
bool RemovePointByIndex(size_t id)
Remove a point from the function at a given id Return true if point has been found and removed,...
int GetNodeValue(int index, double val[4])
For the node specified by index, set/get the location (X), value (Y), midpoint, and sharpness values ...
int GetDataObjectType() override
Return what type of dataset this is.
void ShallowCopy(vtkDataObject *f) override
Shallow and Deep copy.
@ info
Definition: vtkX3D.h:382
@ range
Definition: vtkX3D.h:244
@ size
Definition: vtkX3D.h:259
@ index
Definition: vtkX3D.h:252
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
Definition: vtkRange.h:85
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_PIECEWISE_FUNCTION
Definition: vtkType.h:82