SeExpr
|
Interpolation curve class for double->double and double->Vec3D. More...
#include <Curve.h>
Classes | |
struct | CV |
Public Types | |
enum | InterpType { kNone = 0, kLinear, kSmooth, kSpline, kMonotoneSpline } |
Supported interpolation types. More... | |
Public Member Functions | |
Curve () | |
void | addPoint (double position, const T &val, InterpType type) |
Adds a point to the curve. More... | |
void | preparePoints () |
Prepares points for evaluation (sorts and computes boundaries, clamps extrema) More... | |
T | getValue (const double param) const |
Evaluates curve and returns full value. More... | |
double | getChannelValue (const double param, int channel) const |
CV | getLowerBoundCV (const double param) const |
Static Public Member Functions | |
static bool | interpTypeValid (InterpType interp) |
Returns whether the given interpolation type is supported. More... | |
static bool | cvLessThan (const CV &cv1, const CV &cv2) |
CV Parameter ordering (cv1._pos < cv2._pos) More... | |
Private Member Functions | |
void | clampCurveSegment (const T &delta, T &d1, T &d2) |
Performs hermite derivative clamping in canonical space. More... | |
template<> | |
double | comp (const double &val, const int) |
template<> | |
double | comp (const Vec3d &val, const int i) |
template<> | |
void | clampCurveSegment (const double &delta, double &d1, double &d2) |
template<> | |
void | clampCurveSegment (const Vec3d &delta, Vec3d &d1, Vec3d &d2) |
Static Private Member Functions | |
static double | comp (const T &val, const int i) |
Returns a component of the given value. More... | |
Private Attributes | |
int | cacheCV |
std::vector< CV > | _cvData |
bool | prepared |
Interpolation curve class for double->double and double->Vec3D.
Interpolation curve class for mapping from double -> double or double -> Vec3D Subject to some interpolation points.
Each segment is interpolated according to the interpolation type specified on the left control point. Interpolation types supported are members of InterpType below.
Valid instantiation types for this are double, or Vec3D
enum SeExpr2::Curve::InterpType |
SeExpr2::Curve< T >::Curve | ( | ) |
Definition at line 43 of file Curve.cpp.
References SeExpr2::Curve< T >::_cvData, and SeExpr2::Curve< T >::kNone.
void SeExpr2::Curve< T >::addPoint | ( | double | position, |
const T & | val, | ||
InterpType | type | ||
) |
Adds a point to the curve.
Definition at line 50 of file Curve.cpp.
Referenced by CCurveScene::rebuildCurve(), and CurveScene::rebuildCurve().
|
private |
Performs hermite derivative clamping in canonical space.
|
inlineprivate |
Definition at line 216 of file Curve.cpp.
References SeExpr2::clamp().
|
private |
Definition at line 226 of file Curve.cpp.
References SeExpr2::clamp().
|
private |
|
private |
|
staticprivate |
Returns a component of the given value.
|
static |
CV Parameter ordering (cv1._pos < cv2._pos)
Definition at line 38 of file Curve.cpp.
References SeExpr2::Curve< T >::CV::_pos.
double SeExpr2::Curve< T >::getChannelValue | ( | const double | param, |
int | channel | ||
) | const |
Evaluates curve for a sub-component of the interpolation values must call preparePoints() before this is ok to call
Definition at line 150 of file Curve.cpp.
References index(), SeExpr2::max(), SeExpr2::min(), x, and y.
Curve< T >::CV SeExpr2::Curve< T >::getLowerBoundCV | ( | const double | param | ) | const |
Returns the control point that is less than the parameter, unless there is no point, in which case it returns the right point or nothing
Definition at line 199 of file Curve.cpp.
References index(), SeExpr2::max(), and SeExpr2::min().
Referenced by CCurveScene::mousePressEvent(), and CurveScene::mousePressEvent().
T SeExpr2::Curve< T >::getValue | ( | const double | param | ) | const |
Evaluates curve and returns full value.
Definition at line 104 of file Curve.cpp.
References index(), SeExpr2::max(), SeExpr2::min(), x, and y.
Referenced by CurveScene::drawPoly(), CCurveScene::getCPixmap(), and CCurveScene::mousePressEvent().
|
static |
void SeExpr2::Curve< T >::preparePoints | ( | ) |
Prepares points for evaluation (sorts and computes boundaries, clamps extrema)
Definition at line 56 of file Curve.cpp.
References SeExpr2::Curve< T >::CV::_deriv, SeExpr2::Curve< T >::CV::_interp, SeExpr2::Curve< T >::CV::_pos, and SeExpr2::Curve< T >::CV::_val.
Referenced by CCurveScene::rebuildCurve(), and CurveScene::rebuildCurve().
|
private |
Definition at line 59 of file Curve.h.
Referenced by SeExpr2::Curve< T >::Curve().
|
mutableprivate |
|
private |