uses graph,crt;
var i,j:integer;
x0,y0,kx,ky:double;
h,w1,w2:double;
n:integer;
function XX(x:double):integer;
begin
XX:=round((x-x0)*kx);
end;
function YY(y:double):integer;
begin
YY:=getmaxy-round((y-y0)*ky);
end;
begin
i:=0; j:=0;
initgraph(i,j,'');
x0:=-1.2;
y0:=-1.2;
kx:=getmaxx/2.4;
ky:=getmaxy/2.4;
n:=100;
h:=2*pi/n;
w1:=2*pi/2;
w2:=2*pi/6;
moveto(XX(0),YY(1));
for i:=1 to n do
lineto(XX(sin(w1*i*h)),YY(cos(w2*i*h)));
readkey;
closegraph;
end.
uses graph,crt;
var i,j:integer;
x0,y0,kx,ky:double;
h,w1,w2:double;
n:integer;
function XX(x:double):integer;
begin
XX:=round((x-x0)*kx);
end;
function YY(y:double):integer;
begin
YY:=getmaxy-round((y-y0)*ky);
end;
begin
i:=0; j:=0;
initgraph(i,j,'');
x0:=-1.2;
y0:=-1.2;
kx:=getmaxx/2.4;
ky:=getmaxy/2.4;
n:=100;
h:=2*pi/n;
w1:=2*pi/2;
w2:=2*pi/6;
putpixel(XX(0),YY(1),15);
for i:=1 to n do
putpixel(XX(sin(w1*i*h)),YY(cos(w2*i*h)),15);
readkey;
closegraph;
end.
uses graph,crt;
const e=1e-5;
var i,j:integer;
x0,y0,kx,ky:real;
dt,alfa,S1,S2,h1,h2:real;
n:integer;
dS:double;
begin
i:=0; j:=0;
initgraph(i,j,' ');
x0:=-1.2;
y0:=-1.2;
kx:=640/2.4;
ky:=480/2.4;
n:=1000;
dt:=2*pi/n;
alfa:=2*pi/2;
setcolor(15);
moveto(round(-x0*kx),480-round((1-y0)*ky));
for i:=1 to n do
lineto(round((sin(alfa*i*dt)-x0)*kx),480-round((cos(alfa*i*dt)-y0)*ky));
h1:=cos(alfa*dt); h2:=sin(alfa*dt);
S1:=0; S2:=1;
setcolor(14);
moveto(round(-x0*kx),480-round((1-y0)*ky));
dS:=0;
for i:=1 to n do
begin
S1:=S1*h1 + S2*h2;
S2:=S2*h1 - S1*h2;
lineto(round((S1-x0)*kx),480-round((S2-y0)*ky));
dS:=sqrt(sqr(S1-sin(alfa*i*dt)) + sqr(S2-cos(alfa*i*dt)));
if dS>e
then begin
S1:=sin(alfa*i*dt);
S2:=cos(alfa*i*dt);
moveto(round((S1-x0)*kx),480-round((S2-y0)*ky));
end;
end;
readkey;
closegraph;
end.
uses graph,crt;
const e=1e-5; {Погрешность}
var i,j:integer;
x0,y0,kx,ky:real; {Парамметры преобразования в экранные координаты}
dt,alfa,S1,S2,h1,h2:real; {Параметры фигуры и разностной схемы}
n:integer; {Разбиение временного интервала}
dS:double; {Отклонение конечно=разностного решения от точного}
begin
i:=0; j:=0;
initgraph(i,j,' ');
x0:=-1.2; {Размер выводимой координатной плоскости }
kx:=640/2.4; {по X: от -1,2 до 1,2}
y0:=-1.2; {Размер выводимой координатной плоскости }
ky:=480/2.4; {по X: от -1,2 до 1,2}
n:=1000;
dt:=2*pi/n;
alfa:=2*pi/2;
{Белым цветом выводится фигура по точным значениями}
setcolor(15);
{Начальная позиция (0;1)}
moveto(round(-x0*kx),480-round((1-y0)*ky));
for i:=1 to n do
lineto(round((sin(alfa*i*dt)-x0)*kx),480-round((cos(alfa*i*dt)-y0)*ky));
h1:=cos(alfa*dt); h2:=sin(alfa*dt);
S1:=0; S2:=1;
{Жёлтым цветом выводятся конечно-разностные значения}
setcolor(14);
moveto(round(-x0*kx),480-round((1-y0)*ky));
dS:=0;
for i:=1 to n do
begin
S1:=S1*h1 + S2*h2;
S2:=S2*h1 - S1*h2;
lineto(round((S1-x0)*kx),480-round((S2-y0)*ky));
{Расхождение между конечно-разностным и точным значением }
dS:=sqrt(sqr(S1-sin(alfa*i*dt)) + sqr(S2-cos(alfa*i*dt)));
if dS>e
then begin
{Присваиваются точные значения}
S1:=sin(alfa*i*dt);
S2:=cos(alfa*i*dt);
{Начинается рисование с нвой позиции}
moveto(round((S1-x0)*kx),480-round((S2-y0)*ky));
end;
end;
readkey;
closegraph;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.