1 Definition and Mathematical Formulation

1.1 Control points and parametric representation

A cubic Bézier curve is a parametric curve determined by four control points \(P_0, P_1, P_2, P_3\). For \(t \in [0,1]\), the curve is given by \[ \mathbf{B}(t)=(1-t)^3P_0+3(1-t)^2tP_1+3(1-t)t^2P_2+t^3P_3. \] The curve is smooth and lies in the plane or space where the control points are defined. The endpoints are the extreme control points: \(\mathbf{B}(0)=P_0\) and \(\mathbf{B}(1)=P_3\).

1.2 Bernstein polynomial basis

The cubic Bézier form uses the Bernstein basis polynomials: \[ b_0(t)=(1-t)^3,\quad b_1(t)=3(1-t)^2t,\quad b_2(t)=3(1-t)t^2,\quad b_3(t)=t^3. \] Then \(\mathbf{B}(t)=\sum_{i=0}^3 b_i(t)P_i\). The basis polynomials are nonnegative on \([0,1]\) and sum to 1, which underpins many geometric range properties discussed later.

1.3 Geometric interpretation of control point influence

Although the curve does not generally pass through intermediate control points \(P_1\) and \(P_2\), those points strongly influence the trajectory. Because each term is weighted by \(b_i(t)\), moving \(P_1\) affects the curve mostly near \(t=0\), while moving \(P_2\) affects it mostly near \(t=1\). The cubic weights create a smooth transition in influence across the parameter interval.

1.4 Endpoint tangents and continuity conditions

The endpoint derivatives relate directly to the inner control points: \[ \mathbf{B}'(0)=3(P_1-P_0),\qquad \mathbf{B}'(1)=3(P_3-P_2). \] This establishes how tangents at the endpoints can be controlled for joining segments. If two cubic Béziers meet at a shared endpoint, enforcing equal position and appropriate alignment of endpoint derivatives yields continuity at increasing smoothness levels.

1.5 Relationship to higher-level curve systems (e.g., splines)

Cubic Bézier segments are often combined into larger systems that produce piecewise smooth paths. In spline-based workflows, Bézier segments serve as compact building blocks for representing smooth curves and for enabling local editing. Although many spline systems differ in parameterization or continuity constraints, cubic Béziers are frequently used because they are convenient for evaluation, splitting, and rendering.

2 Evaluation and Derivatives

2.1 Point evaluation at a parameter value

To compute a point \(\mathbf{B}(t)\), substitute \(t\) into the cubic polynomial expression for the curve. In component form (for 2D or 3D vectors), the same scalar polynomial is applied to each coordinate. Straight substitution works but can incur redundant multiplications; implementations typically prefer forms that reduce arithmetic.

2.2 First derivative (tangent vector) computation

Differentiating the cubic Bézier yields a quadratic polynomial: \[ \mathbf{B}'(t)=3(1-t)^2(P_1-P_0)+6(1-t)t(P_2-P_1)+3t^2(P_3-P_2). \] The vector \(\mathbf{B}'(t)\) gives the tangent direction (scaled by speed) at parameter \(t\). In many applications, the normalized tangent is used, while in others the unnormalized vector is sufficient.

