If I get you right you want to move your object along a Bezier curve with constant linear velocity?

I’ve done this, it’s fairly straightforward, and doesn’t take too much maths. It goes something like this:

Your Bezier curve is represented by a parametric equation (I’ll call the parameter ‘t’).

The problem is, as you’ve found out, that the integrated path length (call is S(t)) along the curve as a function of t is not a straight-line, so your object appears to change speed. To solve this you need to invent a new parametric variable, call it ‘q’, and map this q on to t in such a way that the integrated path length S(q) is a straight-line.

To do this you first need to calculate S(t). Just calculate points along your Bezier curve at small intervals in the parametric variable (t=0.0, 0.01, 0.02, …), and work out the linear (straight-line) distance between adjacent points. Keeping a running total of these will give you a list of t, and S(t). (Incidentally this will also give you the total length of the Bezier curve, which can be useful if you have a trajectory represented piece-wise by Bezier curves).

To achieve constant linear velocity motion along the curve, you use this pre-calculated relation between t and S(t) to perform your mapping of q onto t.

If you are moving at constant velocity, V, and you’ve been moving for a time, q, then you’ve moved a distance q * V. Simply search along your pre-calculated list of (t, S(t)) to work out the value of t you need to use to plug in to your Bezier equations. You can interpolate between your adjacent samples of (t, S(t)) to get better accuracy.

Typically when I’ve done this I’ve used about 100 samples along the curve. It’s pretty quick, though my applications have never been real-time so I wouldn’t like to claim that.

There may be an analytical way to calculate S(t) directly from the parametric representation of the Bezier curve. I spent a few days trying to work it out when I was a kid (computers were slow back then), but never found a solution due to my dodgy grasp on maths. The numerical scheme I’ve outlined above works, and it’s quite simple, so I use that…

I think that in principle this technique should work for any parametric curve, not just Bezier curves.

Sorry this has been so long-winded, I hope I’ve explained myself clearly and correctly!