Summary:An implementation of a binary searcher for 3D curve inflection points.

Inflection points are those points on a curve where the second derivative equals zero (where the curvature changes sign). Visually, it is where the CurvatureGraph intersects the actual curve. However, since the CurvatureGraph is an interpolated curve, the intersections are not accurate enough (not to mention you can't actually get at the graph), hence this separate plug-in.

This plug-in implements a simple binary search algorithm to find the inflection points on 3D curves.

Download the plug-in (Rhino 4).

Download the source code (VB.NET 2005).

The algorithm works as follows. Every curve is converted to a NURBS curve. Then, every NURBS curve is broken up into individual spans. Each span is sampled at 10 regular intervals, and when two adjacent samples yield different signs for the second derivative, the little bit of curve between those two samples is subdivided again. This goes on until an inflection point value very close to zero is found (1E-20 accuracy), or until the recursion depth exceeds 100 levels.

Linear spans are ignored and the curvature computation always happens towards the interior of the span to avoid faulty values at the extremes.

developer/sdksamples/curveinflectionpoints.txt ยท Last modified: 2020/08/14 (external edit)