/* Two-time parabola drawing curve function */
void Paowuxian (int *x,int *y,int n,unsigned int k)
{
unsigned int i,j;
float T1,t2,t3,t,a,b,c,d,tx,ty;
*x=* (x+1); * (y) =* (y+1);
* (x+n+1) =* (x+n); * (y+n+1) =* (y+n);
T=0.5/k;
SetColor (10);
MoveTo (* (x+1), * (y+1));
for (i=0;i<n-1;i++)
{
for (j=1;j<k;j++)
{
t1=j*t;
T2=T1*T1;
T3=t2*t1;
A=4*t2-t1-4*t3;
B=1-10*t2+12*t3;
C=t1+8*t2-12*t3;
D=4*t3-2*t2;
tx=a* (* (x+i)) +b* (* (x+i+1)) +c* (* (x+i+2)) +d* (* (x+i+3));
ty=a* (* (y+i)) +b* (* (y+i+1)) +c* (* (y+i+2)) +d* (* (y+i+3));
LineTo (tx,ty);
}
}
LineTo (* (x+i+2), * (y+i+2));
}
/* Two B spline method to draw curve function */
void Byangtiao (int *x,int *y,int n,unsigned int k)
{
unsigned int i,j;
float T,t1,t2,a,b,c,tx,ty;
*x=* (x+1); *y=* (y+1);
* (x+n+1) =* (x+n); * (y+n+1) =* (y+n);
T=1.0/k;
SetColor (13);
MoveTo ((*x+ (x+1))/2.0, (*y+ (* (y+1)))/2.0);
for (i=0;i<n;i++)
{
for (j=1;j<k;j++)
{
t1=j*t;
T2=T1*T1;
A= (T2-2*T1+1)/2.0;
b=t1-t2+1/2.0;
c=t2/2.0;
tx=a* (* (x+i)) +b* (* (x+i+1)) +c* (* (x+i+2));
ty=a* (* (y+i)) +b* (* (y+i+1)) +c* (* (y+i+2));
LineTo (tx,ty);
}
}
}
/* This forgets what algorithm it is. :) It seems to be called three times parametric spline */
void parspl (int p[][2],int n,int k)
{
int i,j;
float T1,t2,t3,t,a,b,c,d,x,y;
P[0][0]=p[1][0];p [0][1]=p[1][1];
P[n+1][0]=p[n][0];p [n+1][1]=p[n][1];
T=0.5/k;
MoveTo (p[1][0],p[1][1]+d);
for (i=0;i<n-1;i++)
{
for (j=1;j<k;j++)
{
t1=j*t;
T2=T1*T1;
T3=t2*t1;
A=4*t2-t1-4*t3;
B=1-10*t2+12*t3;
C=t1+8*t2-12*t3;
D=4*t3-2*t2;
X=a*p[i][0]+b*p[i+1][0]+c*p[i+2][0]+d*p[i+3][0];
Y=a*p[i][1]+b*p[i+1][1]+c*p[i+2][1]+d*p[i+3][1];
LineTo (x,y,15);
}
LineTo (p[i+2][0],p[i+2][1],15);
}