Fact-checked by Grok 2 weeks ago

De Casteljau's algorithm

De Casteljau's algorithm is a recursive geometric procedure for evaluating points on Bézier curves by iteratively applying , or barycentric combinations, to a sequence of control points based on a t in the [0, 1]. This method constructs the curve point through a triangular array of intermediate points, where each level refines the until the final value is obtained after n steps for a -n . Developed in 1959 by French mathematician and engineer Paul de Faget de Casteljau while employed at , the algorithm emerged from efforts to model smooth free-form surfaces for using early computational tools. Although de Casteljau's work remained largely internal and unpublished until his 1986 book Shape Mathematics and CAD, it paralleled and influenced the development of Bézier curves by at , establishing a numerically stable foundation for polynomial curve representation in computer-aided geometric design (CAGD). The algorithm's inception in the late 1950s marked a pivotal advancement in curve evaluation, enabling efficient computation without direct polynomial expansion. At its core, the algorithm operates on a polygon defined by points P_0, P_1, \dots, P_n, initializing the zeroth level as P_i^{(0)} = P_i for i = 0, \dots, n. Subsequent levels are computed recursively via P_i^{(k)} = (1 - t) P_i^{(k-1)} + t P_{i+1}^{(k-1)} for k = 1, \dots, n and appropriate i, culminating in the curve point B(t) = P_0^{(n)}. This process not only yields the point but also facilitates curve subdivision by generating new control polygons for segments on either side of t, preserving properties like C^k- at join points. The method extends naturally to Bézier surfaces, applying the bidirectionally for rectangular patches or via barycentric coordinates for triangular ones, supporting applications in rendering, , and parametric modeling. Key attributes of de Casteljau's algorithm include its affine invariance, ensuring transformations like and preserve the curve shape, and the property, whereby the curve lies entirely within the convex hull of its control points. It provides endpoint interpolation, with tangents derivable from adjacent control segments (e.g., the tangent at P_0 aligns with P_0 P_1), and exhibits numerical stability due to its reliance on simple linear operations rather than high-degree arithmetic. These features have made it indispensable in modern , such as and standards, and continue to underpin extensions like polar forms and blossoms for advanced curve manipulation in CAGD.

Overview

Definition

De Casteljau's algorithm is a recursive numerical procedure for evaluating points on Bézier curves through successive linear interpolations, serving as a stable alternative to direct polynomial evaluation. Developed as a barycentric method, it computes a specific point on a Bézier curve of degree n at a parameter t \in [0,1] by iteratively combining the curve's control points. This approach ensures the resulting point lies precisely on the curve while maintaining geometric intuition and avoiding numerical instabilities common in explicit polynomial expansions. The algorithm initiates with the ordered set of control points P_0, P_1, \dots, P_n that define the Bézier curve. It then performs repeated interpolations between consecutive points, weighted by t and $1-t, which systematically reduces the effective degree at each step—from n down to a single point representing the curve evaluation at t. This iterative barycentric combination process leverages the convex hull properties of the control points to produce smooth, aesthetically controlled curve segments suitable for applications in computer-aided design. One primary advantage of De Casteljau's algorithm is its ability to facilitate subdivision and point evaluation without deriving or storing the full equation of the , thereby enhancing computational efficiency and enabling seamless refinement in design workflows. This geometric also supports extensions to higher-dimensional surfaces and computations, underscoring its foundational role in modeling.

Historical development

