A cubic Bezier spline.
More...
#include <ipegeo.h>
List of all members.
Public Member Functions
- Bezier ()
- Bezier (const Vector &p0, const Vector &p1, const Vector &p2, const Vector &p3)
- Vector point (double t) const
- Vector tangent (double t) const
- double distance (const Vector &v, double bound)
- bool straight (double precision) const
- void subdivide (Bezier &l, Bezier &r) const
- void approximate (double precision, std::vector< Vector > &result) const
- Rect bbox () const
- bool snap (const Vector &v, double &t, Vector &pos, double &bound) const
- void intersect (const Line &l, std::vector< Vector > &result) const
- void intersect (const Segment &l, std::vector< Vector > &result) const
- void intersect (const Bezier &b, std::vector< Vector > &result) const
Static Public Member Functions
Public Attributes
Detailed Description
Constructor & Destructor Documentation
ipe::Bezier::Bezier |
( |
| ) |
[inline] |
Default constructor, uninitialized curve.
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].
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.
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 |
void Bezier::intersect |
( |
const Segment & |
l, |
|
|
std::vector< Vector > & |
result |
|
) |
| const |
void Bezier::intersect |
( |
const Bezier & |
b, |
|
|
std::vector< Vector > & |
result |
|
) |
| const |
Member Data Documentation
The documentation for this class was generated from the following files: