Главная » Free Pascal » Построение окружностей, эллипсов и дуг Free Pascal

0

Список процедур, предназначенных для работы с окружностями и эллипсами, приведен в табл. 15.6.

Таблица 15.6

Формат обращения к процедуре

Выполняемое действие

Arc(x,y,a1,a2,R);

Построение дуги окружности

Circle(x,y,R);

Построение окружности

Ellipse(x,y,a1,a2,Rx,Ry);

Построение эллипса или его дуги

GetArcCoords(vACT);

Опрос координат последней дуги окружности или эллипса

Точка с координатами (x, y) задает центр окружности или эллипса. Так как зна- чения координат имеют тип SmallInt, то они могут быть отрицательными. Это оз- начает, что центр может находиться за пределами графического экрана, но види- мые части соответствующего контура будут нарисованы только в области экрана. Угол a1 определяет начало дуги и задается в градусах, которые отсчитываются от

направления оси x против часовой стрелки. Угол a2 определяет конечную точку дуги (построение всегда ведется от a1 к a2). Оба угла должны быть неотрицатель- ными (значения типа Word). Допускаются комбинации a1>a2 или a1<a2, обе они приводят к построению одной и той же дуги. Параметр R задает радиус окружности в пикселах.

Для эллипса или его дуги задаются два радиуса, соответствующие полуосям эллипса, направленным вдоль координатных осей.

С помощью процедуры GetArcCoords можно определить координаты граничных точек последней построенной дуги или окружности. Аргументом этой процедуры является имя записи типа ArcCoordsType:

type ArcCoordsType = record

x: SmallInt;      // Координата X центра y: SmallInt;      // Координата Y центра

xstart: SmallInt; // Координата X начала дуги ystart: SmallInt; // Координата Y начала дуги xend: SmallInt;   // Координата X конца дуги yend: SmallInt;   // Координата Y конца дуги

Пример построения окружности, эллипса и их дуг, приведенный на рис. 15.7, выполнен по программе из листинга 15.6.

   Листинг 1 5 .6 .  По с тро е ние  ок руж нос те й,  эл л ипс ов  и  д уг                                                           

program arc_crc_ell; uses graph;

var

gd,gm: SmallInt; begin

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); Circle(100,100,40); Line(100,100,200,100); Line(100,100,180,20); Arc(100,100,0,45,75);

Arc(100,100,45,360,80); Ellipse(300,100,0,360,90,60); Ellipse(300,100,0,45,95,65); Line(300,100,420,100); Line(300,100,380,20);

readln; CloseGraph;

end.

Рис. 15.7. Построение дуг, окружностей и эллипсов

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии