I just finished the preliminary version of a quadratic Bezier curvature explorer that expounds on the principles discussed in this post.  The two primary aspects of the explorer are interactive identification of geometric constraints yielding monotone curvature and computation of the natural parameter at maximum curvature.  The algorithms are discussed in the Deddi, Everett, and Lazard paper.

Curvature as a function of arc length is one means for describing the shape of a curve.  Since a quad. Bezier can be quickly subdivided, it is possible to isolate segments of a quad. Bezier with predictable curvature.  The key is establishing a subdivision process in which segments are ‘suitably close’ to pythagorean hodograph curves.  Arc length becomes are more tractable problem.

A screen shot from the explorer is shown below.  The UI is embarrassingly crude, but time is short and validating computations is far more important than visuals at this time.  I’m working on an eBook titled Black Belt Beziers in which a more general and visually compelling explorer will be employed to investigate a very wide variety of Bezier properties.  The source code will also be cleaned up and released at that time.

Manipulate the control points to visualize configurations that produce monotone curvature.  At each modification, the t-parameter corresponding to maximum (extrinsic) curvature is computed.  The normalized curvature is the curvature at a given parameter divided by the maximum.  Move the slider to see how curvature varies with the natural parameter.  The approximate osculating circle is shown in red, whose radius varies inversely with the curvature.  If the radius reaches a cutoff value (the control points approach co-linear), the circle is not drawn.

The code has been through minimal testing, which is a fancy way of saying that there may be a bug or two, but I hope some people (especially students of computational geometry) find it useful.  If you’re just itching to code it up yourself instead of waiting for the eBook, then everything you need is in reference [3] in this post.  Osculating circle information is readily available on Wikipedia and Mathworld.

View Explorer