Interpolate among two independent variables with planes. More...
#include <interp2_planar.h>
Public Types | |
typedef boost::numeric::ublas::vector< double > | ubvector |
typedef boost::numeric::ublas::vector< size_t > | ubvector_size_t |
Public Member Functions | |
void | set_data (size_t n_points, vec_t &x, vec_t &y, vec_t &f) |
Initialize the data for the planar interpolation and compute the scaling factors. | |
void | compute_scale () |
Find scaling. | |
double | eval (double x, double y) const |
Perform the planar interpolation. | |
double | operator() (double x, double y) const |
Perform the planar interpolation. | |
template<class vec2_t > | |
double | operator() (vec2_t &v) const |
Perform the planar interpolation using the first two elements of v as input. | |
void | eval_points (double x, double y, double &f, size_t &i1, double &x1, double &y1, size_t &i2, double &x2, double &y2, size_t &i3, double &x3, double &y3) const |
Planar interpolation returning the closest points. More... | |
Public Attributes | |
double | thresh |
Threshold for colinearity (default ![]() | |
double | x_scale |
The user-specified x scale (default -1) | |
double | y_scale |
The user-specified y scale (default -1) | |
Protected Member Functions | |
int | swap (size_t &index_1, double &dist_1, size_t &index_2, double &dist_2) const |
Swap points 1 and 2. | |
Protected Attributes | |
double | dx |
The scale in the x direction. | |
double | dy |
The scale in the y direction. | |
size_t | np |
The number of points. | |
vec_t * | ux |
The x-values. | |
vec_t * | uy |
The y-values. | |
vec_t * | uf |
The f-values. | |
bool | data_set |
True if the data has been specified. | |
Private Member Functions | |
interp2_planar (const interp2_planar< vec_t > &) | |
interp2_planar< vec_t > & | operator= (const interp2_planar< vec_t > &) |
This class performs planar interpolation when the data points are not arranged in a specified order (i.e. not on a grid). For a set of data , the value of
is predicted given a new value of x and y. This interpolation is performed by finding the plane that goes through three closest points in the data set. Distances are determined with
The values and
are specified in x_scale and y_scale, respectively. If these values are negative (the default) then they are computed with
and
.
If the x- and y-values of the entire data set lie on a line, then the interpolation will fail and the error handler will be called. Colinearity is defined by a threshold, thresh which defaults to . If the denominator,
where is an anti-symmetric Levi-Cevita tensor, then the points are colinear. The value of thresh can be zero, but if it is negative then it will be reset to the default value for the next interpolation.
This class stores pointers to the data, not a copy. The data can be changed between interpolations without an additional call to set_data(), but the scales may need to be recomputed with compute_scale().
The vector type can be any type with a suitably defined operator
[].
The interpolation requires at least three points and set_data() will call the error handler if the first argument is less than three.
Definition at line 93 of file interp2_planar.h.
|
inline |
This function interpolates x
and y
into the data returning f
. It also returns the three closest x- and y-values used for computing the plane.
Definition at line 203 of file interp2_planar.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).