ClanSoft logo
ClanSoft logo
Entire Class Index Main Class Index Cross Index Global Index

Class CL_BezierCurve

Class for Bezier curves
Contained in: global
Derived from: none
Derived by: none
Group: Core (Math)

#include <ClanLib/core.h>


public function member index:

Construction:

CL_BezierCurve(const CL_Vector* cp, int cs, int steps, bool stepping = true);
virtual ~CL_BezierCurve();

Attributes:

virtual int get_steps() const;
virtual int get_cs() const;
virtual bool get_stepping() const;
virtual float get_length(int segment = -1) const;
virtual CL_Vector* get_curve() const;
virtual CL_Vector* get_control_points() const;

Operations:

virtual void set_steps(int steps);
virtual void set_stepping(bool stepping);

Operators:

CL_Vector operator [] (int n);
 

protected function member index:

virtual void make_curve();
 

Description:

This class generates points on a Bezier curve from given control points

USE AT YOUR OWN RISK TILL THIS CLASS IS EXTENSIVELY TESTED!!! I WILL REMOVE THIS WARNING ONCE IT BASICALLY WORKS.

I hate documentation work and I won't document this code before any one besides me actually uses it. So if you want to use it simply write a mail on the ClanLib User list and I will do what I can :-)

1999/12/30 vogel renamed CL_Bezier to CL_BezierCurve
added CL_BezierSurface

1999/07/07 vogel initial version


BezierCurve TODO:

- length and stepping per curve

stepping per curve means that the generated points are equidistant to each other and this requires get_length() working. So at the moment all that is working is having 'n' equidistant points per segment.

same applies to BezierSurface.


Function Member Descriptions:

CL_BezierCurve::CL_BezierCurve - Constructor
CL_BezierCurve(const CL_Vector* cp, int cs, int steps, bool stepping = true);
cp - an array of control points with size (4 * cs)
cs - number of curve segments
steps - number of points to generate
stepping - whether steps is the number of points per segment or per curve.



CL_BezierCurve::get_control_points - Returns the 4 * cs control points
virtual CL_Vector* get_control_points() const;
Returns - the 4 * cs control points



CL_BezierCurve::get_cs - Returns the number of curve segments
virtual int get_cs() const;
Returns - number of curve segments



CL_BezierCurve::get_curve - Returns an array of cs * steps CL_Vectors -> the curve
virtual CL_Vector* get_curve() const;
Returns - the curve (cs * steps CL_Vectors)



CL_BezierCurve::get_length - Returns the lenght of a segment (or the curve)
virtual float get_length(int segment = -1) const;
segment - number of segment (-1 indicates whole curve)
Returns - length of segment (or curve)



CL_BezierCurve::get_stepping - Returns whether steps is the number of points per segment or per curve.
virtual bool get_stepping() const;
Returns - stepping



CL_BezierCurve::get_steps - Returns the number of steps
virtual int get_steps() const;
Returns - number of steps



CL_BezierCurve::operator [] - Returns the n-th vector of the curve (_doesn't_ return a reference)
CL_Vector operator [] (int n);
n - the vector to return (counting starts at 0)
Returns - the n-th vector of the curve (_doesn't_ return a reference)



CL_BezierCurve::set_stepping - Sets the stepping
virtual void set_stepping(bool stepping);
stepping - whether steps is the number of points per segment or per curve.



CL_BezierCurve::set_steps - Sets the number of steps
virtual void set_steps(int steps);
steps - number of steps



CL_BezierCurve::~CL_BezierCurve - Destructor
virtual ~CL_BezierCurve();



Variable Member Descriptions: