Главная
»
Информационные системы
»
Компьютерная геометрия и графика
»
Написать программу построения гладкой кривой по шеститочкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры)
Написать программу построения гладкой кривой по шеститочкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры)
Написать программу построения гладкой замкнутой кривой по шести точкам с помощью В-сплайнов (координаты точек вводятся с клавиатуры){
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.
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.