I am an amateur developing the math to describe the motion of a robot of sorts.

At this stage I'd like to use bezier curves as user input to describe the motion path/s that it will make over time... (imagine it sitting flat on the cartesian 'floor')

I'd first convert the free parameter 't' (time) into another parameter say 's' (speed) via a function of t so the user can have control over the velocity/accel of the robot throughout its traversing of the Bezier curve.. ('t' would tick away as usual and the 's' would actually be the free parameter).

This will work nicely with linear Bezier paths as if you use equal increments of 't' then the parametric points on the linear path are also equally distributed - this means my new 's' should translate perfectly onto the path also.

Problem comes when I want to use Bezier curves of higher than degree two...

The points as you traverse along the path become distributed unequally, with more 'resolution' or bunching around the apex (in the case of a parabola/degree two quadratic Bezier), which will translate into slower motion around this area.

I'd like to know how to compensate for this exactly, some sort of inverse function that needs to be applied to 't' ?? ... similar to what I wanted to do with it to convert it into 's', but before doing so in that there would now actually be a function upon a function ...

I imagine maybe if I gave it a crack something to do with the Arc Length procedure might help, but am guessing/hoping that this problem has already been solved or another way of thinking about it might help ...

any ideas ?

Hope I am making sense ! (?)