Some wise words from Toadstorm on the odforce forum.
Make your main curve, blast some points off that you want to move along this main curve..
The main curve goes into input "one" (2nd input) of both wrangles. The points wrap round too, which is cool.
Good for a stream of things moving along a curve constantly. Things to consider, different u-increment values per points.
If you want to do it manually, what you probably want to do is create a duplicate set of disconnected points via the Add SOP or whatever, and then use xyzdist() to determine their relative positions along the parametric U of the curve. This would be done in a point wrangle, with your disconnected points in input 0 and the original curve in input 1:
int posprim; vector primuv; float dist = xyzdist(1, @P, posprim, primuv); f@u = primuv.x;
Then after that's been established, you can use a second wrangle with a parameter to add to that starting @u value and lock each point to the position along the curve that matches the new parametric U value:
float add_u = ch("add_u"); float new_u = (f@u + add_u) % 1.0; // wrap points if they go past 1.0 vector new_P = primuv(1, "P", 0, new_u); @P = new_P;