Published July 29, 2023 | Version 2023.7.28
Software Open

dhermes/bezier: 2023.7.28

  • 1. Co-founder @hardfinhq
  • 2. University of Graz
  • 3. EPFL


  • Fall back to de Casteljau algorithm for evaluation on high degree curves (#264). Fixed #263. The more efficient evaluate_multi_vs() function relies on the ability to compute binomial coefficients (n C k) but after (55 C 26) these values cannot be computed in floating point without roundoff and for very large degrees these values overflow.
Python Changes Packaging
  • Switched to delvewheel for repairing Windows wheels (#307). This is similar to how Linux and macOS packaging already work. This is vastly superior to the homegrown approach previously used with extra-dll.
  • Dropped support for Python 3.7 and added support for Python 3.10 and 3.11 (#271, #302).
  • Add strict check for Python version on source installs. Fixed #278.
  • Make missing BEZIER_INSTALL_PREFIX error message more helpful. In particular, add a suggestion to set BEZIER_NO_EXTENSION for a source only install if BEZIER_INSTALL_PREFIX cannot be set. Fixed #277.
  • Use cibuildwheel to automate building wheels as part of release (#308).
Bug Fixes
  • Allow the extra DLL directory to be absent on Windows. For binary wheel installs, this directory contains the libbezier DLL (e.g. bezier.libs\bezier-2a44d276.dll). For pure Python installs, the bezier.libs directory will be absent. (#307, #255). Fixed #254.
  • Bug fix for clip_range() (doc). Intersections with the t=0 / t=1 sides of the fat line were not taken into account and a value for s_max could be accidentally left unset if the intersections occurred in an order where the s-value decreased throughout (#259).
Breaking Changes
  • Removing Surface alias for the Triangle type (#252). The Surface type was deprecated (and converted to an alias) in the 2020.1.14 release.
Additive Changes
  • Renaming all \"private\" _verify args to verify (#251). For example, in Curve.intersect() (doc)
  • Adding provisional support for self-intersection checks in planar curves (#265, #267). Fixed #165 and #171. Supported via Curve.self_intersections() method.
  • Added alpha argument to Triangle.plot() and CurvedPolygon.plot() methods (#296).
  • Making all docs pages import external packages at least once (#257). Fixed #210.



Files (4.7 MB)

Name Size Download all
4.7 MB Preview Download

Additional details

Related works