BezierSpreads: what length? Can the spread of points be made to be evenly spaced?

who knows how to get points spaced along a bezier at equal intervals ? factor seems to be related to control points, not the total length of the bezier.
Some ideas

  • from @Grandchild that is not trivial. it depends on the current shape your bezier is in. i had a rough solution once that involved the derivative or the distance of the points in the original spline to calculate an almost even curve. but i have no implementation.
  • can resample be used somehow ?
  • let the fun begin

BezierSpacing_v01.v4p (17.0 kB)

this version adds up the straight-line distance between each point, using normalise and +(spectral). whether or not it will be useful in making a spread evenly spaced along a bezier I am not sure.
As long as the spread count is fairly high it should give a value very close to the actual length of the curve.

BezierSpacing_v02.v4p (24.4 kB)

Im in ;D
Actually I found a solution which is fine for closed bezier but behaves odd at open. Couldnt get why. May be you.

BezierSpacing_v03.v4p (35.7 kB)

Update… no text …

BezierSpacing_v04.v4p (36.4 kB)


i once needed that also, however i worked with the more flexible b-spline node. in principle it should be possible to also model a bezier curve with the b-spline node, however that could get complicated patchwise…

so for now please welcome B-Spline (3d ArcLength)

internally, again as in your solution, many helper points are used to sample the curve first;
normalize again is used to get the length of the vectors between the helper points;
with Integral we get the length of the curve from its start to the individual helper points;
now Input is also interpreted as a such a length: get me the point on the curve “Input” units from the starting point of the curve;
so the “length spread” above is used to map the “Input” onto a value between 0…1 (start…end = Normal parameterization).
The resulting value now could be used as the input for a regular B-Spline (3d) with Input Room Normal 0…1. (which is done by the module)

EDIT: sorry. file was corrupt. now it should work

Arc Length.rar (8.2 kB)

… no text …

Thanks for the input Frank and gregsn,
I have learnt a lot from your patches and combined aspects of both to make the attached module: ArcLength(3d generic)
key nodes used are Integrateand Interval
It would probably be good to implement a ‘bins’ input pin as well.
ArcLength(3d generic)should be useful for any spread whether it is bezier based, b-spine based or any list of 3d coordinates meant to represent a line in 1,2, or 3D space (just set dimensions not used to 0 in the 3D vector inputed on the helper points pin)

ArcLength(3d generic) (9.4 kB)

small bugfixes for ArcLength(3d).
fine module. good work john

ArcLength (3d generic).zip small bug fixed (9.3 kB)

ai frank,

instead of uploading your changes here you please edit johns original contribution: ArcLength(3d generic) and add another revision to it (including a sentence describing the change).

hello , I wonder if there is a spreadable binsize version of this great module ,
would be very nice ,
i find some dificultie as Normalize , B-Spline and connectall family have no binsize spreadable pin which are the ones i played with trying this matter ,


Bins size would be great !
further comments should be directed to this page) :arclength(3d-generic)

hey john thx, yes would be fantastic , sorry i did not know which place would be better for commenting it .