Paul de Casteljau developed the algorithm in 1959 while employed at the French automaker , where he began work on April 1, 1958, in the company's laboratory focused on machining and design processes. His invention addressed challenges in automotive bodywork design, aiming to mathematically define smooth curves and surfaces with precision exceeding traditional manual methods like French curves. Initially constrained by the computational capabilities of the era, de Casteljau's approach drew inspiration from mechanical analogs such as cams and to facilitate numerically controlled milling for car parts, enabling the creation of complex shapes in automotive prototypes and designs. De Casteljau's work remained internal to , documented first in the company's 1958 annual activity report and formalized in a 1959 Enveloppe Soleau registration (No. 40.040) in March at the Institut National de la Propriété Industrielle (INPI) in , followed by a more detailed internal report in 1963. Due to 's policy of secrecy for , the algorithm was not publicly disclosed during this period, limiting its immediate dissemination despite early applications in machined prototypes by 1960. This internal focus contrasted with broader industry needs but laid the groundwork for computational in . Independently, at rival automaker developed a similar representation in the early , which became known as Bézier curves and gained prominence through Bézier's publications starting in 1966. De Casteljau's algorithm received its first public description in his 1985 book Formes à pôles, published by , where he introduced related concepts like polar forms or blossoms, marking the broader academic recognition of his contributions decades after invention. The algorithm's influence extended to the foundations of (CAD) systems in the 1960s and , powering tools like Renault's UNISURF and later Dassault's for precise surface modeling in automotive and industries. It proved essential for extensions to rational curves in the 1980s, as explored by researchers like Gerald Farin, and contributed to the development of non-uniform rational B-splines (NURBS) in the late , standardizing spline-based representations in modern CAD/CAM software.

Mathematical Background

Bézier curves

A Bézier curve of degree n is a parametric polynomial curve defined by a set of n+1 control points P_0, P_1, \dots, P_n in the plane or space, expressed as \mathbf{B}(t) = \sum_{i=0}^n \binom{n}{i} (1-t)^{n-i} t^i \mathbf{P}_i, \quad t \in [0,1]. This formulation weights each control point by a binomial coefficient and powers of t and $1-t, ensuring the curve traces a smooth path from start to end as t varies from 0 to 1. Bézier curves possess several key geometric properties that make them suitable for design applications. They exhibit endpoint interpolation, passing exactly through the first control point \mathbf{B}(0) = \mathbf{P}_0 and the last \mathbf{B}(1) = \mathbf{P}_n. The curve is contained within the of its control points, meaning it lies entirely inside the smallest formed by connecting the \mathbf{P}_i. Additionally, Bézier curves are affine invariant: applying an (such as , , , or shearing) to the control points yields the same on the curve. They also satisfy the variation diminishing property, where the number of times the curve crosses any straight line does not exceed the number of times the control polygon crosses it, preventing excessive oscillations. In and graphics, Bézier curves are widely used to model smooth contours. fonts, for instance, employ quadratic Bézier curves (degree 2) to define outlines, allowing scalable rendering without . They form the basis for paths in standards like , enabling precise, resolution-independent representations of illustrations and icons. In animation, Bézier curves define easing functions and motion paths, providing intuitive control over acceleration and deceleration in keyframe transitions. De Casteljau's algorithm serves as the primary method for evaluating these curves at specific parameter values.

Bernstein basis polynomials

The Bernstein basis polynomials of degree n, denoted B_{i,n}(t) for i = 0, 1, \dots, n, are defined as B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}, where t \in [0,1] and \binom{n}{i} is the . These polynomials form a basis for the of all polynomials of degree at most n on the interval [0,1], as any such polynomial can be uniquely expressed as a of them. Introduced by Sergei Natanovich in 1912 as part of a of the Weierstrass approximation theorem, they provide a stable representation for due to their inherent properties. Key properties of the Bernstein basis polynomials include non-negativity, , and a relation. Non-negativity holds because B_{i,n}(t) \geq 0 for all t \in [0,1] and $0 \leq i \leq n, since the coefficients are positive and the powers of t and $1-t are non-negative in this interval. The property ensures that \sum_{i=0}^n B_{i,n}(t) = 1 for all t \in [0,1], which follows from the applied to (t + (1-t))^n = 1^n = 1. Additionally, they satisfy the relation B_{i,n}(t) = (1-t) B_{i,n-1}(t) + t B_{i+1,n-1}(t), with boundary conditions B_{i,n}(t) = 0 if i < 0 or i > n; this relation allows efficient by building higher-degree polynomials from lower ones. These properties collectively ensure the basis is well-suited for applications requiring combinations and stability. In the context of De Casteljau's algorithm, the recursion relation of the Bernstein basis polynomials directly mirrors the iterative interpolation steps used to evaluate points on Bézier curves. Each step in the algorithm performs a analogous to the , leveraging the non-negativity and to maintain geometric invariance and during the computation. This structural similarity underpins the algorithm's efficiency in generating curve points without explicitly forming the full polynomial expression.

Algorithm Description

Notation and setup

