Ipelib

ipe::Bezier Class Reference

A cubic Bezier spline. More...

#include <ipegeo.h>

List of all members.

Public Member Functions

Static Public Member Functions

Public Attributes


Detailed Description

A cubic Bezier spline.


Constructor & Destructor Documentation

ipe::Bezier::Bezier ( ) [inline]

Default constructor, uninitialized curve.

ipe::Bezier::Bezier ( const Vector p0,
const Vector p1,
const Vector p2,
const Vector p3 
) [inline]

Constructor with four control points.


Member Function Documentation

Vector Bezier::point ( double  t) const

Return point on curve with parameter t (from 0.0 to 1.0).

Vector Bezier::tangent ( double  t) const

Return tangent direction of curve at parameter t (from 0.0 to 1.0).

The returned vector is not normalized.

double Bezier::distance ( const Vector v,
double  bound 
)

Return distance to Bezier spline.

But may just return bound if actual distance is larger. The Bezier spline is approximated to a precision of 1.0, and the distance to the approximation is returned.

bool Bezier::straight ( double  precision) const

Returns true if the Bezier curve is nearly identical to the line segment iV[0]..iV[3].

void Bezier::subdivide ( Bezier l,
Bezier r 
) const

Subdivide this Bezier curve in the middle.

void Bezier::approximate ( double  precision,
std::vector< Vector > &  result 
) const

Approximate by a polygonal chain.

result must be empty when calling this.

Rect Bezier::bbox ( ) const

Return a tight bounding box (accurate to within 0.5).

bool Bezier::snap ( const Vector v,
double &  t,
Vector pos,
double &  bound 
) const

Find (approximately) nearest point on Bezier spline.

Find point on spline nearest to v, but only if it is closer than bound. If a point is found, sets t to the parameter value and pos to the actual point, and returns true.

Bezier Bezier::quadBezier ( const Vector p0,
const Vector p1,
const Vector p2 
) [static]

Convert a quadratic Bezier-spline to a cubic one.

The quadratic Bezier-spline with control points p0, p1, p2 is identical to the cubic Bezier-spline with control points q0 = p0, q1 = (2p1 + p0)/3, q2 = (2p1 + p2)/3, q3 = p2.

void Bezier::spline ( int  n,
const Vector v,
std::vector< Bezier > &  result 
) [static]

Convert a uniform cubic B-spline to a series of Bezier splines.

First and last control point are given multiplicity 3. Bezier splines are appended to result.

void Bezier::closedSpline ( int  n,
const Vector v,
std::vector< Bezier > &  result 
) [static]

Convert a closed uniform cubic B-spline to a series of Bezier splines.

Bezier splines are appended to result.

void Bezier::intersect ( const Line l,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Line.

void Bezier::intersect ( const Segment l,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Segment.

void Bezier::intersect ( const Bezier b,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Bezier.


Member Data Documentation


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