uses crt,graph;
var xe,ye,ae,be:integer;
{----------------------khoi tao do hoa---------------------------- }
procedure Khoitao;
var gd,gm:integer;
Begin
gd:=detect;
initgraph(gd,gm,'d:\tp\bgi');
if graphresult <> grok then
Begin
writeln('Loi khoi tao do hoa, kiem tra lai duong dan');
readln;
halt(1);
End;
End;
{------------Dung Hinh----------------}
procedure DungHinh;
Begin
repeat until keypressed;
End;
{---------ket thuc do hoa----}
procedure Ketthuc;
Begin
closegraph;
End;
{-----------------Ve elip bang TT Midpoint-------------}
procedure put4px(x,y,xi,yi,m:integer);
Begin
putpixel(x+xi,y+yi,m);
putpixel(-x+xi,y+yi,m);
putpixel(x+xi,-y+yi,m);
putpixel(-x+xi,-y+yi,m);
End;
procedure Mid_elip(xt,yt,a,b,c:integer);
var x,y:longint;
P,Q:real;
Begin
putpixel(xt,yt,c);
outtextxy(xt+10,yt, 'I');
{Vung 1}
x:=0; y:=b;
P:=sqr(b)-sqr(a)*b+sqr(a)/4;
while sqr(a)*y >= sqr(b)*x do
begin
put4px(x,y,xt,yt,c);
if P<0 then P:=P+sqr(b)*(2*x+3)
else
begin
P:=P+sqr(b)*(2*x+3)+sqr(a)*(2-2*y);
y:=y-1;
end;
x:=x+1;
end;
{Vung 2}
x:=a; y:=0;
Q:=sqr(a)-sqr(b)*a+sqr(b)/4;
while sqr(a)*y < sqr(b)*x do
begin
put4px(x,y,xt,yt,c);
if Q<0 then Q:=Q+sqr(a)*(2*y+3)
else
begin
Q:=Q+sqr(a)*(2*y+3)+sqr(b)*(2-2*x);
x:=x-1;
end;
y:=y+1;
end;
End;
{------------------nhap thong so cho elip-----------}
procedure nhapelip(var xi,yi,ai,bi:integer);
Begin
writeln('Nhap thong so cho elip!');
write('Tam I(x,y)= ');readln(xi,yi);
write('Do dai hai ban kinh a,b: ');readln(ai,bi);
end;
{---------------CHUONG TRINH CHINH---------------------}
BEGIN
clrscr;
nhapelip(xe,ye,ae,be);
khoitao;
Mid_elip(xe,ye,ae,be,yellow);
dunghinh;
ketthuc;
END.