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.
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.
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.
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)
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)
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 ,