# Find most curved part of a curve

Dear Rhinos,

Hope all is fine by your side. I would like to ask if there is any way to find the most curved part of a curve by using vector (angle maybe?) or other like in the picture below, so I can split into two kind of curves ? Any suggestion ? Thank you very much

Hi,
I hope this comes handy
9_InflectionPoints.gh (15.9 KB)

Otherwise you could integrate a custom py script

``````def find_inflection_points(curve):
"""Find the inflection points of a curve."""
# Parameterize the curve
curve.Domain = Rhino.Geometry.Interval(0, 1)

# Initialize the list of inflection points and their curvatures
inflection_points = []
curvatures = []

# Sample the curve at a number of points
num_samples = 1000
for i in range(num_samples):
t = i / num_samples

# Calculate the curvature vector at the current point
curvature = curve.CurvatureAt(t)
if curvature is None:
continue

# If this is the first sample, save the sign of the curvature and continue
if i == 0:
previous_curvature_sign = curvature.Z > 0
continue

# Determine the sign of the current curvature
current_curvature_sign = curvature.Z > 0

# If the sign of the curvature has changed, add the previous point to the list of inflection points
if current_curvature_sign != previous_curvature_sign:
inflection_points.append(curve.PointAt((i - 1) / num_samples))
curvatures.append(curvature.Length)

# Update the sign of the curvature
previous_curvature_sign = current_curvature_sign

return inflection_points, curvatures

....
inflection_points, curvatures = find_inflection_points(curve)
if inflection_points.Count >0 :
# Find the inflection point with the most variance
max_variance_index = curvatures.index(max(curvatures))
max_variance_point = inflection_points[max_variance_index]

# Add a dot at the inflection point with the most variance
dot = Rhino.Geometry.TextDot("Max Variance Inflection Point", max_variance_point)