• Stars
    star
    300
  • Rank 138,079 (Top 3 %)
  • Language
    C++
  • License
    The Unlicense
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library of cubic spline utilities

SplineLib

Library for manipulating 2D and 3D splines. Functionality included:

  • Creation from Bezier, Hermite, and Catmull-Rom forms
  • Creation of an array of splines from an array of points and tension value, or Bezier hull points, or Hermite tangents.
  • Creation of arcs and circles
  • Evaluation of position, velocity, acceleration, curvature, and tangent frame
  • Length measurement
  • Finding bounds
  • Offsetting (e.g., for stroking) and reversing splines
  • Splitting and re-joining of single splines
  • Subdivision of runs of splines either evenly, for flatness, or to be linear in arc length
  • Finding the closest point on a run of splines
  • Finding where runs of splines intersect, or a run of splines self-intersects
  • Helpers for advancing a point along a spline at some given velocity

To build and run the test app:

c++ --std=c++11 Splines.cpp SplinesTest.cpp -o splines && ./splines

Or add those files to your favourite IDE.

Examples

Splines from Points:

points

Fast and Conservative Bounds:

bounds

Closest Point on Spline:

pick

Spline Intersections:

pick

Moving Points on Splines:

agent

Subdivision and Joining:

pick