Fast subdivision of B\'ezier curves
Abstract
It is well-known that a d-dimensional polynomial B\'ezier curve of degree n can be subdivided into two segments using the famous de Casteljau algorithm in O(dn2) time. Can this problem be solved more efficiently? In this paper, we show that it is possible to do this in O(dnn) time using the fast Fourier transform and its inverse. Experiments show that the direct application of the new method performs well only for small values of n, as the algorithm is numerically unstable. However, a slightly modified version -- which still has O(dnn) computational complexity -- offers good numerical quality, which is confirmed by numerical experiments conducted in Python. Moreover, the new method has a nice property: if a B\'ezier curve is extended by an additional control point, the subdivision can be updated in O(d) time. A similar idea can be applied to speed up the subdivision of rational B\'ezier curves and rectangular B\'ezier surfaces, as well as to compute the derivatives of B\'ezier curves more efficiently.
Turn this paper into a full lesson
ArcXiv compiles a staged curriculum from this paper: 8-12 lessons across beginner → advanced, synthesised section guides, visuals, flashcards, a quiz, exercises, and on-demand deep dives per section. Grounded in the abstract, never invented.