# solving cubic functions for Bezier Curves

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 13/01/2004 at 03:48, xxxxxxxx wrote:

Hi Forum,

I have a Beziercurve-segment that I want to use to time an animation. This is just for getting the concept of TimeCurves.

The Beziercurve-segment is of the format:

p(t) = (1-t)^3*a+3*t(1-t)^2*b+2*t^2(1-t)*c+t^3*d

with a, b, c and d being the two knot points and the two tangents.

I evaluate this function in 2D space for the x, and y coordinates seperately, with t ranging from 0 to 1, to get the curve points.

But if I want to use it for timing a linear animation I will have to solve the equation . The problem is, how? Solving cubic equations isn't trivial, I found out by searching the net. But maybe there is a aproximating algorithm to do this. How does Cinema this internally?

How do I get the y coordinate of p by knowing x ?

Any ideas,

cheers mnu

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/01/2004 at 07:00, xxxxxxxx wrote:

anyone?

cheers mnu

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/01/2004 at 14:47, xxxxxxxx wrote:

What you are describing is called "arc length parametrization". Unfortunately it has been shown (http://dx.doi.org/10.1016/0167-8396(91)90040-I) that "it is impossible to parameterize any real plane curve, other than a straight line, by rational functions of its arc length". Nevertheless, as you say, there are approximation algorithms. I don't know what C4D itself uses. My suggestion would be to ask Google (there seems to be lots of pages on this).

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 21/01/2004 at 04:48, xxxxxxxx wrote:

Thank you very much Mikael,

this is what I found out too, by searching the web and crawling through complicated PDF documents. Now I will be able to investigate further. I'll post here if I find a solution.

cheers mnu