De Casteljau's algorithm evaluates points on a of degree n, defined by n+1 control points denoted as P_0, P_1, \dots, P_n, where each P_i is a point in \mathbb{R}^d to support multivariate coordinates such as or vectors. The algorithm uses a t \in [0, 1] to determine the position along the curve. Intermediate points, required for the recursive computation, are denoted as \mathbf{P}_{i,k} for each level k = 1, \dots, n and index i = 0, \dots, n - k, formed through linear combinations of the control and prior intermediate points.

Recursive evaluation steps

De Casteljau's algorithm evaluates a point on a of degree n defined by control points P_0, P_1, \dots, P_n at a t \in [0, 1] through a series of iterative linear interpolations. The process initializes with the zeroth-level points P_{i,0} = P_i for i = 0, 1, \dots, n. For each level k = 1, 2, \dots, n, new points are computed recursively as P_{i,k} = (1 - t) P_{i,k-1} + t P_{i+1,k-1}, \quad i = 0, 1, \dots, n - k. This formula applies barycentric combinations to adjacent points from the previous level, generating n - k + 1 points at level k. The algorithm proceeds iteratively across n levels, progressively reducing the number of points: starting from n+1 initial points, each level yields one fewer point until a single point remains at level n. This constructs a triangular array of intermediate points, often visualized as building a pyramid that converges to the curve point. The final output is the Bézier curve point B(t) = P_{0,n}. A key application of the recursion arises in subdivision, where evaluating at t = 0.5 splits the curve into two degree-n Bézier segments; the intermediate points along the "upper" path form the control polygon for the left subcurve from t=0 to t=0.5, while those along the "lower" path define the right subcurve from t=0.5 to t=1. This enables recursive refinement for curve rendering or approximation without altering the overall curve.

Geometric interpretation

De Casteljau's algorithm provides a geometric of evaluation as a sequence of linear interpolations between control points, offering an intuitive visualization of how the curve is constructed. Each step involves points that divide line segments connecting adjacent control points in a fixed determined by the t, effectively blending the positions progressively. This process forms intermediate polylines at each level, starting from the initial control polygon and refining toward the desired curve point. The algorithm's structure manifests as a pyramid or trellis of these polylines, with the control points forming the broad base and successive interpolations narrowing the figure until it converges to a single point on the curve. Visually, this pyramid illustrates the curve's , as the intermediate levels represent lower-degree Bézier segments that smoothly transition, emphasizing the recursive refinement inherent in the evaluation process. A key intuitive benefit of this geometric view is its revelation of why the lies entirely within the of the control points, achieved through the use of convex combinations in the interpolations without needing to evaluate the full polynomial expression. This property ensures the curve remains bounded by the control polygon, aiding in and rendering applications.

Properties and Analysis

Computational complexity

De Casteljau's algorithm requires O(n²) time to evaluate a of degree n, as it performs n(n+1)/2 linear interpolations across the recursive levels of the triangular array. This quadratic complexity stems from the nested structure of the evaluation steps, where each level reduces the number of points by one through pairwise combinations. In terms of space, the algorithm demands O(n²) storage if the full triangular array of intermediate points is retained for subsequent operations like subdivision. However, practical implementations can achieve O(n) by overwriting the control points in place during the , reusing a single of size n+1. Relative to explicit evaluation via binomial expansion of the Bernstein basis polynomials, which naively computes O(n²) terms including potentially large coefficients, De Casteljau's approach is more efficient for high degrees n, as it avoids explicit coefficient calculations and relies solely on linear interpolations. The algorithm's structure also supports efficient curve subdivision, leveraging the intermediates to generate subcurves in the same O(n²) pass.

Numerical stability

