1
$\begingroup$

Suppose I have a cubic bezier curve with the points $(x_0, y_0); (x_1, y_1); (x_2, y_2); (x_3, y_3)$. I want to show that the resulting function is monotonic for $x$ for the following restrictions:

  • $x_0 < x_1$

  • $x_0 < x_3$

  • $x_2 < x_3$

A bit of background:

A cubic bezier curve is defined as follows:

$P(t) = (1-t)^3P_0 + 3(1-t)^2tP_1 + 3(1-t)t^2P_2 + t^3P_3$ with $P_i = (x_i, y_i)$

In this question we only need to care about the $x$-value of those points.

What I got so far

I tried to simplify the equation a bit and got:

$x(t) = t^3(x_3-3x_2+3x_1-x_0) + 3t^2(x_2-2x_1+x_0) + 3t(x_1-x_0) + x_0$

First we need to get the derivative which is as simple as

$x'(t) = 3(t^2(x_3-3x_2+3x_1-x_0) + 2t(x_2-2x_1+x_0) + t(x_1-x_0))$

I chose this format because now it is easy to show if you move all points to the left by some number $r$ the following is correct:

$x'^*(t) = x'(t)$ with $x^*_i = x_i - r$

because

$x^*(t) = 3(t^2(x_3-3x_2+3x_1-x_0 - (r-3r+3r-r)) + 2t(x_2-2x_1+x_0 - (r-2r+r)) + t(x_1-x_0 - (r-r))) =\\ 3(t^2(x_3-3x_2+3x_1-x_0) + 2t(x_2-2x_1+x_0) + t(x_1-x_0)) = x(t)$

This means that we can actually drop $x_1$ (by setting $x_i = x_i - x_0$) and set the new restrictions as follows and get a new equation:

  • $0 < x_1$

  • $0 < x_3$

  • $x_2 < x_3$

$x'(t) = 3(1-t)^2x_1 + 6(1-t)t(x_1+x_2) + 3t^2(x_2+x_3)$

But now I am kindof stuck and I can't seem to find a solution to the problem. Can anyone help me with this?

$\endgroup$
0
$\begingroup$

Your postulated result is not true. Take $x_0 = 1$, $x_1 = 2$, $x_2=0$, $x_3 = 2$. Then the resulting function $t \mapsto x(t)$ is not monotone on $[0,1]$.

In fact $x(t) = 1+3t-9t^2+7t^3$.

So $x'(0) > 0$, $x'(1) > 0$, and $x'(\tfrac12) < 0$.

$\endgroup$
  • $\begingroup$ you are absolutely right, I had an error in my restrictions at the first place. Thanks for helping me find that. $\endgroup$ – WorldSEnder Aug 14 '14 at 4:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.