Help with bezier functions
I am trying to get a bezier curve drawn in a program.
These are the functions i have written for calculating the points, however it doesnt quite work and my brain has started to hurt so i need a bit of help.
Can anyone spot where ive gone wrong??
Code:
int fact(int i)
{
if (i<=1) return 1;
else return i*fact(i-1);
}
int nCi(int degrees, int i)
{
return fact(degrees)/(fact(degrees-i)*fact(i));
}
double bu(int i,double u)
{
return nCi(degrees,i)*pow(1-u,degrees-1)*pow(u,i);
}
void C(double u, double Pt[3])
{
for (int k=0; k<3; k++)
{
Pt[k]=0.0;
for (int i=0; i<degrees+1; i++)
{
Pt[k]+=bu(i,u)*controlpoint[i][k];
}
}
}
void calc_bezier_pts()
{
double u;
for (int i=0;i<number;i++)
{
u=(i)/(number-1);
C(u, bezier_curve[i]);
}
}
int draw_bez()
{
calc_bezier_pts;
for (int i=0;i<number;i++)
{
draw_line(x_bez[i],y_bez[i],x_bez[i+1],y_bez[i+1],9);
}
return 1;
}
More code can be posted if you need to see the bigger picture.