Menu - Top - Home - Donate to Me

H3DU.BezierCurve

Back to documentation index.

H3DU.BezierCurve(cp, [u1], [u2])

Augments: H3DU.Curve

Deprecated: Instead of this class, use H3DU.BSplineCurve.fromBezierCurve to create a Bézier curve.

A curve evaluator object for a Bézier curve.

Parameters

Methods

H3DU.BezierCurve#accel(u)

Finds an approximate acceleration vector at the given U coordinate of this curve. The implementation in H3DU.Curve calls the evaluator's accel method if it implements it; otherwise, does a numerical differentiation using the velocity vector.

The acceleration of a curve is a vector which is the second-order derivative of the curve's position at the given coordinate. The vector returned by this method should not be "normalized" to a unit vector.

Parameters

Return Value

An array describing an acceleration vector. It should have at least as many elements as the number of dimensions of the underlying curve. (Type: Array.<number>)

H3DU.BezierCurve#arcLength(u)

Finds an approximate arc length (distance) between the start of this curve and the point at the given U coordinate of this curve. The implementation in H3DU.Curve calls the evaluator's arcLength method if it implements it; otherwise, calculates a numerical integral using the velocity vector.

The arc length function returns a number; if the curve is "smooth", this is the integral, from the starting point to u, of the length of the velocity vector.

Parameters

Return Value

The approximate arc length of this curve at the given U coordinate. (Type: number)

H3DU.BezierCurve#changeEnds(ep1, ep2)

Creates a curve evaluator object for a curve that is generated using the same formula as this one (and uses the same U coordinates), but has a different set of end points. For example, this method can be used to shrink the path of a curve from [0, π] to [0, π/8].

Note, however, that in general, shrinking the range of a curve will not shrink the length of a curve in the same proportion, unless the curve's path runs at constant speed with respect to time. For example, shrinking the range of a curve from [0, 1] to [0, 0.5] will not generally result in a curve that's exactly half as long as the original curve.

Parameters

Return Value

Return value. (Type: H3DU.Curve)

H3DU.BezierCurve#endPoints()

Returns the starting and ending U coordinates of this curve.

Return Value

A two-element array. The first and second elements are the starting and ending U coordinates, respectively, of the curve. (Type: Array.<number>)

H3DU.BezierCurve#evaluate(u)

Evaluates the curve function based on a point in a Bézier curve.

Parameters

Return Value

An array of the result of the evaluation. It will have as many elements as a control point, as specified in the constructor. (Type: Array.<number>)

Example

// Generate 11 points forming the B&eacute;zier curve.
// Assumes the curve was created with u1=0 and u2=1 (the default).
var points=[];
for(var i=0;i<=10;i++) {
points.push(curve.evaluate(i/10.0));
}

H3DU.BezierCurve#fitRange(ep1, ep2)

Creates a curve evaluator object for a curve that follows the same path as this one but has its U coordinates remapped to fit the given range. For example, this method can be used to shrink the range of U coordinates from [-π, π] to [0, 1] without shortening the path of the curve. Here, -π now maps to 0, and π now maps to 1.

Parameters

Return Value

Return value. (Type: H3DU.Curve)

H3DU.BezierCurve#getLength()

Convenience method for getting the total length of this curve.

Return Value

The distance from the start of the curve to its end. (Type: number)

H3DU.BezierCurve#getPoints(count)

Gets an array of positions on the curve at fixed intervals of U coordinates. Note that these positions will not generally be evenly spaced along the curve unless the curve uses an arc-length parameterization.

Parameters

Return Value

An array of curve positions. The first element will be the start of the curve. If "count" is 2 or greater, the last element will be the end of the curve. (Type: Array.<Array.<number>>)

H3DU.BezierCurve#jerk(u)

Finds an approximate jerk vector at the given U coordinate of this curve. The implementation in H3DU.Curve calls the evaluator's jerk method if it implements it; otherwise, does a numerical differentiation using the acceleration vector.

The jerk of a curve is a vector which is the third-order derivative of the curve's position at the given coordinate. The vector returned by this method should not be "normalized" to a unit vector.

Parameters

Return Value

An array describing a jerk vector. It should have at least as many elements as the number of dimensions of the underlying curve. (Type: Array.<number>)

H3DU.BezierCurve#normal(u)

Finds an approximate principal normal vector at the given U coordinate of this curve. The implementation in H3DU.Curve calls the evaluator's normal method if it implements it; otherwise, does a numerical differentiation using the velocity vector.

The principal normal of a curve is the derivative of the "normalized" velocity vector divided by that derivative's length. The normal returned by this method should be "normalized" to a unit vector. (Compare with H3DU.Surface#gradient.)

Parameters

Return Value

An array describing a normal vector. It should have at least as many elements as the number of dimensions of the underlying curve. (Type: Array.<number>)

H3DU.BezierCurve#tangent(u)

Convenience method for finding an approximate tangent vector of this curve at the given U coordinate. The tangent vector is the same as the velocity vector, but "normalized" to a unit vector.

Parameters

Return Value

An array describing a normal vector. It should have at least as many elements as the number of dimensions of the underlying curve. (Type: Array.<number>)

H3DU.BezierCurve#toArcLengthParam()

Creates a curve evaluator object for a curve that follows the same path as this one but has its U coordinates remapped to an arc length parameterization. Arc length parameterization allows for moving along a curve's path at a uniform speed and for generating points which are spaced evenly along that path -- both features are more difficult with most other kinds of curve parameterization.

The end points of the curve (obtained by calling the endPoints method) will be (0, N), where N is the distance to the end of the curve from its start.

When converting to an arc length parameterization, the curve should be continuous and have a speed greater than 0 at every point on the curve. The arc length parameterization used in this method is approximate.

Return Value

Return value. (Type: H3DU.Curve)

H3DU.BezierCurve#velocity(u)

Finds an approximate velocity vector at the given U coordinate of this curve. The implementation in H3DU.Curve calls the evaluator's velocity method if it implements it; otherwise, does a numerical differentiation using the position (from the evaluate method).

The velocity of a curve is a vector which is the derivative of the curve's position at the given coordinate. The vector returned by this method should not be "normalized" to a unit vector.

Parameters

Return Value

An array describing a velocity vector. It should have at least as many elements as the number of dimensions of the underlying curve. (Type: Array.<number>)

Back to documentation index.