# Generating bezier curve through a set of points

Hi there,

I am now trying to write program to generate smooth curve by using cubic bezier (4 points, 2 endpoints and 2 control points) through a set of points like the 'insert curve' function in Microsoft Word.

I am wondering how do the curve compute the magnitude of the control points of each point. I noticed that the gradient of the tangent to the curve at that point is the same as the gradient of the straight line formed from prior and next point, so I can compute the gradient of the control point, but what about the magnitude? I also noticed that in the Curve function, at each point, the control point prior to the point and next to the point are of the same magnitude.

At the end points, how do i get the direction and magnitude of the control point?

Last edited:

What if I want to generate the control points automatically like the CURVE function in microsoft word?

jim mcnamara
Mentor
The curve function in Word accepts user input via a window + mouse, the points are not automatic - assuming I understand you correctly.

What i mean is, I have a set of points, but i need to connect them using bezier curve, and define new control points by something like in this example:
http://www.efg2.com/Lab/Graphics/Jean-YvesQueinecBezierCurves.htm

Although the website above did show how to get the magnitude of the control points, is there a simpler way?

Currently I'm thinking of to make use of the gradient of prior and next point so that the tangent of the curve at that point is the same as the gradient. The only problem is that I need to solve the magnitude of the control point vector.