A second differentiation gives a linear function: \[ \mathbf{B}''(t)=6(1-t)(P_2-2P_1+P_0)+6t(P_3-2P_2+P_1). \] In planar curves, \(\mathbf{B}'(t)\) and \(\mathbf{B}''(t)\) together determine curvature; more generally, \(\mathbf{B}''(t)\) characterizes acceleration of the parametric motion and supports shape analysis.

2.4 Speed, arc length integrand, and numerical considerations

The speed is \(\|\mathbf{B}'(t)\|\). Arc length over \([0,1]\) is

\[

L=\int_0^1 \|\mathbf{B}'(t)\|\,dt,

\]

which generally has no simple closed form. Numerical integration is used, and the integrand can vary significantly depending on control point placement. Care is needed near degenerate shapes where \(\|\mathbf{B}'(t)\|\) becomes small.

2.5 Efficient computation strategies (Horner form)

Because \(\mathbf{B}(t)\) is a polynomial, it can be evaluated efficiently by rearranging terms to minimize multiplications. Horner-like schemes reduce computational cost and improve numerical behavior in typical floating-point environments. Many libraries implement both direct Bernstein evaluation and Horner/B-spline-like forms depending on context.

3 Convex Hull and Range Properties

3.1 Convex hull containment theorem

Since \(\mathbf{B}(t)\) is a convex combination of \(P_0,P_1,P_2,P_3\) with nonnegative weights summing to 1, every point on the curve lies inside the convex hull of the four control points. This containment property supports robust bounding strategies in rendering and intersection routines.

3.2 Bounding boxes and tightness considerations

A common acceleration structure uses axis-aligned bounding boxes (AABBs). The AABB of the Bézier control points contains the entire curve, though it may be loose because the curve occupies only part of the hull in many configurations. Tighter bounds can be obtained by considering extrema of the curve coordinates, which is treated in later sections.

3.3 Monotonicity and coordinate range behavior

Each coordinate function of \(\mathbf{B}(t)\) is a cubic polynomial. As a result, coordinate monotonicity over \([0,1]\) is not guaranteed, but the coordinate ranges can be determined by locating where derivatives vanish. In practice, identifying these extrema is key for tight bounding boxes and for shape classification.

4 Curve Subdivision and De Casteljau’s Algorithm

4.1 De Casteljau construction

De Casteljau’s algorithm constructs the point \(\mathbf{B}(t)\) using repeated linear interpolation among control points. For a parameter \(t\), define intermediate points: \[ Q_0=(1-t)P_0+tP_1,\quad Q_1=(1-t)P_1+tP_2,\quad Q_2=(1-t)P_2+tP_3, \] then \[ R_0=(1-t)Q_0+tQ_1,\quad R_1=(1-t)Q_1+tQ_2, \] and finally \[ \mathbf{B}(t)=(1-t)R_0+tR_1. \] This approach is geometric, numerically stable, and naturally yields the data needed for splitting.

4.2 Splitting a curve at a parameter value

A split at parameter \(t\) produces two cubic Bézier segments whose concatenation equals the original curve. The new control points are derived from the De Casteljau intermediates, with the shared endpoint occurring at \(\mathbf{B}(t)\). This is essential for adaptive rendering, recursive intersection tests, and incremental editing.

4.3 Subdivision for rendering and adaptive refinement

Rendering often approximates a Bézier by polylines. Subdivision helps place vertices where the curve bends more sharply, improving visual fidelity. Adaptive refinement typically uses a flatness metric or an error estimate to decide whether further splitting is needed.

4.4 Numerical stability and implementation notes

De Casteljau’s linear interpolations tend to behave well under floating-point arithmetic compared with some direct polynomial evaluations, especially in subdivision-heavy workflows. Implementations still handle edge cases such as nearly identical control points, where rounding can collapse geometry.

5 Extrema, Inflection Points, and Shape Analysis

5.1 Finding extrema via derivative roots

Extrema of a coordinate (e.g., \(x(t)\) or \(y(t)\)) occur when the corresponding derivative vanishes: \[ \frac{d}{dt}x(t)=0. \] Because the derivative is a quadratic for a cubic Bézier, its roots can be found using standard quadratic-solving methods. The parameter values in \([0,1]\) then identify where to compute coordinate values for bounding and analysis.

5.2 Determining inflection points

Inflection points are where the curve changes concavity. For a planar cubic Bézier, this corresponds to the determinant involving \(\mathbf{B}'(t)\) and \(\mathbf{B}''(t)\) crossing zero, under nondegeneracy conditions. The result is a parameter equation that is often quadratic, enabling direct root computation or subdivision-based verification.

5.3 Curvature sign changes and geometric meaning

In planar settings, curvature sign indicates whether the curve bends to one side or the other with respect to the parameter direction. An inflection point marks a transition in this bending behavior. In practice, due to floating-point uncertainty and degenerate control configurations, implementations may classify near-zero curvature transitions using tolerances.

5.4 Practical shape classification heuristics

For graphics systems, it is useful to categorize curve “modes,” such as nearly straight segments, loops, or monotone segments in certain axes. Heuristics combine information from bounding boxes, derivative roots, and inflection checks to select appropriate tessellation density and to support stable rendering decisions.

6 Degree Elevation and Curve Transformations

6.1 Degree elevation to higher-degree Béziers

A cubic Bézier can be expressed as a Bézier curve of higher degree (commonly quartic or quintic) while exactly representing the same geometric locus. Degree elevation introduces additional control points and increases flexibility for certain operations, such as matching derivatives when joining curves of different degrees.

6.2 Translation, rotation, scaling, and affine transforms

Bézier curves transform predictably under affine mappings. Applying an affine transform \(A\) to the curve is equivalent to applying \(A\) to each control point and evaluating the resulting Bézier: \[ A(\mathbf{B}(t)) = \mathbf{\tilde{B}}(t), \] where \(\tilde{P}_i=A(P_i)\). This property is fundamental to graphics pipelines and simplifies batch processing.

6.3 Transforming control points vs. transforming samples

Two approaches exist: transform the four control points and then evaluate, or evaluate multiple samples and transform those points. Transforming control points preserves exactness under affine transforms and avoids accumulating error from repeated sample evaluations. When transforms are not affine (e.g., projective mappings or certain nonlinear warps), the equivalence may fail and sample-based approaches are used.

7 Intersections and Proximity Queries

7.1 Line–curve intersection basics

A line intersects a Bézier curve when there exists \(t \in [0,1]\) such that \(\mathbf{B}(t)\) lies on the line. In parametric terms, substituting the line equation into the Bézier components yields polynomial equations in \(t\). For a true cubic, this can lead to up to three intersection parameters per coordinate-dependent formulation, though practical results depend on degeneracies and tolerance.

7.2 Segment–curve intersection approaches

For intersection between a Bézier segment and a line segment, algorithms typically combine bounding tests and iterative refinement. Because the curve lies in the convex hull of its control points, bounding-box or hull-based rejection can quickly discard non-intersecting cases. Remaining candidates are refined using subdivision or root-finding.

7.3 Curve–curve intersection strategies

Two cubic Béziers may intersect multiple times. A common robust strategy is recursive subdivision: split each curve into smaller segments, prune using bounding boxes, and continue until segments are sufficiently small to confirm intersection or approximation. This avoids solving high-degree systems directly and is widely used in computational geometry libraries.

7.4 Distance-to-curve and closest point approximation

Computing the exact closest point between a point and a Bézier curve generally requires solving an optimization problem. A typical method minimizes \(\|\mathbf{B}(t)-X\|^2\), leading to an equation that can be cubic or higher depending on formulation. In practice, iterative schemes or subdivision-based search are used, often returning an approximate \(t\) within a tolerance.

7.5 Root-finding and subdivision-based intersection methods

Root-finding methods (e.g., solving polynomial equations) can be efficient but may suffer from numerical issues when roots cluster or when near-tangencies occur. Subdivision-based methods are often more stable: they repeatedly reduce the problem size and use bounding checks to isolate candidate intersections. Many production systems combine both—using roots where safe and subdivision where uncertainty is high.

8 Conversion, Approximation, and Rendering

8.1 Approximating cubic Béziers with polylines

A standard rendering technique approximates \(\mathbf{B}(t)\) by sampling points and connecting them with straight segments. Quality depends on where samples are placed. Uniform sampling can miss high curvature regions; adaptive sampling uses subdivision or curvature/flatness criteria to allocate more segments where needed.

8.2 Error metrics for adaptive tessellation

Adaptive tessellation uses an error metric to decide when a segment is “flat enough.” Common criteria include maximum distance from the curve to the candidate chord, deviation from a control polygon, or an estimate derived from derivatives. These metrics guide recursion depth while controlling the final approximation quality.

8.3 Sampling density and parameterization pitfalls

Parameter \(t\) is not proportional to arc length, so equal \(t\)-steps yield non-uniform spacing along the curve. This can cause visible artifacts if sampling is too sparse where the curve travels quickly. Arc-length parameterization is possible but costly; instead, adaptive subdivision implicitly compensates by responding to geometric change.

8.4 Rasterization and antialiasing considerations

In rasterization, polylines or curve segments are converted into pixel coverage. Antialiasing requires accurate estimates of how much of each pixel is covered by the curve’s stroke or fill boundary. Curve flattening error can translate into jagged edges or inconsistent coverage, so tessellation tolerances are tied to rendering resolution.

8.5 Converting from/to other curve forms (e.g., arcs)

Sometimes Bézier curves must be approximated by other primitives such as circular arcs, or arcs must be approximated by Béziers. Conversions aim to minimize geometric error over a specified interval. While exact conversion between circles and cubic Béziers is generally not possible, rational Bézier representations can capture circles more closely; systems using only cubic polynomials often rely on approximation.

9 Continuity in Composite Curves

9.1 \(C^0\) continuity (position)

Two segments achieve \(C^0\) continuity when they share the same endpoint position. For adjacent cubic Béziers \(\mathbf{B}_a(t)\) and \(\mathbf{B}_b(t)\), this means the end of the first equals the start of the second: \(\mathbf{B}_a(1)=\mathbf{B}_b(0)\). This prevents visible gaps in the composite curve.

9.2 \(C^1\) continuity (tangent) constraints

For \(C^1\) continuity, the tangent directions at the shared endpoint must match. Since \(\mathbf{B}'(1)=3(P_{3}-P_{2})\) and \(\mathbf{B}'(0)=3(P_{1}-P_{0})\), matching tangents translates into a relationship between the inner control points adjacent to the joint. Ensuring both segments have colinear, equal-magnitude derivatives yields smooth first-order behavior.

9.3 \(C^2\) continuity (curvature) constraints

\(C^2\) continuity requires not only matching tangents but also matching second derivatives at the joint, which in turn aligns curvature. For cubics, second derivatives at endpoints depend on specific combinations of the control points near the joint. Enforcing \(C^2\) often constrains multiple control points and may require solving for control layouts.

9.4 Editing adjacent Bézier segments

Interactive editors frequently provide handles for endpoints and tangency constraints. When a user moves one control point, the system may automatically adjust neighboring points to preserve chosen continuity levels. For \(C^1\) and \(C^2\), the editor’s constraint solver updates the adjacent segment’s control polygon while keeping the joint smooth.

9.5 Smooth path construction workflows

Smooth path workflows typically proceed by establishing anchor points and then specifying handle directions and lengths (tangent controls). For higher smoothness, curvature constraints can be approximated by controlling additional degrees of freedom or by using specialized tools that compute consistent control point placements. The goal is a visually smooth boundary with predictable editing behavior.

10 Computational Geometry and Implementation Patterns

10.1 Robustness concerns (floating-point issues)

Geometric computations with Béziers can be sensitive to rounding, especially when dealing with nearly degenerate control points, near-parallel configurations, or tangential intersections. Implementations use tolerances for comparisons (e.g., treating small determinants as zero) and carefully avoid branching that depends on unstable numerical results.

10.2 Caching intermediate values

Repeated evaluation in loops—such as during tessellation, collision tests, or iterative intersection refinement—benefits from caching intermediate quantities. For instance, polynomial coefficients, precomputed control point differences, or De Casteljau intermediate points at reused parameter values can reduce redundant arithmetic.

10.3 Bounding-box pruning for queries

For many tasks (intersection, picking, proximity), a quick AABB test eliminates most irrelevant candidates. In recursive algorithms, subdividing the curve yields smaller bounding boxes, enabling tighter pruning at deeper recursion levels. This practice improves performance and can also reduce numerical risk by limiting how deep calculations go.

10.4 Common pseudocode patterns and library design

Typical library code organizes Bézier operations into reusable primitives: evaluation, derivative evaluation, bounding box calculation, subdivision, and root isolation. Many systems also separate “exact-ish” computations (e.g., bounding boxes using extrema) from “approximate” routines (e.g., tessellation for rendering), exposing consistent tolerances to the user or caller.

10.5 Testing strategies and degenerate cases

Effective testing includes random control configurations, structured edge cases (collinear points, repeated endpoints, and nearly straight segments), and comparisons against reference implementations. Degenerate cases are especially important: they can turn expected cubic behavior into lower-degree behavior, affecting root multiplicities, tangency detection, and subdivision termination criteria.