I am interested in finding an interpolation between a collection of two-dimensional points with corresponding angles. A bezier curve is quite similar to what I intend, but we can create multiple different Bezier interpolations using given endpoints and angles (see example below, created in Blender).
My question is the following: given only the locations and angles of the endpoints, is there a way to find a unique interpolation which honours the boundary conditions and is as smooth as possible? (I would define smoothness, for example, by saying that the curvature should be as uniform as possible over the path). If you would like to give specific recommendations, I am interested in a Python application.
I believe what you want to do can be achieved by the "Optimized Geometric Hermite Curve" mentioned in this paper.
Basically, you will use a cubic Hermite curve to interpolate the given position and first derivative vector at the end points. A cubic Hermite curve is defined by two end points and two tangent vectors at the end points. In this paper's case (which is the same as your case), the tangent vectors are only known for their directions and their magnitudes are determined by minimizing the "bending energy" of the curve, which will result in a pretty smooth curve.
The formula for the tangent vector's magnitudes a*0
and a*1
is listed as equation (4) in the paper.