189 lines
6.8 KiB
C++
189 lines
6.8 KiB
C++
/***********************************************************
|
|
* File generated by the HALCON-Compiler hcomp version 18.05
|
|
* Usage: Interface to C++
|
|
*
|
|
* Software by: MVTec Software GmbH, www.mvtec.com
|
|
***********************************************************/
|
|
|
|
|
|
#ifndef HCPP_HFUNCTION1D
|
|
#define HCPP_HFUNCTION1D
|
|
|
|
namespace HalconCpp
|
|
{
|
|
|
|
// Represents an instance of a 1d function.
|
|
class LIntExport HFunction1D : public HDataBase
|
|
{
|
|
|
|
public:
|
|
|
|
// Create an uninitialized instance
|
|
HFunction1D():HDataBase() {}
|
|
|
|
// Copy constructor
|
|
HFunction1D(const HFunction1D& source) : HDataBase(source) {}
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
* Operator-based class constructors
|
|
*****************************************************************************/
|
|
|
|
// create_funct_1d_array: Create a function from a sequence of y-values.
|
|
explicit HFunction1D(const HTuple& YValues);
|
|
|
|
// create_funct_1d_array: Create a function from a sequence of y-values.
|
|
explicit HFunction1D(double YValues);
|
|
|
|
// create_funct_1d_pairs: Create a function from a set of (x,y) pairs.
|
|
explicit HFunction1D(const HTuple& XValues, const HTuple& YValues);
|
|
|
|
// create_funct_1d_pairs: Create a function from a set of (x,y) pairs.
|
|
explicit HFunction1D(double XValues, double YValues);
|
|
|
|
|
|
/*****************************************************************************
|
|
* Operator overloads (non-member overloads reside in HOperatorOverloads.h) *
|
|
*****************************************************************************/
|
|
|
|
// Negate function
|
|
HFunction1D operator - () const;
|
|
|
|
// Invert function
|
|
HFunction1D operator ! () const;
|
|
|
|
|
|
/***************************************************************************
|
|
* Operators *
|
|
***************************************************************************/
|
|
|
|
// Plot a function using gnuplot.
|
|
void GnuplotPlotFunct1d(const HGnuplot& GnuplotFileID) const;
|
|
|
|
// Compose two functions.
|
|
HFunction1D ComposeFunct1d(const HFunction1D& Function2, const HString& Border) const;
|
|
|
|
// Compose two functions.
|
|
HFunction1D ComposeFunct1d(const HFunction1D& Function2, const char* Border) const;
|
|
|
|
// Calculate the inverse of a function.
|
|
HFunction1D InvertFunct1d() const;
|
|
|
|
// Calculate the derivatives of a function.
|
|
HFunction1D DerivateFunct1d(const HString& Mode) const;
|
|
|
|
// Calculate the derivatives of a function.
|
|
HFunction1D DerivateFunct1d(const char* Mode) const;
|
|
|
|
// Calculate the local minimum and maximum points of a function.
|
|
void LocalMinMaxFunct1d(const HString& Mode, const HString& Interpolation, HTuple* Min, HTuple* Max) const;
|
|
|
|
// Calculate the local minimum and maximum points of a function.
|
|
void LocalMinMaxFunct1d(const char* Mode, const char* Interpolation, HTuple* Min, HTuple* Max) const;
|
|
|
|
// Calculate the zero crossings of a function.
|
|
HTuple ZeroCrossingsFunct1d() const;
|
|
|
|
// Multiplication and addition of the y values.
|
|
HFunction1D ScaleYFunct1d(double Mult, double Add) const;
|
|
|
|
// Negation of the y values.
|
|
HFunction1D NegateFunct1d() const;
|
|
|
|
// Absolute value of the y values.
|
|
HFunction1D AbsFunct1d() const;
|
|
|
|
// Return the value of a function at an arbitrary position.
|
|
HTuple GetYValueFunct1d(const HTuple& X, const HString& Border) const;
|
|
|
|
// Return the value of a function at an arbitrary position.
|
|
double GetYValueFunct1d(double X, const HString& Border) const;
|
|
|
|
// Return the value of a function at an arbitrary position.
|
|
double GetYValueFunct1d(double X, const char* Border) const;
|
|
|
|
// Access a function value using the index of the control points.
|
|
void GetPairFunct1d(const HTuple& Index, HTuple* X, HTuple* Y) const;
|
|
|
|
// Access a function value using the index of the control points.
|
|
void GetPairFunct1d(Hlong Index, double* X, double* Y) const;
|
|
|
|
// Number of control points of the function.
|
|
Hlong NumPointsFunct1d() const;
|
|
|
|
// Smallest and largest y value of the function.
|
|
void YRangeFunct1d(double* YMin, double* YMax) const;
|
|
|
|
// Smallest and largest x value of the function.
|
|
void XRangeFunct1d(double* XMin, double* XMax) const;
|
|
|
|
// Access to the x/y values of a function.
|
|
void Funct1dToPairs(HTuple* XValues, HTuple* YValues) const;
|
|
|
|
// Sample a function equidistantly in an interval.
|
|
HFunction1D SampleFunct1d(const HTuple& XMin, const HTuple& XMax, const HTuple& XDist, const HString& Border) const;
|
|
|
|
// Sample a function equidistantly in an interval.
|
|
HFunction1D SampleFunct1d(double XMin, double XMax, double XDist, const HString& Border) const;
|
|
|
|
// Sample a function equidistantly in an interval.
|
|
HFunction1D SampleFunct1d(double XMin, double XMax, double XDist, const char* Border) const;
|
|
|
|
// Transform a function using given transformation parameters.
|
|
HFunction1D TransformFunct1d(const HTuple& Params) const;
|
|
|
|
// Calculate transformation parameters between two functions.
|
|
HTuple MatchFunct1dTrans(const HFunction1D& Function2, const HString& Border, const HTuple& ParamsConst, const HTuple& UseParams, double* ChiSquare, HTuple* Covar) const;
|
|
|
|
// Calculate transformation parameters between two functions.
|
|
HTuple MatchFunct1dTrans(const HFunction1D& Function2, const char* Border, const HTuple& ParamsConst, const HTuple& UseParams, double* ChiSquare, HTuple* Covar) const;
|
|
|
|
// Compute the distance of two functions.
|
|
HTuple DistanceFunct1d(const HFunction1D& Function2, const HTuple& Mode, const HTuple& Sigma) const;
|
|
|
|
// Compute the distance of two functions.
|
|
HTuple DistanceFunct1d(const HFunction1D& Function2, const HString& Mode, double Sigma) const;
|
|
|
|
// Compute the distance of two functions.
|
|
HTuple DistanceFunct1d(const HFunction1D& Function2, const char* Mode, double Sigma) const;
|
|
|
|
// Smooth an equidistant 1D function with a Gaussian function.
|
|
HFunction1D SmoothFunct1dGauss(double Sigma) const;
|
|
|
|
// Compute the positive and negative areas of a function.
|
|
double IntegrateFunct1d(HTuple* Negative) const;
|
|
|
|
// Read a function from a file.
|
|
void ReadFunct1d(const HString& FileName);
|
|
|
|
// Read a function from a file.
|
|
void ReadFunct1d(const char* FileName);
|
|
|
|
// Write a function to a file.
|
|
void WriteFunct1d(const HString& FileName) const;
|
|
|
|
// Write a function to a file.
|
|
void WriteFunct1d(const char* FileName) const;
|
|
|
|
// Create a function from a sequence of y-values.
|
|
void CreateFunct1dArray(const HTuple& YValues);
|
|
|
|
// Create a function from a sequence of y-values.
|
|
void CreateFunct1dArray(double YValues);
|
|
|
|
// Create a function from a set of (x,y) pairs.
|
|
void CreateFunct1dPairs(const HTuple& XValues, const HTuple& YValues);
|
|
|
|
// Create a function from a set of (x,y) pairs.
|
|
void CreateFunct1dPairs(double XValues, double YValues);
|
|
|
|
// Smooth an equidistant 1D function by averaging its values.
|
|
HFunction1D SmoothFunct1dMean(Hlong SmoothSize, Hlong Iterations) const;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|