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.

82 lines
2.5 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkFunctionSet.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 vtkFunctionSet
* @brief Abstract interface for sets of functions
*
* vtkFunctionSet specifies an abstract interface for set of functions
* of the form F_i = F_i(x_j) where F (with i=1..m) are the functions
* and x (with j=1..n) are the independent variables.
* The only supported operation is the function evaluation at x_j.
*
* @sa
* vtkImplicitDataSet vtkInterpolatedVelocityField
* vtkInitialValueProblemSolver
*/
#ifndef vtkFunctionSet_h
#define vtkFunctionSet_h
#include "vtkCommonMathModule.h" // For export macro
#include "vtkObject.h"
class VTKCOMMONMATH_EXPORT vtkFunctionSet : public vtkObject
{
public:
vtkTypeMacro(vtkFunctionSet, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Evaluate functions at x_j.
* x and f have to point to valid double arrays of appropriate
* sizes obtained with GetNumberOfFunctions() and
* GetNumberOfIndependentVariables.
* If you inherit this class, make sure to reimplement at least one of the two
* FunctionValues signatures.
*/
virtual int FunctionValues(double* x, double* f) { return this->FunctionValues(x, f, nullptr); }
virtual int FunctionValues(double* x, double* f, void* vtkNotUsed(userData))
{
return this->FunctionValues(x, f);
}
/**
* Return the number of functions. Note that this is constant for
* a given type of set of functions and can not be changed at
* run time.
*/
virtual int GetNumberOfFunctions() { return this->NumFuncs; }
/**
* Return the number of independent variables. Note that this is
* constant for a given type of set of functions and can not be changed
* at run time.
*/
virtual int GetNumberOfIndependentVariables() { return this->NumIndepVars; }
protected:
vtkFunctionSet();
~vtkFunctionSet() override {}
int NumFuncs;
int NumIndepVars;
private:
vtkFunctionSet(const vtkFunctionSet&) = delete;
void operator=(const vtkFunctionSet&) = delete;
};
#endif