De Casteljau's algorithm exhibits strong primarily because it relies exclusively on convex combinations of control points, involving only additions and scalar multiplications by parameters t and $1-t, thereby avoiding the computation of high-degree powers of t or coefficients that can lead to or underflow in direct methods. This approach ensures that intermediate values remain bounded within the of the control points, minimizing the propagation of rounding errors throughout the recursion. In terms of error propagation, the recursive nature of the algorithm causes any initial floating-point errors to diminish with each subdivision step, as the convex combinations progressively average out perturbations and reduce their relative impact on the final curve point. This property makes it better conditioned than for evaluating polynomials, particularly for parameter values t near 0.5, where Horner's scheme can amplify errors due to nested multiplications; numerical experiments confirm that de Casteljau's forward error bounds are sharper in such cases. Within the [0, 1], the algorithm is unconditionally stable, with relative errors proportional to the of the evaluation problem. Overall, the algorithm's preservation of affine invariance—stemming directly from its composition of linear interpolations—renders it particularly superior for (CAD) applications, where maintaining geometric properties under transformations is essential for reliable modeling and subdivision.

Examples

Quadratic Bézier curve

A Bézier curve is defined by three control points P_0, P_1, and P_2, and De Casteljau's algorithm evaluates a point on this curve at a t \in [0, 1] through successive linear interpolations. The process begins by computing the first-level intermediate points: \begin{align*} Q_0 &= (1 - t) P_0 + t P_1, \\ Q_1 &= (1 - t) P_1 + t P_2. \end{align*} These points lie on the line segments connecting the control points. The curve point B(t) is then found by between Q_0 and Q_1: B(t) = (1 - t) Q_0 + t Q_1. Substituting the expressions for Q_0 and Q_1 yields the explicit B(t) = (1 - t)^2 P_0 + 2t(1 - t) P_1 + t^2 P_2, but the algorithm computes it via the geometric steps for stability. This two-step specializes the general recursive to degree 2. For a numerical illustration, consider control points P_0 = (0, 0), P_1 = (1, 1), P_2 = (2, 0), and t = 0.5. The intermediate points are Q_0 = 0.5 (0, 0) + 0.5 (1, 1) = (0.5, 0.5) and Q_1 = 0.5 (1, 1) + 0.5 (2, 0) = (1.5, 0.5). Thus, B(0.5) = 0.5 (0.5, 0.5) + 0.5 (1.5, 0.5) = (1, 0.5).

Cubic Bézier curve application

De Casteljau's algorithm applied to a cubic Bézier curve, defined by four control points \mathbf{P}_0, \mathbf{P}_1, \mathbf{P}_2, \mathbf{P}_3, evaluates the curve point \mathbf{B}(t) at parameter t \in [0, 1] through a series of linear interpolations across three levels, leveraging the recursive structure inherent to degree-3 polynomials. This multi-level process highlights the algorithm's geometric interpretability, where each interpolation step refines intermediate points toward the final curve position. In the first level, compute the intermediate points: \mathbf{Q}_0 = (1-t) \mathbf{P}_0 + t \mathbf{P}_1, \quad \mathbf{Q}_1 = (1-t) \mathbf{P}_1 + t \mathbf{P}_2, \quad \mathbf{Q}_2 = (1-t) \mathbf{P}_2 + t \mathbf{P}_3. These represent linear interpolations between consecutive control points, forming a Bézier-like structure from the original cubic setup. The second level further interpolates among these points: \mathbf{R}_0 = (1-t) \mathbf{Q}_0 + t \mathbf{Q}_1, \quad \mathbf{R}_1 = (1-t) \mathbf{Q}_1 + t \mathbf{Q}_2. This step reduces the degree to linear, bridging the intermediate quadratic layer. The final curve point is obtained by: \mathbf{B}(t) = (1-t) \mathbf{R}_0 + t \mathbf{R}_1. This yields the exact position on the cubic Bézier curve at t, preserving the curve's smoothness and endpoint interpolation properties. To demonstrate, consider control points \mathbf{P}_0 = (0,0), \mathbf{P}_1 = (1,2), \mathbf{P}_2 = (2,0), \mathbf{P}_3 = (3,1) and t = 0.25 (so $1-t = 0.75). First level: \mathbf{Q}_0 = 0.75 \cdot (0,0) + 0.25 \cdot (1,2) = (0.25, 0.5), \mathbf{Q}_1 = 0.75 \cdot (1,2) + 0.25 \cdot (2,0) = (1.25, 1.5), \mathbf{Q}_2 = 0.75 \cdot (2,0) + 0.25 \cdot (3,1) = (2.25, 0.25). Second level: \mathbf{R}_0 = 0.75 \cdot (0.25, 0.5) + 0.25 \cdot (1.25, 1.5) = (0.5, 0.75), \mathbf{R}_1 = 0.75 \cdot (1.25, 1.5) + 0.25 \cdot (2.25, 0.25) = (1.5, 1.1875). Final point: \mathbf{B}(0.25) = 0.75 \cdot (0.5, 0.75) + 0.25 \cdot (1.5, 1.1875) = (0.75, 0.859375). This traces the algorithm's from control points to the curve, illustrating its utility in applications like where cubic model smooth paths.

