Главная » Информационные системы » Компьютерная геометрия и графика » Написать программу построения гладкой кривой по шеститочкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры)

Написать программу построения гладкой кривой по шеститочкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры)

Написать программу построения гладкой замкнутой кривой по шести точкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры){
X [-300;300]
Y [-200;200]
}
Program splayn6;
uses crt,graph;

var
 xm,ym,xi,yi,a0,a1,a2,a3,b0,b1,b2,b3,v,GrD,GrM:integer;
 xv:array[1..6] of integer;
 yv:array[1..6] of integer;
 x:array[1..9] of integer;
 y:array[1..9] of integer;

graphDriver,GraphMode:integer;

Procedure Ris;

 var i,j:integer;

 begin

 for v:=1 to 6 do
 PutPixel(xm+x[v],ym-y[v],15);

 for j:=2 to 7 do

 begin
 a0:=round((x[j-1]+4*x[j]+x[j+1])/6);
 a1:=round((-x[j-1]+x[j+1])/2);
 a2:=round((x[j-1]-2*x[j]+x[j+1])/2);
 a3:=round((-x[j-1]+3*x[j]-3*x[j+1]+x[j+2])/6);
 b0:=round((y[j-1]+4*y[j]+y[j+1])/6);
 b1:=round((-y[j-1]+y[j+1])/2);
 b2:=round((y[j-1]-2*y[j]+y[j+1])/2);
 b3:=round((-y[j-1]+3*y[j]-3*y[j+1]+y[j+2])/6);

 for i:=1 to 120 do
 begin
 xi:=round(((a3*i/120+a2)*i/120+a1)*i/120+a0);
 yi:=round(((b3*i/120+b2)*i/120+b1)*i/120+b0);
 PutPixel (xm+xi,ym-yi,15);
 end;
 end;

 end;

Begin
 clrscr;
 writeln('Postroenie cplayna po 6 tockam');
 for v:=1 to 5 do
 Begin
 write('Vvedite koordinatu tocki X'); writeln(V); Readln(xv[v]);
 write('Vvedite koordinatu tocki Y'); writeln(V); Readln(yv[v]);

 end;
 xv[6]:=xv[1];
 yv[6]:=yv[1];

 x[1]:=xv[1];
 y[1]:=yv[1];
 x[2]:=xv[1];
 y[2]:=yv[1];
 x[3]:=xv[2];
 y[3]:=yv[2];
 x[4]:=xv[3];
 y[4]:=yv[3];
 x[5]:=xv[4];
 y[5]:=yv[4];
 x[6]:=xv[5];
 y[6]:=yv[5];
 x[7]:=xv[6];
 y[7]:=yv[6];
 x[8]:=xv[6];
 y[8]:=yv[6];
 x[9]:=xv[6];
 y[9]:=yv[6];

 graphDriver:=detect;
 initgraph(graphDriver,graphMode,'');

 xm:=GetMaxX div 2;
 ym:=GetMaxY div 2;

 MoveTo(0,ym);
 LineTo(GetMaxx,ym);
 MoveTo(xm,0);
 LineTo(xm,GetMaxY);

 Ris;

 readln;
end.


Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.

Поделиться
Дисциплины