Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//Ї®бв஥ЁҐ ЄаЁў®© ЃҐ§мҐ
#include <conio.h>
#include <stdio.h>
#include <process.h>
#include <graphics.h>
int Px[4],Py[4];
double B_spl_2(double t0,double t1,double t2,double t)
{
double f=0;
if(t0<t && t<t1)
if(t0==t1) f=0;
else
f=(t-t0)/(t1-t0);
if(t1<t && t<t2)
if(t1==t2) f=0;
else
f=(t2-t)/(t2-t1);
return f;
}
double B_spl_3(double t0,double t1,double t2,double t3,double t)
{
double f1=0, f2=0;
if(t0==t2) f1=0;
else
f1=(t-t0)/(t2-t0)*B_spl_2(t0,t1,t2,t);
if(t1==t3) f2=0;
else
f2=(t3-t)/(t3-t1)*B_spl_2(t1,t2,t3,t);
return f1+f2;
}
double Bezie(int i, double t)
{
double b;
switch(i)
{
case 0 : b=B_spl_3(0,0,0,1,t); break;
case 1 : b=B_spl_3(0,0,1,2,t); break;
case 2 : b=B_spl_3(0,1,2,2,t); break;
case 3 : b=B_spl_3(1,2,2,2,t); break;
default : printf("\nError in function Bezie"); exit(1);
}
return b;
}
double splineX(double t)
{
double S=0;
for(int i=0; i<4; i++)
S += Px[i]*Bezie(i,t);
return S;
}
double splineY(double t)
{
double S=0;
for(int i=0; i<4; i++)
S += Py[i]*Bezie(i,t);
return S;
}
void main()
{
Px[0]=300; Px[1]=100; Px[2]=400; Px[3]=500;
Py[0]=50; Py[1]=400; Py[2]=100; Py[3]=400;
int driver=DETECT;
int mode;
int res;
initgraph(&driver,&mode,"c:\\mathemat\\borlandc\\bgi");
if((res=graphresult())!=grOk)
{
printf("\nGraphics error: %s",grapherrormsg(res));
exit(1);
}
int i;
for(i=0; i<3; i++)
line(Px[i],Py[i],Px[i+1],Py[i+1]);
int N=100;
double t,dt=2.0/N;
for(i=0; i<N; i++)
{
t=dt*i; putpixel((int)splineX(t),(int)splineY(t),14);
}
getch();
closegraph();
}
Соседние файлы в папке BEZIE