/Bezier

Fast and lightweight class for Bezier curves of any order in C++

Primary LanguageC++Apache License 2.0Apache-2.0

Bezier

Build Status v0.2 Codacy Badge

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

Key Features

  • Any number of control points
  • Fast operations on curves
  • Dynamic manipulation
  • Composite Bezier curves (polycurves)

CMake find_package() compatible!

find_package(Bezier)
target_link_libraries(target bezier)

Implemented methods

  • Get value, derivative, curvature, tangent and normal for parameter t
  • Get t from projection any point onto a curve
  • Get precise length for any part of curve
  • Get a derivative curve (hodograph)
  • Split into two subcurves
  • Find curve roots and bounding box
  • Find points of intersection with another curve
  • Elevate/lower order
  • Apply parametric and geometric continuities
  • etc.

Wish list

- [ ] Polycurve - oversee continuities between consecutive sub-curves
- [ ] Polycurve - propagation of sub-curve manipulation depending on continutiy
- [ ] Bezier shapes
- [ ] More sophisticated example

Dependencies

  • c++11
  • Eigen3

Instalation

System-wide installation

git clone https://github.com/romb-technologies/Bezier
mkdir Bezier/build
cd Bezier/build
cmake ..
make
make install

ROS

  • for use within a ROS workspace without the system-wide installation, clone the repo to src folder in you catkin workspace

Example program [OUTDATED]

A small Qt5 based program written as a playground for manipulating Bezier curves.

  • press H for a list of possible actions

Additional dependencies

  • qt5-default

Licence

Apache License Version 2.0