Inflection points of 3d curves

How would I go about trying to find them in Rhinoscript?

A quick answer is to tell you that RhinoScript does not have a function that will calculate these.

My question to you is why do you need these points?

A bit of a work around but in Python you could use rs.CurveCurvature to evaluate the curve radius at points along the domain of the curve. At the inflection point the radius would go towards infinity. I’m sure you can figure out the rest :wink:

Edit: Alternatively, where the curvature changes sign…

Well I’m not sure I really ‘need’ them, it may be a bit limiting to try to force using them…I guess I posted a little while ago, I’m trying to fit arcs to freeform curves, but differently from the Convert command, I want to fit the curve using a given set of arcs (or a certain number of different arcs, something along those lines, obviously it’s going to be a pretty approximate approximation requiring a lot brute-force trial and error.)

Why do you need to do this differently? What do you need that our Convert command isn’t doing?

For manufacturing purposes I need to minimize the number of different arc sections and reuse them on different items.

Are you finding that Convert is producing more arc segments than it needs? Do you have examples of this?

No Convert works fine, the issue is that if it gives me 30 different arc segments those 30 segments all have different radii. I want the best approximation I can get using say…4 different radii. If I have to let a machine run for days trying out millions of combinations, fine.

Hi Jim, you might give this plugin for Rhino 4 a try, I´m still using it under Rhino 5 x64, it is scriptable using Rhino.Command and you can get point objects using Rhino.LastCreatedObjects then extract the coordinates using Rhino.PointCoordinates.

@DavidRutten did you forget about it ? I use it a lot, thanks !


Hi David, Galapagos might well be the ticket. Of course I’ve somehow never actually used Grasshopper before.

To really thoroughly test all options I figure I would want to(instead of going arc-by-arc) randomly or systematically assemble every possible combination of a set of arcs(about 20-30 it looks like for what I’m doing now,) attempt to fit them to the curve, and offset where it starts trying to match the curve, AND try to find the set of arcs that work best (I’m not yet married to any in particular I just want to minimize them.) Galapagos might be overkill for that??

Hi @JimCarruthers

Here is the script to mark curvature extremes:
wd_MarkCurvatureExtremes_01.rvb (4.4 KB)

It does not explicitly mark inflection points but rather marks positions on a curve where the curvature has a local extreme.
For a 2D curve it loos like this(curvature graph for reference). Blue points for local-extreme low curvature and Red for local-extreme high curvature.

HTH, use at your own liking



Hi Willen,

This script should do what I want, but is it possible that it doesn’t work with the latest version of rhino?
I created a button like this

And it gives this error

Instead of using RunScript, use LoadScript.

1 Like

Perfect! thanks