# ipe::Bezier Class Reference
[Ipe Geometry]

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

- static Bezier quadBezier (const Vector &p0, const Vector &p1, const Vector &p2)
- static void spline (int n, const Vector *v, std::vector< Bezier > &result)
- static void closedSpline (int n, const Vector *v, std::vector< Bezier > &result)

## Public Attributes

- Vector iV [4]

## 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

Vector ipe::Bezier::iV[4]

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

- ipegeo.h
- ipegeo.cpp