Curve Corner Points

unhandled

(David S. Mavrov) #1

Any clever trick to select just the corner points of a curve like this? I have tried Convex Hull Points, but I can’t find a way to filter out just the corner points. I need to split the curve in 4 separate curves.

Curve Corner Points.gh (3.3 KB)


(David S. Mavrov) #2

The only way I was kind of able to do it is this. I wonder if there is anything better.

Curve Corner Points v1.gh (8.0 KB)


(Radovan Grmusa) #3

Or you can measure angle at end/start of neighbor segments (measure tangents at that points for each segment) and based on limit angle filter/dispatch points.

Curve Corner Points rg01.gh (11.2 KB)


(David S. Mavrov) #4

Cool man, but it is difficult to calculate the angle automatically, no?


(Radovan Grmusa) #5

You set up some limit angle for which you will consider point at that discontinuity to be corner point.
Do not know other “automatic” way.


(qythium) #6

Kangaroo has a component SplitAtCorners which does exactly that:


(David S. Mavrov) #7

Cool! But I kind of want to get the logic behind it.


(qythium) #8

Internally it’s most likely doing the same thing as @RadovanG’s definition, measuring the 3d vector angle between both segments at each vertex and comparing it to a fixed maximum.

Another alternative way of getting the angles:
image


(Michael Pryor) #9

Logic is always about measuring kink angle and determining if it is “too kinked”


(David S. Mavrov) #10

Well, in this case my approach is kind of simpler, because I round the curve at the kinks with a very small value for the fillet and then just select the corresponding points with the cull pattern.