KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
kjb::Polybezier_curve Class Reference

#include <m2_spline.h>

Inheritance diagram for kjb::Polybezier_curve:
kjb::Spline_curve kjb::Cloneable

Public Types

enum  Point_type { CURVE_POINT = 0, HANDLE_2_POINT = 1, HANDLE_1_POINT = 2 }
 

Public Member Functions

 Polybezier_curve (int dimension)
 
 Polybezier_curve (const std::vector< kjb::Vector > &control_points)
 
Polybezier_curveclone () const
 Processes an Option from program command-line arguments. More...
 
size_t size () const
 
size_t dimension () const
 
void swap (Polybezier_curve &other)
 
kjb::Vector evaluate (double u) const
 
kjb::Vector gradient (double u) const
 
void insert_curve_point (int index, const kjb::Vector &curve_pt)
 
void insert (int index, const kjb::Vector &curve_pt, const kjb::Vector &handle_pt_1, const kjb::Vector &handle_pt_2)
 
void set_curve_point (int index, const kjb::Vector &pt)
 
void set_handle_point_1 (int index, const kjb::Vector &pt)
 
void set_handle_point_2 (int index, const kjb::Vector &pt)
 
void delete_curve_point (int index)
 
void reverse ()
 
void symmetrize_handle_1 (int index)
 
void symmetrize_handle_2 (int index)
 
kjb::Vectorget_curve_point (int index)
 
const kjb::Vectorget_curve_point (int index) const
 
kjb::Vectorget_handle_point_1 (int index)
 
const kjb::Vectorget_handle_point_1 (int index) const
 
kjb::Vectorget_handle_point_2 (int index)
 
const kjb::Vectorget_handle_point_2 (int index) const
 
kjb::Vectorget_control_point (int index)
 
const kjb::Vectorget_control_point (int index) const
 
virtual Nurbs_curve to_nurbs () const
 Convert to a mathematically equivalent nurbs curve. More...
 
- Public Member Functions inherited from kjb::Cloneable
virtual ~Cloneable ()
 Deletes this Cloneable. More...
 

Static Public Member Functions

static void decode_control_point (size_t i, size_t &curve_i, Point_type &point_type)
 
static size_t encode_control_point (size_t curve_i, Point_type point_type)
 

Friends

bool operator== (const Polybezier_curve &op1, const Polybezier_curve &op2)
 

Detailed Description

Sequence of cubic bezier curves of arbitrary dimension, connected end-to-end. In 2D, this is equivalent to paths in common graphics packages, and the API is designed to mimick this representation, using "handles" and "curve points" instead of the more generic "control points".

See Also
Gl_polybezier_curve
Author
Kyle Simek

Member Enumeration Documentation

Enumerator
CURVE_POINT 
HANDLE_2_POINT 
HANDLE_1_POINT 

Constructor & Destructor Documentation

kjb::Polybezier_curve::Polybezier_curve ( int  dimension)
kjb::Polybezier_curve::Polybezier_curve ( const std::vector< kjb::Vector > &  control_points)

Member Function Documentation

Polybezier_curve * kjb::Polybezier_curve::clone ( ) const
virtual

Processes an Option from program command-line arguments.

Implements kjb::Cloneable.

void kjb::Polybezier_curve::decode_control_point ( size_t  i,
size_t &  curve_i,
Point_type point_type 
)
static
void kjb::Polybezier_curve::delete_curve_point ( int  index)
size_t kjb::Polybezier_curve::dimension ( ) const
size_t kjb::Polybezier_curve::encode_control_point ( size_t  curve_i,
Point_type  point_type 
)
static
Vector kjb::Polybezier_curve::evaluate ( double  u) const
virtual
Warning
The current implementation of evaluate() currently converts to a nurbs object and then evaluates the nurbs object. As a result, this may be slower than expected.

Implements kjb::Spline_curve.

Vector & kjb::Polybezier_curve::get_control_point ( int  index)
const Vector & kjb::Polybezier_curve::get_control_point ( int  index) const
Vector & kjb::Polybezier_curve::get_curve_point ( int  index)
const Vector & kjb::Polybezier_curve::get_curve_point ( int  index) const
Vector & kjb::Polybezier_curve::get_handle_point_1 ( int  index)
const Vector & kjb::Polybezier_curve::get_handle_point_1 ( int  index) const
Vector & kjb::Polybezier_curve::get_handle_point_2 ( int  index)
const Vector & kjb::Polybezier_curve::get_handle_point_2 ( int  index) const
Vector kjb::Polybezier_curve::gradient ( double  u) const
virtual

Implements kjb::Spline_curve.

void kjb::Polybezier_curve::insert ( int  index,
const kjb::Vector curve_pt,
const kjb::Vector handle_pt_1,
const kjb::Vector handle_pt_2 
)
void kjb::Polybezier_curve::insert_curve_point ( int  index,
const kjb::Vector curve_pt 
)
void kjb::Polybezier_curve::reverse ( )
void kjb::Polybezier_curve::set_curve_point ( int  index,
const kjb::Vector pt 
)
void kjb::Polybezier_curve::set_handle_point_1 ( int  index,
const kjb::Vector pt 
)
void kjb::Polybezier_curve::set_handle_point_2 ( int  index,
const kjb::Vector pt 
)
size_t kjb::Polybezier_curve::size ( ) const
void kjb::Polybezier_curve::swap ( Polybezier_curve other)
void kjb::Polybezier_curve::symmetrize_handle_1 ( int  index)

set handle point based on location of 2nd handle point so curve is infinituely differentiable at the curve point

Set handle 1 to make symmetric to handle 2

Parameters
indexthe index of the curve point corresponding to the handle to be set
void kjb::Polybezier_curve::symmetrize_handle_2 ( int  index)

Set handle 2 to make symmetric to handle 1

Parameters
indexthe index of the curve point corresponding to the handle to be set
Nurbs_curve kjb::Polybezier_curve::to_nurbs ( ) const
virtual

Convert to a mathematically equivalent nurbs curve.

Friends And Related Function Documentation

bool operator== ( const Polybezier_curve op1,
const Polybezier_curve op2 
)
friend

The documentation for this class was generated from the following files: