uses graph,crt;
{функции для определения кординат точек эллипса}
function rot_x(x,y:integer;t:real):integer;
begin
rot_x:=round(x*cos(t)-y*sin(t));
end;
function rot_y(x,y:integer;t:real):integer;
begin
rot_y:=round(x*sin(t)+y*cos(t));
end;
{рисование наклонного эллипса}
procedure Ellips(x,y,a,b:integer;u:real; c:integer);
var sx,sy,rx,ry,i:integer;
du:real;
begin
sx:=x+rot_x(a,0,u);
sy:=y+rot_y(a,0,u);
moveto(sx,sy);
du:=0;
for i:=1 to 38 do
begin
du:=du+pi/20;
rx:=round(a*cos(du));
ry:=round(b*sin(du));
lineto(x+rot_x(rx,ry,u),y+rot_y(rx,ry,u));
end;
lineto(sx,sy);
end;
{Основная программа}
var a,b,x0,y0,u,xc,yc:integer;
u1,u2:real;
c:char;
begin
clrscr;
u:=-10; {Угол наклона в градусах}
a:=0;
initgraph(a,b,'');
x0:=getmaxX-300; {Определяем позицию по оси X}
y0:=getmaxy-50; {Определяем позицию по оси Y}
a:=50;
b:=25;
u1:=u*pi/180;
xc:=x0+round(a*cos(u1));
yc:=y0-round(a*sin(u1));
u2:=pi-u1;
ellips(xc,yc,a,b,u2,12); {Рисуем эллипс}
readln;
CloseGraph;
end.
{функции для определения кординат точек эллипса}
function rot_x(x,y:integer;t:real):integer;
begin
rot_x:=round(x*cos(t)-y*sin(t));
end;
function rot_y(x,y:integer;t:real):integer;
begin
rot_y:=round(x*sin(t)+y*cos(t));
end;
{рисование наклонного эллипса}
procedure Ellips(x,y,a,b:integer;u:real; c:integer);
var sx,sy,rx,ry,i:integer;
du:real;
begin
sx:=x+rot_x(a,0,u);
sy:=y+rot_y(a,0,u);
moveto(sx,sy);
du:=0;
for i:=1 to 38 do
begin
du:=du+pi/20;
rx:=round(a*cos(du));
ry:=round(b*sin(du));
lineto(x+rot_x(rx,ry,u),y+rot_y(rx,ry,u));
end;
lineto(sx,sy);
end;
{Основная программа}
var a,b,x0,y0,u,xc,yc:integer;
u1,u2:real;
c:char;
begin
clrscr;
u:=-10; {Угол наклона в градусах}
a:=0;
initgraph(a,b,'');
x0:=getmaxX-300; {Определяем позицию по оси X}
y0:=getmaxy-50; {Определяем позицию по оси Y}
a:=50;
b:=25;
u1:=u*pi/180;
xc:=x0+round(a*cos(u1));
yc:=y0-round(a*sin(u1));
u2:=pi-u1;
ellips(xc,yc,a,b,u2,12); {Рисуем эллипс}
readln;
CloseGraph;
end.
Комментариев нет:
Отправить комментарий