KSeExpr
4.0.4.0
|
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 (double param) const |
Evaluates curve and returns full value. More... | |
double | getChannelValue (double param, int channel) const |
CV | getLowerBoundCV (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... | |
double | comp (const double &val, const int) |
double | comp (const Vec3d &val, const int i) |
void | clampCurveSegment (const double &delta, double &d1, double &d2) |
void | clampCurveSegment (const Vec3d &delta, Vec3d &d1, Vec3d &d2) |
Static Private Member Functions | |
static double | comp (const T &val, 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 KSeExpr::Curve::InterpType |
KSeExpr::Curve< T >::Curve |
Definition at line 32 of file Curve.cpp.
References KSeExpr::Curve< T >::_cvData, and KSeExpr::Curve< T >::kNone.
void KSeExpr::Curve< T >::addPoint | ( | double | position, |
const T & | val, | ||
InterpType | type | ||
) |
Adds a point to the curve.
Definition at line 40 of file Curve.cpp.
Referenced by CCurveScene::rebuildCurve(), and CurveScene::rebuildCurve().
|
inlineprivate |
Definition at line 203 of file Curve.cpp.
References KSeExpr::clamp().
|
private |
Performs hermite derivative clamping in canonical space.
|
private |
Definition at line 213 of file Curve.cpp.
References KSeExpr::clamp().
|
private |
|
staticprivate |
Returns a component of the given value.
|
private |
|
static |
CV Parameter ordering (cv1._pos < cv2._pos)
Definition at line 26 of file Curve.cpp.
References KSeExpr::Curve< T >::CV::_pos.
double KSeExpr::Curve< T >::getChannelValue | ( | 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 139 of file Curve.cpp.
References KSeExpr::max(), and KSeExpr::min().
Curve< T >::CV KSeExpr::Curve< T >::getLowerBoundCV | ( | 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 186 of file Curve.cpp.
References KSeExpr::max(), and KSeExpr::min().
Referenced by CCurveScene::mousePressEvent(), and CurveScene::mousePressEvent().
T KSeExpr::Curve< T >::getValue | ( | double | param | ) | const |
Evaluates curve and returns full value.
Definition at line 94 of file Curve.cpp.
References KSeExpr::max(), and KSeExpr::min().
Referenced by CurveScene::drawPoly(), CCurveScene::getCPixmap(), and CCurveScene::mousePressEvent().
|
static |
void KSeExpr::Curve< T >::preparePoints |
Prepares points for evaluation (sorts and computes boundaries, clamps extrema)
Definition at line 46 of file Curve.cpp.
References KSeExpr::Curve< T >::CV::_deriv, KSeExpr::Curve< T >::CV::_interp, KSeExpr::Curve< T >::CV::_pos, and KSeExpr::Curve< T >::CV::_val.
Referenced by CCurveScene::rebuildCurve(), and CurveScene::rebuildCurve().
|
private |
Definition at line 47 of file Curve.h.
Referenced by KSeExpr::Curve< T >::Curve().
|
mutableprivate |
|
private |