Search code examples
pythonalgorithmbeziercurve-fitting

How can I fit a Bézier curve to a set of data?


I have a set of data points (which I can thin out) that I need to fit with a Bézier curve. I need speed over accuracy, but the fit should be decent enough to be recognizable. I'm also looking for an algorithm I can use that doesn't make much use of libraries (specifically NumPy).

I've read several research papers, but none has enough detail to fully implement. Are there any open-source examples?


Solution

  • I have similar problem and I have found "An algorithm for automatically fitting digitized curves" from Graphics Gems (1990) about Bezier curve fitting. Additionally to that I have found source code for that article.

    Unfortunately it is written in C which I don't know very well. Also, the algorithm is quite hard to understand (at least for me). I am trying to translate it into C# code. If I will be successful, I will try to share it.

    File GGVecLib.c in the same folder as FitCurves.c contains basic vectors manipulation functions.

    I have found a similar Stack Overflow question, Smoothing a hand-drawn curve. The approved answer provide C# code for a curve fitting algorithm from Graphic Gems.