Implementations

Pseudocode

De Casteljau's algorithm evaluates a point on a of degree n given an array of n+1 control points and a parameter t \in [0, 1]. The input consists of the control points P = [P_0, P_1, \dots, P_n], where each P_i is a point in space (e.g., 2D or 3D coordinates), and the scalar t. The output is the point B(t) on the Bézier curve at parameter t. This iterative procedure mirrors the recursive evaluation steps by building intermediate points through successive linear interpolations, avoiding the exponential complexity of naive recursion. The following pseudocode outlines the algorithm using a 2D array points to store intermediate results, where points[0] holds the initial control points:
function deCasteljau(P, n, t):
    // Initialize 2D array: points[k][i] for level k = 0 to n, i = 0 to n-k
    points = new array of size (n+1) x (n+1)
    for i = 0 to n:
        points[0][i] = P[i]
    
    for k = 1 to n:
        for i = 0 to n - k:
            points[k][i] = (1 - t) * points[k-1][i] + t * points[k-1][i+1]
    
    return points[n][0]  // This is B(t)
To optimize space usage, the algorithm can be implemented in-place by updating a single array of size n+1, overwriting earlier points as new ones are computed, since previous levels are no longer needed after each iteration. This reduces memory from O(n^2) to O(n).

Python implementation

A Python implementation of De Casteljau's algorithm leverages for vectorized operations on control points in multiple dimensions, providing an efficient way to evaluate Bézier curves at a given t \in [0, 1]. The function takes control points as a array of shape (n, d), where n is the plus one (number of points) and d is the dimensionality (e.g., 2 for , 3 for ), and returns the point on the curve as a 1D array of length d. This iterative approach avoids for better performance and , following the standard procedure described in foundational CAGD literature.
python
import numpy as np

def de_casteljau(control_points, t):
    """
    Evaluate a [Bézier curve](/page/Bézier_curve) at parameter t using De Casteljau's algorithm.
    
    Parameters:
    - control_points: np.ndarray of shape (n, d), where n is the number of control points,
      d is the dimension (e.g., 2 for [2D](/page/2D) points).
    - t: float, parameter in [0, 1].
    
    Returns:
    - np.ndarray of shape (d,), the point on the curve.
    """
    points = control_points.copy()  # Avoid modifying input
    n = len(points)
    for k in range(1, n):
        for i in range(n - k):
            points[i] = (1 - t) * points[i] + t * points[i + 1]
    return points[0]
This implementation is based on the generic for and is optimized for scientific computing environments. To visualize the , evaluate the over a range of t values and plot the results using , for example, by generating points with np.linspace(0, 1, 100) and connecting them.

JavaScript example

A implementation of De Casteljau's algorithm provides an efficient way to evaluate points on Bézier curves for dynamic web visualizations, such as animations or interactive in browsers. The algorithm iteratively applies linear interpolations between control points to compute the position at a given t (where $0 \leq t \leq 1). This approach is particularly useful for client-side rendering on or , enabling smooth generation without server dependencies. To handle 2D points, control points are represented as arrays of the form [x, y], where x and y are numeric coordinates. A helper function for (lerp) is required to perform component-wise operations on these arrays:
javascript
function [lerp](/page/Lerp)(p0, p1, t) {
  return [
    (1 - t) * p0[0] + t * p1[0],
    (1 - t) * p0[1] + t * p1[1]
  ];
}
The core evaluation function, adapted from standard , iteratively reduces the set of points through repeated lerping until a single point remains:
javascript
function deCasteljau(points, t) {
  let [current](/page/Current) = points.map(p => [...p]); // Deep copy to avoid [mutation](/page/Mutation)
  for (let k = 1; k < points.length; k++) {
    let temp = [];
    for (let i = 0; i < [current](/page/Current).length - 1; i++) {
      temp.push([lerp](/page/Lerp)([current](/page/Current)[i], [current](/page/Current)[i + 1], t));
    }
    [current](/page/Current) = temp;
  }
  return [current](/page/Current)[0];
}
For example, to draw a quadratic Bézier curve on an , obtain a 2D rendering context and loop over discrete t values, computing and plotting points with lineTo or moveTo:
javascript
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const controlPoints = [[100, 100], [200, 50], [300, 100]]; // Example [quadratic](/page/Quadratic) curve points

