Дуги, окружности, эллипсы
Вот как выглядят две дуги: одна с углами 0 и 90, вторая 270 и 540 градусов (рис. 14.6):
Рис. 14.6. Иллюстрация процедуры Arc
Следующая программа создает это изображение:
Uses Graph, CRT; var d, r, е: Integer; Xasp,Yasp: Word; begin {Инициируем графику} d: = Detect; InitGraphtd, r, ''); e: = GraphResult; if e <> grOK then WriteLn(GraphErrorMsg(e)) else begin GetAspectRatio(Xasp,Yasp); {R = 1/5 от вертикального размера экрана} r: = round(Yasp*GetMaxY/5/XAsp); d: = GetMaxX div 2; {Смещение второго графика} e: = GetMaxY div 2; {Положение горизонтальной оси} {Строим левый график} Line (0,e,5*r div 2,e); {Горизонтальная ось} Line (5*r div 4,e div 2.5*r div 4.3*e div 2); Arc (5*r div 4,e,0.90,R); {Дуга} OutTextXY(0,e+e div 8,'0-90'); {Надпись} {Правый график} Line (d,e,d+5*r div 2,e); Line (d+5*r div 4,e div 2, d+5*r div 4.3*e div 2); Arc (d+5*r div 4,e,270.540,R); OutTextXY(d,e+e div 8,'270-540'); {Ждем нажатия на любую клавишу} if ReadKey=#0 then d: = ord(ReadKey); CloseGraph end end.
Процедура GetArcCoords
Возвращает координаты трех точек: центра, начала и конца дуги. Заголовок:
Procedure GetArcCoords(var Coords: ArcCoordsType);
Здесь Coords – переменная типа ArcCoordsType, в которой процедура возвращает координаты центра, начала и конца дуги.
Тип ArcCoordsType определен в модуле Graph следующим образом:
type ArcCoordsType = record X,Y: Integer; {Координаты центра} Xstart,Ystart: Integer; {Начало дуги} Xend,Yend: Integer; {Конец дуги} end;