Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / BEZIE / B_SPL3

.CPP
Скачиваний:
23
Добавлен:
16.04.2013
Размер:
1.82 Кб
Скачать
//Ї®бв஥­ЁҐ ЄаЁў®© ЃҐ§мҐ

#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
  • #
    16.04.20139.1 Кб23BEZIE5.CPP
  • #
    16.04.201348.45 Кб22BEZIE5.EXE
  • #
    16.04.20131.28 Кб23BEZIE_2D.CPP
  • #
    16.04.201340.22 Кб22BEZIE_2D.EXE
  • #
    16.04.201314.67 Кб22BOLD.CHR
  • #
    16.04.20131.82 Кб23B_SPL3.CPP
  • #
    16.04.201341.24 Кб23B_SPL3.EXE
  • #
    16.04.20135.55 Кб22EGAVGA.BGI
  • #
    16.04.20138.44 Кб22EURO.CHR
  • #
    16.04.201318.06 Кб22GOTH.CHR
  • #
    16.04.2013158 б22README