Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 2.23 KB

paper.md

File metadata and controls

61 lines (52 loc) · 2.23 KB
title tags authors affiliations date bibliography
Helper for Bézier Curves, Triangles, and Higher Order Objects
algebra
bezier
curve
parametric curve
numerical software
Python
Fortran
name orcid affiliation
Danny Hermes
0000-0001-7366-173X
1
name index
University of California, Berkeley
1
22 May 2017
paper.bib

Summary

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

-Triangle-triangle intersection example

References