ctx.beginPath();
ctx.moveTo(controlPoints[0][0], controlPoints[0][1]);
for (let t = 0; t <= 1; t += 0.01) {
  const point = deCasteljau(controlPoints, t);
  ctx.lineTo(point[0], point[1]);
}
ctx.stroke();
This setup assumes the is sized appropriately (e.g., 400x200 pixels) and styled for visibility. The loop generates approximately 100 points for a smooth approximation, scalable based on performance needs. JavaScript's native handling of ensures sufficient precision for most curve evaluations, as the algorithm avoids explicit polynomial expansions that could amplify rounding errors. No external libraries are required, making it compatible with all modern browsers supporting ES6 features like arrow functions and spread operators; for older environments, polyfills may be added.

References

  1. [1]
    Finding a Point on a Bézier Curve: De Casteljau's Algorithm
    The fundamental concept of de Casteljau's algorithm is to choose a point C in line segment AB such that C divides the line segment AB in a ratio of u:1-u.
  2. [2]
    [PDF] Curves and Surfaces in Geometric Modeling: Theory and Algorithms
    Part II deals with an algorithmic treatment of polynomial curves (Bézier curves) and spline curves. ... This is in complete agreement with de Casteljau's original ...
  3. [3]
    [PDF] Outline The de Casteljau Algorithm Recall: Linear Interpolation ...
    How to compute a sequence of points that approximates a smooth curve given a set of control points? • Developed by. Paul de Casteljau at Citroën in.
  4. [4]
    [PDF] for CAGD - CMU School of Computer Science
    Figure 4.2 The de Casteljau algorithm: the point b3(t) is obtained from repeated linear interpolation. The cubic case n 3 is shown for t= 1/3. Example 4.1 ...
  5. [5]
    [PDF] The de Casteljau Algorithm for Evaluating Bezier Curves
    The de Casteljau algorithm can be regarded as repeated linear interpolation. Degree 1 “linear” Bezier, use standard linear interpolation: 0. 1.
  6. [6]
    Paul de Casteljau: The story of my adventure - ScienceDirect.com
    De Casteljau's first ideas were registered at INPI (de Casteljau, 1959). As this procedure only operates with papers of less than eight pages, Citroën chose ...
  7. [7]
    A tour d'horizon of de Casteljau's work - ScienceDirect.com
    ... Citroën, de Casteljau documented in 1959 the affine de Casteljau algorithm (Fig. ... In 1966, Paul de Casteljau wrote the internal 17-pages report Calcul de ...
  8. [8]
    [PDF] A History of Curves and Surfaces in CAGD - FarinHansford.com
    In 1959, the French car company Citroën hired a young mathematician in order to resolve some of the theoretical problems that arose from the blueprint-to- ...
  9. [9]
    1.3.4 Definition of Bézier curve and its properties - MIT
    A Bézier curve is a parametric curve that uses the Bernstein polynomials as a basis. A Bézier curve of degree $ n$ (order $ n+1$ ) is represented by
  10. [10]
    Bézier Curves - CS284 Lecture Page
    Sep 5, 2023 · Understanding the Properties of Bezier Curves · Endpoint Interpolation · Tangent Condition · Convex Hull · Linear Precision · Affine Invariance · Back ...
  11. [11]
    Properties of Bezier Curves
    Bezier curves exhibit a variation diminishing property. Informally this means that the Bezier curve will not wiggle any more than the control polygon does.
  12. [12]
    Digitizing Letterform Designs - TrueType Reference Manual
    Curves of the type just described are Bezier quadratic curves. A quadratic ... For example, the Apple core fonts are designed on a grid with 2048 units per em.
  13. [13]
    Paths — SVG 2
    The following picture shows some how cubic Bézier curves change their shape depending on the position of the control points. The first five examples illustrate ...
  14. [14]
    Bezier curve - The Modern JavaScript Tutorial
    Nov 30, 2022 · Summary. Bezier curves are defined by their control points. We saw two definitions of Bezier curves: Using a drawing process: De Casteljau's ...
  15. [15]
    [PDF] bernstein-1912.pdf
    13 A 1-2, 1912/13. Démonstration du théorème de Weierstrass fondée sur le calcul des probabilités. Je me propose d'indiquer une démonstration fort simple du ...
  16. [16]
    Bernstein Polynomial -- from Wolfram MathWorld
    The Bernstein polynomials are implemented in the Wolfram Language as BernsteinBasis[n, i, t]. The Bernstein polynomials have a number of useful properties ( ...
  17. [17]
    [PDF] The Bernstein polynomial basis: a centennial retrospective
    constructive proof of Weierstrass approximation theorem. • 1960s: Paul de Faget de Casteljau, Pierre´Etienne B´ezier.
  18. [18]
    1.3.1 Bernstein polynomials - MIT
    Recursion: $ B_{i,n}(t) = (1-t) with $ B_{i,n}(t)=0$ for $ i$ $ <$ 0 ... Bézier curves and Previous: 1.3 Bézier curves and Contents Index. December 2009.<|separator|>
  19. [19]
    [PDF] Project 1: Drawing Bézier Curves - CIS UPenn
    Usually, we perform subdivision for t = 1/2. This method is called the subdivision version of the de Casteljau algorithm. Implement the subdivision version of ...<|control11|><|separator|>
  20. [20]
    [PDF] Lecture 21: Bezier Approximation and de Casteljau's Algorithm and ...
    Thus the de Casteljau algorithm is a dynamic programming algorithm for computing points on a Bezier curve. Typically, for reasons that will become clear in the ...
  21. [21]
  22. [22]
    [PDF] Bezier Curves, Splines and Surfaces - KTH
    May 5, 2015 · The de Casteljau algorithm is numerically stable, since only convex combinations are applied. Complexity of the de Casteljau algorithm. • O(n2) ...
  23. [23]
    [PDF] Bezier Approximation and De Casteljau's Algorithm - Rice University
    • Bezier Curves Depend Only on their Control Points. • Bezier Curves are Independent of the Choice of the Origin of the. Coordinate System -- Also True for ...Missing: history | Show results with:history
  24. [24]
    [PDF] de Casteljau's Algorithm - tom rocks maths
    The structure of Bézier curves means that it can be transformed to manipulate the curve whilst maintaining collinearity and the ratio of distances between each ...
  25. [25]
    Running Relative Error for the Evaluation of Polynomials - SIAM.org
    Numerical experiments show that the derived running relative error bounds are sharp and that the de Casteljau algorithm presents better stability properties ...
  26. [26]
    Running Relative Error for the Evaluation of Polynomials
    Aug 20, 2025 · In the last few years, in the literature it has been shown that the de Casteljau algorithm outperforms Horner's algorithm, among other ...<|separator|>
  27. [27]
    Bézier curves - CS 418
    In addition to providing the point on the curve at t, De Casteljau's algorithm also splits the original Bézier curve into two: the set of all p 0 p_0 p0 (in ...
  28. [28]
    [PDF] arXiv:1806.05145v1 [math.NA] 13 Jun 2018
    Jun 13, 2018 · Evaluation via the de Casteljau algorithm has relative forward error proportional to the condition number of evaluation.
  29. [29]
    [PDF] MATH431: Bezier Curves - UMD MATH
    Aug 26, 2021 · Bezier curves are defined using control points to represent curves, with linear, quadratic, and cubic types defined by different control point ...
  30. [30]
    [PDF] CS 536 Computer Graphics Bezier Curve Drawing Algorithms
    How to compute a sequence of points that approximates a smooth curve given a set of control points? • Developed by. Paul de Casteljau at Citroën in.
  31. [31]
    A Primer on Bézier Curves - Pomax
    ... de Casteljau was first ... previoustable of contentsnext. The projection identity. De Casteljau's algorithm is the pivotal algorithm when it comes to Bézier ...