Fast and lightweight class for using the Bezier curves of any order in C++
Algorithm implementations are based on A Primer on Bezier Curves by Pomax
- Any number of control points
- Fast operations on curves
- Dynamic manipulation
- Get value, curvature, tangent and normal for parameter t
- Get t from projection any point onto a curve
- Get derivative curve
- Split into two subcurves
- Find extremes and bounding box
- Find points of intersection with another curve
- Elevate/lower order
- Manipulate control points
- Manipulate dot on curve (only for quadratic and cubic curves)
- Bezier polycurves
- Create polycurve
- Equivalent methods from Bezier curves
- Adding and removing curves
- Curve continuity
- Parametric continuity
- Geometric continuity
- Document polycurve features
- More sophisticated example
- Bezier shapes
- c++11
- Eigen3
Add compile flag -march=native
when compiling to use vectorization with Eigen.
A small Qt5 based program written as a playground for manipulating Bezier curves.
- Starts with two Bezier curves (with 4 and 5 control points respectively)
- Zoom in/out: Ctrl + mouse wheel
- Manipulate control point or point on curve: Left mouse buttom
- Project mouse pointer on all curves and show tangent: Right mouse buttom
- Split curve at mouse point: Middle mouse buttom
- Raise order of the curve: Double left click
- Lower order of the curve Double right click
- Toggle bounding boxes and curve intersections: Double middle click
- qt5-default
Apache License Version 2.0