Иллюстрированный самоучитель по Turbo Pascal

Дуги, окружности, эллипсы

Процедура Ellipse

Вычерчивает эллипсную дугу. Заголовок:

Procedure Ellipse(X,Y: Integer; BegA,EndA,RX,RY: Word);

Здесь:

  • X, Y – координаты центра;
  • BegA, EndA – соответственно начальный и конечный углы дуги;
  • RX, RY – горизонтальный и вертикальный радиусы эллипса в пикселях.

При вычерчивании дуги эллипса используются те же соглашения относительно линий, что и в процедуре Circle, и те же соглашения относительно углов, что и в процедуре Arc. Если радиусы согласовать с учетом масштабного коэффициента GetAspectRatio, будет вычерчена правильная окружность.

В следующей программе вычерчиваются три эллипсных дуги (рис. 14.7) при разных отношениях радиусов. Замечу, что чем выше разрешение графического экрана, тем ближе к единице отношение сторон и тем меньше первый график отличается от третьего.

Иллюстрированный самоучитель по Turbo Pascal › Использование библиотеки Graph › Дуги, окружности, эллипсы
Рис. 14.7. Эллипсные дуги:

Uses Graph, CRT;
var
d,r,e: Integer;
xa,ya: Word;
begin
{Инициируем графику}
d: = Detect; InitGraph(d, r, '');
e: = GraphResult; if e <> grOK then
WriteLn(GraphErrorMsg(e))
else
begin
{Первый график}
OutTextXY(5 0.4 0,'RX = RY'); {Надпись}
Line (0.100.160.100); {Ось X}
Line (80.55.80.145); {Ось Y}
Ellipse (80.100.180.90.40.40);
{Второй график}
OutTextXY(260.40,'RX = 5*RY');
Line (190.100.410.100);
Line (300.55.300.145);
Ellipse (300.100.0.359.100.20);
{Третий график}
OutTextXY(465.40,'Aspect Ratio');
Line (440.100.600.100);
Line (520.55.520.145);
GetAspectRatio(xa, ya);
Ellipse (520.100.0.270.40,round(40*(xa/ya)));
if ReadKey=#0 then
d: = ord(ReadKey);
CloseGraph
end
end.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.