Benzier curves rendering WAY too fast

This is the code… I try slowing everything down by reducing “t” to very small about, increasing # of points to ten of thousands, and adding a sleep function (jumpy, luck). but it’s too fast… any ideas.

#define MAX_PARTS 10000

_my_particle_type myparticles[MAX_PARTS];

void init_part(int i)
{
/* cN are control points c0 = start, c2 = end , etc… */
myparticles[i].c0.x = myparticles[i].c0.y = myparticles[i].c0.z = 0.0;

/* Random x,z with a radius of 5.00 */
myparticles[i].c2.x = (float)(random() % 20) / 10.0 + 0.1;
myparticles[i].c2.z = (float)(random() % 20) / 10.0 + 0.1;

if((random() % 2)) myparticles[i].c2.x = (-1.0 * myparticles[i].c2.x);
if((random() % 2)) myparticles[i].c2.z = (-1.0 * myparticles[i].c2.z);

/* and on the same y-plane */
myparticles[i].c2.y = 0.0;

/* Let the 2nd control point be mid-point of c0, c2 */
myparticles[i].c1.x = ((myparticles[i].c2.x - myparticles[i].c0.x) / 2.0) + myparticles[i].c0.x;
myparticles[i].c1.z = ((myparticles[i].c2.z - myparticles[i].c0.z) / 2.0) + myparticles[i].c0.z;

/* but set the height at a minimum 0.2 */
myparticles[i].c1.y = ((float)(random() % 40) / 10.0) + 0.5; /* Don't want the Y to be too low, so +0.2 sets a minimum height */

/* Random speed along curve.  Minimum 0.01, max 0.02 */
myparticles[i].t = 0.00000000001; /*(((float)(random() % 10)) / 1000000.0) + 0.000001;*/

/* Same with colors, but we want Red to be the dominate color */

}

void init_all_parts(){
int i;
for(i = 0; i < MAX_PARTS ; i++) init_part(i);
}

void init_mman (ModeInfo *mi){

init_all_parts();

}

void set_p(int i){
GLfloat t2 = myparticles[i].t * myparticles[i].t;
GLfloat _2tmomt = 2 * (myparticles[i].t) * (1.0 - myparticles[i].t);

/* 	The formula for a Benzier curve with 3 control points is:
 *	p.x = (c0.x)(1.0 - t)^2 + 2(c1.x)(t)(1.0 - t) + (c2.x)(t)^2; 
 *	p.y = (c0.y)(1.0 - t)^2 + 2(c1.y)(t)(1.0 - t) + (c2.y)(t)^2; 
 *	p.z = (c0.z)(1.0 - t)^2 + 2(c1.z)(t)(1.0 - t) + (c2.z)(t)^2; 
 *	
 *	but since c0 is at the 0,0,0 origin, we just eliminate it from the 
 *	equations below since it will always equal 0.  All recompute ****
 *	to speed things up a bit so they are not repeat 3 times.
 */

myparticles[i].p.x = myparticles[i].c1.x * _2tmomt + myparticles[i].c2.x * t2;  
myparticles[i].p.y = myparticles[i].c1.y * _2tmomt + myparticles[i].c2.y * t2;  
myparticles[i].p.z = myparticles[i].c1.z * _2tmomt + myparticles[i].c2.z * t2;  

}

void draw_parts(){
int i;
for(i=0;i<MAX_PARTS;i++){

	if(myparticles[i].t &gt; 1.0) myparticles[i].t = 1.0;

	if((myparticles[i].t == 1.0)) init_part(i);

	set_p(i);

	glBegin(GL_POINTS);
		glVertex3f(myparticles[i].p.x, myparticles[i].p.y, myparticles[i].p.z);
	glEnd();
	myparticles[i].t += myparticles[i].t;
}

}

void main_drap_loop (ModeInfo *mi){

draw_parts();

}

Why is rendering quickly a problem?

Originally posted by Don’t Disturb:
Why is rendering quickly a problem?

Because I can’t see the motion of the particle as it moves along the curve.

Ok, I figured it out…
I changed the following line…

init (){
myparticles[i].step += myparticles[i].t;
}

draw(){

myparticles[i].t += myparticles[i].step;
}

I was adding t to itself, which was accelerating the particles to blinding speeds…

How about using a timer…

(not! that moronic Windows Timer™ )