Bézier Curve Calculator
Interactive calculator for generating quadratic and cubic Bézier splines, exporting SVG path coordinates, customizing CSS cubic-bezier() animation easings, and stepping through De Casteljau recursive linear interpolations.
Control Point Manager
CSS Timing Function Editor
De Casteljau Step-by-Step Inspector
Understanding Bézier Curves
A Bézier curve is a smooth parametric curve defined by a set of control points $P_0, P_1, \dots, P_n$. First popularized in the 1960s by French engineer Pierre Bézier for designing car bodies at Renault (and independently developed by Paul de Casteljau at Citroën), Bézier curves are the foundational mathematical building block for modern vector graphics, digital typography, CAD/CAM systems, and CSS transition animations.
Linear Curve (1st Order)
Defined by 2 points ($P_0, P_1$). A straight line segment connecting start to end.
B(t) = (1-t)P₀ + tP₁ Quadratic Curve (2nd Order)
Defined by 3 points ($P_0, P_1, P_2$). Parabolic curve pulled toward handle $P_1$. Used in TrueType (.ttf) fonts.
B(t) = (1-t)²P₀ + 2(1-t)tP₁ + t²P₂ Cubic Curve (3rd Order)
Defined by 4 points ($P_0, P_1, P_2, P_3$). Allows smooth S-curves and inflections. Standard in CSS easing & PostScript (.otf).
B(t) = (1-t)³P₀ + 3(1-t)²tP₁ + 3(1-t)t²P₂ + t³P₃ Mathematical Formulations
Bernstein Polynomial Explicit Form
An $n$-th degree Bézier curve is explicitly defined as a linear combination of Bernstein basis polynomials Bi,n(t):
where Bᵢ,ₙ(t) = (n! / (i! • (n-i)!)) • (1 - t)ⁿ⁻ⁱ • tⁱ
The De Casteljau Recursive Algorithm
Instead of evaluating high-degree polynomials directly, the de Casteljau algorithm calculates points geometrically using repeated linear interpolation (lerp). At any step $k$, each intermediate point is calculated as:
CSS `cubic-bezier(x1, y1, x2, y2)` Explained
In Web CSS animations and transitions, timing functions map progression of time (X-axis, 0 to 1) to progression of the animated property (Y-axis).
Time Axis Constraint
The X-coordinates ($x_1, x_2$) represent time progress and must strictly remain between 0 and 1 as mandated by W3C CSS specifications (time cannot run backward!).
Property Axis & Overshoot (Springs)
The Y-coordinates ($y_1, y_2$) represent position and are unrestricted. Values $> 1.0$ create overshoot (spring arrival), while values $< 0.0$ create anticipation (pulling back before moving forward).
Real-World Industry Applications
🎨 Vector Graphics & SVG
Adobe Illustrator, Figma, and SVG paths (`
🔤 Digital Typography
Fonts are stored as glyph outlines. TrueType (.ttf) uses 2nd-degree quadratic Béziers for fast hardware rendering, whereas OpenType (.otf) uses 3rd-degree cubic Béziers for smoother curves.
🎮 Game Motion & Robotics
Autonomous mobile robots, camera tracks in 3D game engines (Unity/Unreal), and drone flight navigation use Bézier splines for smooth jerk-free trajectory planning.
⚙️ Industrial CAD/CAM
Automotive body design, aerospace aerodynamics, and CNC machining paths utilize Non-Uniform Rational B-Splines (NURBS) — an advanced generalization of Bézier curves.
Bézier Curve Definition & Key Formulas
A Bézier curve is a smooth parametric polynomial curve defined by n+1 control points. As parameter t varies from 0 to 1, the curve interpolates from start point P₀ to end point Pₙ, with its shape pulled toward intermediate control handles.
Parametric Definition & Bernstein Polynomial Basis
A Bézier curve of degree $n$ is mathematically formulated as a linear combination of $n+1$ control points $\mathbf{P}_i$ weighted by Bernstein polynomials $B_{i,n}(t)$:
Because $\sum_{i=0}^n B_{i,n}(t) = 1$ (partition of unity) and all weights are non-negative, the curve lies entirely inside the convex hull of its control polygon.
Quadratic (3-Point) vs Cubic (4-Point) Mathematical Formulas
Quadratic Bézier (Order 2)
Uses 1 intermediate control handle. Common in TrueType font glyphs and fast 2D canvas curves (SVG Q command).
Cubic Bézier (Order 3)
Uses 2 intermediate handles for inflection points (S-curves). Standard in PostScript, OpenType fonts, SVG C, and CSS animation timing.
De Casteljau’s Recursive Geometric Algorithm
Paul de Casteljau discovered that any Bézier curve point $\mathbf{B}(t)$ can be evaluated through repeated linear interpolation without computing polynomial powers:
CSS cubic-bezier() Easing Functions & SVG Path Data (C / Q)
CSS Animation Easing
transition-timing-function: cubic-bezier(x1, y1, x2, y2) maps normalized animation progress $y(t)$ over elapsed time $x(t)$. Setting $y > 1$ creates spring/bounce physics.
Scalable Vector Graphics (SVG)
SVG <path d="M x0 y0 C x1 y1, x2 y2, x3 y3" /> encodes exact resolution-independent vector graphics rendered natively across all web browsers and mobile displays.
Applications in Typography (TrueType/OpenType), CAD & Robotics
Digital Font Rendering
Every glyph in modern typography (TrueType, OpenType, PostScript) is assembled from continuous chained Bézier splines ($G^1$ continuity).
Automotive & Aerospace CAD
Automobile body aerodynamics and aircraft wing profiles are sculpted using piecewise composite Bézier surfaces (NURBS patches).
Autonomous Robot Trajectories
Self-driving vehicles and robotic arms plan collision-free, jerk-minimized transit paths using parametric Bézier trajectory waypoints.
Step-by-Step Worked Numerical Solutions
Find point on quadratic curve at $t = 0.5$ for $P_0(0, 0)$, $P_1(50, 100)$, $P_2(100, 0)$.
1. Formula: $B(t) = (1 - t)^2 P_0 + 2(1 - t)t P_1 + t^2 P_2$.
2. Weights at $t = 0.5$: $(1 - 0.5)^2 = 0.25$, $2(0.5)(0.5) = 0.50$, $(0.5)^2 = 0.25$.
3. $x(0.5) = 0.25(0) + 0.50(50) + 0.25(100) = 0 + 25 + 25 = 50$.
4. $y(0.5) = 0.25(0) + 0.50(100) + 0.25(0) = 0 + 50 + 0 = 50$.
Curve Coordinate at t = 0.5 is B(0.5) = (50, 50).
Common Pitfalls & Parameter Range Clamping
Lead Developer & Founder of Basic Math Tools. Specializes in browser-native computational algorithms and applied mathematics.
Mathematics & curriculum specialists. Audited against standard algebraic and arithmetic principles.