Subscribe via RSS Subscribe. It's free.  [What is RSS?]

Rapidly calculating Bezier points

The standard cubic Bezier curve is given by
B(t) = (1-t)3p0 + 3(1-t)2tp1 + 3(1-t)t2p2 + t3p3
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 + 3t2 - t3)p0
+ (3t -6t2 + 3t3)p1
+ (3t2 - 3t3)p2
+ t3p3

Rearranging the coefficients of tn, we have
B(t)
= t3(-p0 + 3p1 - 3p2 + p3)
+ t2(3p0 - 6p1 + 3p2)
+ t(-3p0 + 3p1)
+ 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
Coefficient matrix form of Bezier curve

Enjoyed reading this? Share it!
  • StumbleUpon
  • Reddit
  • del.icio.us
  • Slashdot
  • description
  • Technorati
  • Digg
See previously

No comments yet.

Write a comment: