Skip to content

Latest commit

 

History

History
67 lines (55 loc) · 2.15 KB

README.md

File metadata and controls

67 lines (55 loc) · 2.15 KB

Bezier

Build Status v0.3 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

  • c++17
  • 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