The standard cubic Bezier curve is given by

B(t) = (1-t)^{3}**p0** + 3(1-t)^{2}t**p1** + 3(1-t)t^{2}**p2** + t^{3}**p3**

where **p0**, **p1**, **p2**, **p3** are the control points and t is in the interval [0, 1].

Very elegant, but not very practical. Too many multiplications and additions to be used in a fast-paced environment such as game development. If it’s a 3D Bezier curve, 3 separate calculations are needed for the x-, y- and z-component for a given t value. What we need is a simplication of the equation.

Expanding the polynomial equation, we have

B(t)

= (1 – 3t + 3t^{2} – t^{3})**p0**

+ (3t -6t^{2} + 3t^{3})**p1**

+ (3t^{2} – 3t^{3})**p2**

+ t^{3}**p3**

Rearranging the coefficients of t^{n}, we have

B(t)

= t^{3}(-**p0** + 3**p1** – 3**p2** + **p3**)

+ t^{2}(3**p0** – 6**p1** + 3**p2**)

+ t(-3**p0** + 3**p1**)

+ **p0**

The coefficients can now be reduced to constants by precalculating them, and calculation of a Bezier point takes less computation.

In matrix form, the equation looks like