title | tags | authors | affiliations | date | bibliography | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Helper for Bézier Curves, Triangles, and Higher Order Objects |
|
|
|
22 May 2017 |
paper.bib |
bezier
is a Python helper for Bézier curves and
triangles [@SederbergNotes, @Farin2001]. Bézier curves (and
triangles) are parametric curves with polynomial components, but they are
expressed in terms of the Bernstein basis rather than the traditional power
basis. In addition to being more numerically stable
[@Farouki1987, @Farouki1991, @Farouki1996], this basis allows "intuitive"
manipulation of geometric shapes by controlling a set of points rather
than via algebraic techniques.
Bézier curves and triangles have been widely used for decades [@Farouki2012] in industrial design (e.g. shape), computer fonts and graphics, mathematics (e.g. isoparametric elements in finite elements), and many other fields.
This library provides support for
- 2D plotting
- 2D intersection (via both geometric [@Sederberg1989, @Sederberg1990, @Kim1998, @Sederberg1986] and algebraic [@JonssonVavasis, @Manocha:CSD-92-698] algorithms)
- Curve and triangle subdivision [@Farouki1990]
- Degree-elevation and reduction
- Evaluation of points on curves / triangles
- Determining parameters corresponding to a point on a on a curve or on a triangle (i.e. the inverse of evaluation)
- Specialization / reparameterization
- Self-intersection / singularity check for 2D triangles