$search

ecl::TensionFunction Class Reference

Representation of a tension function. More...

#include <tension_function.hpp>

Inheritance diagram for ecl::TensionFunction:
Inheritance graph
[legend]

List of all members.

Public Member Functions

double dderivative (const double &tau, const double &x) const
 Generates the 2nd derivative for a certain tension at the specified point.
double derivative (const double &tau, const double &x) const
 Generates the derivative for a certain tension at the specified point.
double operator() (const double &tau, const double &x) const
 Calculates the value for a certain tension at the specified point.
template<typename Derived >
 TensionFunction (const BluePrint< Derived > &blueprint)
 Blueprint constructor.
 TensionFunction ()
 Default constructor.
virtual ~TensionFunction ()

Private Attributes

double x_0
double x_f
double y_0
double y_f
double z_0
double z_f

Friends

class blueprints::TensionSecondDerivativeInterpolation
template<typename OutputStream >
OutputStream & operator<< (OutputStream &ostream, const TensionFunction &function)
 Streaming output insertion operator for tension functions.

Detailed Description

Representation of a tension function.

This is a hyperbolic function often used in spline interpolations that parameterises the 'tension' of a curve interpolation between points. At low tension it behaves like a cubic polynomial, while at high tension, it tends towards a piecewise smooth series of linear functions.

Theoretical Notes:

Tension functions are derived from the following constraints on an interval [x_i, x_i+1]:

  f'''' - tau^2 f'' = 0
  f(x_i)     = y_i
  f(x_i+1)   = y_i+1
  f''(x_i)   = z_i
  f''(x_i+1) = z_i+1
  

This yields a C2 continuous function with hyperbolic terms (not a polynomial) that ranges from looking like a cubic interpolation at low tensions (tau -> 0) and a linearly blended interpolation at high tensions.

Definition at line 110 of file tension_function.hpp.


Constructor & Destructor Documentation

ecl::TensionFunction::TensionFunction (  )  [inline]

Default constructor.

Don't really need this, but things like vectors and array containers need it so they can reserve the appropriate storage.

Definition at line 121 of file tension_function.hpp.

virtual ecl::TensionFunction::~TensionFunction (  )  [inline, virtual]

Definition at line 122 of file tension_function.hpp.

template<typename Derived >
ecl::TensionFunction::TensionFunction ( const BluePrint< Derived > &  blueprint  )  [inline]

Blueprint constructor.

Constructor that allows automatic generation from an existing blueprint. This can be used simply in the following manner for any static element belonging to the BluePrintFactory.

 TensionFunction f = TensionFunction::Interpolation(2.0,0.0,0.0,3.0,1.0,0.0);

Since this is not explicit, it will also allow assignment.

 TensionFunction f;
 f = TensionFunction::Interpolation(2.0,0.0,0.0,3.0,1.0,0.0);

This will emit a compile time failure if the template argument does not conform to the blueprints concept (refer to ecl_concepts' documentation).

Parameters:
blueprint : the blue print to use to generate this instance.
See also:
ecl::utilities::BluePrintFactory<TensionFunction>.

Definition at line 146 of file tension_function.hpp.


Member Function Documentation

double ecl::TensionFunction::dderivative ( const double &  tau,
const double &  x 
) const

Generates the 2nd derivative for a certain tension at the specified point.

Calculates the value of the 2nd derivative for a certain tension at the specified point.

Parameters:
tau : the tension parameter.
x : the point at which you wish to calculate the value for.
Returns:
double : the value of the 2nd derivative at x for tension tau.

Definition at line 37 of file lib/tension_function.cpp.

double ecl::TensionFunction::derivative ( const double &  tau,
const double &  x 
) const

Generates the derivative for a certain tension at the specified point.

Calculates the value of the derivative for a certain tension at the specified point.

Parameters:
tau : the tension parameter.
x : the point at which you wish to calculate the value for.
Returns:
double : the value of the derivative at x for tension tau.

Definition at line 26 of file lib/tension_function.cpp.

double ecl::TensionFunction::operator() ( const double &  tau,
const double &  x 
) const

Calculates the value for a certain tension at the specified point.

Calculates the value for a certain tension at the specified point.

Parameters:
tau : the tension parameter.
x : the point at which you wish to calculate the value for.
Returns:
double : the value of the function at x for tension tau.

Definition at line 45 of file lib/tension_function.cpp.


Friends And Related Function Documentation

Definition at line 195 of file tension_function.hpp.

template<typename OutputStream >
OutputStream& operator<< ( OutputStream &  ostream,
const TensionFunction function 
) [friend]

Streaming output insertion operator for tension functions.

Streaming output insertion operator for tension functions.

Template Parameters:
OutputStream : the type of stream being used.
Parameters:
ostream : the output stream being used.
function : the tension function.
Returns:
OutputStream : the output stream.

Definition at line 223 of file tension_function.hpp.


Member Data Documentation

double ecl::TensionFunction::x_0 [private]

Definition at line 203 of file tension_function.hpp.

double ecl::TensionFunction::x_f [private]

Definition at line 203 of file tension_function.hpp.

double ecl::TensionFunction::y_0 [private]

Definition at line 204 of file tension_function.hpp.

double ecl::TensionFunction::y_f [private]

Definition at line 204 of file tension_function.hpp.

double ecl::TensionFunction::z_0 [private]

Definition at line 202 of file tension_function.hpp.

double ecl::TensionFunction::z_f [private]

Definition at line 202 of file tension_function.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Defines


ecl_geometry
Author(s): Daniel Stonier (d.stonier@gmail.com)
autogenerated on Fri Mar 1 15:21:46 2013