/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.3.2 Codacy Badge

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

Some 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 a parameter t
  • Point projection onto curve
  • Get curve length, parameter iteration by length
  • Get a derivative curve (hodograph)
  • Split into subcurves
  • Find curve roots, extrema and bounding box
  • Find points of intersection
  • 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

  • Eigen3.3

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

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

  • press H for a list of possible actions
  • outdated - newer features are not used in the example application

Additional dependencies

  • qt5-default

Licence

Apache License Version 2.0

Credit

The development of this software was in part supported by the European Cohesion Fund, through grant number KK.03.2.2.04.314 "Software modules for advanced autonomous motion of load-transportation vehicles (Soft4AGV)" of the "Innovations of newly established SMEs - phase 2" open call.