How can I generate a curve’s inflexion points (points where the curvature graph crosses the curve) ?

I made this definition which kind of works, but the quality of the result depends on how many points I probe for curvature ; it’s a bit lame.

Inflexion points.gh (10.3 KB)

How can I get the “true” points ?

Hi Osuire, this could help

Cant you intersect the curve with the curvature graph or control polygon (output from the control points component)? Can’t remember if the control polygon correlates with where the graph crosses over.

Edit: nope they don’t but this one from David seems to work: https://api.ning.com/files/EIXZaHYkjt9RQ0438pm2mU5AAmvZSYMhbq6WR1lWBiLl6JbxNI7is6g4ZPln07gSKpW0cFFOUnbbCqp1wjmv101Z2g*myh96/inflection.png

Hi Seghier,

I did something similar (see my second post), but I don’t like the fact that the quality of the result depends on how many points you use ; I have thouthands of curves to process, and this is going to slow down my definition to a crawl.

This is still based on an approximation, and relies on using a sh…load of points.

All these tools that output “something” based on a parameter fall short of being truly useful in my opinion.

They don’t relate to the actual topology of curves (or surfaces for that matter) which is really what we are interested in.

The parameter space only relates to the mathematical trickery the programmers use to generate NURBS geometry, and wrongly assume that it can be of interest to the user, as this inflection (inflexion is the French word :)) example shows.

You can get the points in native Rhino with the Curvature command if that helps…

I don’t test it with many curves, maybe that create many duplicates and slowdown the calculation

And curvature graph is not precise. If you change the density, the points changed

there is a method but it is long ; maybe with script or some plugins can work faster

if you use Curvature graph in rhino you can print everything to rhino pdf than import it to rhino

if rhino can export the graph to pdf file i think it is possible to directly create curves

Hi @osuire,

Attached is (basically) what the `Curvature`

command does.

test_curve_inflection_points.gh (4.4 KB)

– Dale

Rhino already have : ExtractCurvatureGraph

so no need to print or import

CurvatureGraph >> ExtractCurvatureGraph >> Intersection

Can we execute these commands by script and remove the new curves?

You can get the points in native Rhino with the Curvature command if that helps…

Yeah, in a laborious way.

In fact, these points are not generated ; one needs to clickedi-click on each point to actually create them.

It’s nice that we can snap to local max curvature though…

Hi Dale, thanks.

It does both more and less than what the “Curvature” command does :

-More because it outputs all the inflection points which requires user selection in Rhino (click, click, click,…)

-Less because it does not output the max curvature points.

I think it would be desirable to add the option in Rhino to generate the points automaticaly (perhaps with the inflection points in one layer, and the max radius points in another).

It would also be useful in GH to have similar features.

Here’s a case where the “Curvature” command fails to locate one of the inflection points.

Inflection point missing.3dm (270.8 KB)

Hi @osuire,

Thanks, I’ve logged the issue.

https://mcneel.myjetbrains.com/youtrack/issue/RH-52235

– Dale

Hi @osuire,

The problem (above) is that the curve is not planar - there’s enough undulation in the Z direction making the curvature not go to zero in the area you would think it does. The solution is to use `ProjectToCPlane`

before using `Curvature`

. That gets rid of the Z noise and makes `Curvature`

work as expected.

You can use `List`

command to see the Z noise in the control point locations.

Let me know if this helps.

– Dale