I recently got interested in involute curves.
They have some remarkable properties, e.g. you can arrange them in a polar array and the distance between the curves stays constant:
The evolute, the locus of the centers of curvature of a curve, is the inverse of the involute, and so the evolute of the involute should give you back your original curve. I tried it once and in my attempt, it didn’t look too good. The only reason I could think of was that the involute is actually a nurbs approximation, and the exact intersection of two nearly parallel curvature lines requires a precision that you can’t get from the Rhino routines; there’s always some rounding involved.
Hmmm, I never tried it just using the centesr of the curvature circles. Seems like a better way to go. How well does it work on a more challenging curve like the filleted square in your example?
I still think it’s better than my approach which took the definition of evolute too literally. I don’t know how Rhino calculates the center of curvature, but it probably does it formulaically, and not as the intersection of two nearby normals.