Standardní jednotka Graph postrádá proceduru pro kreslení nakloněných elips. Sice jsem to v praxi nikdy nepotřeboval, ale stejně mě to štvalo. No, a dneska jsem náhodně našel prográmek v Delphi, který to umí. Takže po očesání, přepsání do pascalu a mírné úpravě to vypadá takhle:
uses Graph;
procedure RotatedEllipse (x,y,a,b:integer;uhel:real);
var sn,cs,theta,xp,yp:real;
xr,yr,li,car:integer;
begin
if a>b then cas:=a div 4 else cas:=b div 4;
uhel:=uhel*pi/180;
sn:=sin(uhel);
cs:=cos(uhel);
for li := 0 to car
do begin
theta := (li/car) * 2*PI;
xp := a * cos(theta);
yp := b * sin(theta);
xr := Round (x - xp*cs + yp*sn);
yr := Round (y + xp*sn + yp*cs);
if li = 0 then MoveTo(xr, yr) else LineTo(xr, yr)
end;
end;
var gd,gm,i:integer;
begin
gd:=vga;
gm:=vgahi;
InitGraph(gd,gm,'');
for i:=0 to 5 do
begin
SetColor(i+1);
RotatedEllipse(220,200,150,55,i*10);
end;
readln;
CloseGraph;
end.
Elipsa se kreslí pomocí série tečen. Je to krásně vidět, když proměnnou car natvrdo nastavíte na nějaké malé číslo - třeba 8.