# Moving object along a bezier curve

Hello,

I constructed my Object/Model in a DisplayList. Now i want to move this object along a bezier curve.

Here is my code for the curve:

``````void drawCurve(void) {
float pointsforcurve;
int i = 0;

glColor3f(1.0, 0.0, 0.0);
glLineWidth(2.0);

/* Converting 2i point array to 3f point array */
for (i = 0; i < 4; i++) {
pointsforcurve[i] = (float)points[i];
pointsforcurve[i] = (float)points[i];
pointsforcurve[i] = 0.0f;
}

glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &pointsforcurve);

glEnable(GL_MAP1_VERTEX_3);

glBegin(GL_LINE_STRIP);
for(i = 0; i < 100; i++) {
glEvalCoord1f((float)i/100.0f);
}
glEnd();
}
``````

This code works fine for me, but I do not know, how to move my object alonge the curve, because the gl EvalCoord function do not return the point of the curve.

In order to move it along, i need the coords of the curvepoints, to make something like this:

``````glTranslatef(xofcurvepoint, yofcurvepoint, zofcurvepoint);
glCallList(listForkLifter);
``````

Can someone help me? Or is there a better way to do it?

thx Alexander

You cant get that information from opengl. You need to compute the value of the bezier parametric equation yourself.

I would suggest keeping track of the bezier curve yourself. If you have 2 endpoints(A and D), then you need 2 additional control points(B&C) to form tangents to the curve at these 2 endpoints. Thus you need 4 points to create a bezier curve between 2 points. With these four points, you can compute a position at any point along the curve with the following (maybe you know this already):
p(t) =
(1-t)^3 * A +
(3t*(1-t)^2)* B +
(3tt*(1-t))* C +
ttt*D

Picking the tangent is up to you. 