Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

Построение дуги окружности. Процедура Arc

Дугу окружности можно построить с помощью процедуры Arc(X, Y: Integer; SA, EA, R: WORD), где X, Y -координаты центра дуги, SA и EA - начальный и конечный углы в градусах, R - радиус дуги. Если задать SA=0 и EA=360, то на экране будет построена дуга, представляющая собой окружность. Дуга строится сплошной линией. Толщину линии можно устанавливать с помощью процедуры SetLineStyle в один или три пикселя. Цвет дуги определяется процедурой SetColor. Отсчет углов начала и конца идет против часовой стрелки относительно точки X, Y. Отсчет начинается от оси абсцисс 0X, соответствующей 0 (см. рис. 3.10).

Рис. 3.10 Дуга окружности

Пример 19. Построить дугу окружности с координатами X, Y, радиусом R. Начальный угол 45, конечный угол дуги 180 (см. рис. 3.10).

PROGRAM PR19;

Uses CRT, GRAPH;

Var dr, md: integer; R,X,Y,SA,EA,I: WORD; ch:char;

Begin ClrScr;

WRITELN('Введите радиус дуги, R'); READ(R);

WRITELN('Укажите координаты центра дуги, X, Y'); READ(X, Y);

SA := 45; EA := 180;

dr := detect; INITGRAPH (dr, md, 'd:\tp\bgi');

SetBkColor(7); ClearDevice; SetColor(1);

SetLineStyle(1,0,3);

Arc(X,Y,SA,EA,R); {ПОСТРОЕНИЕ ДУГИ ОКРУЖНОСТИ}

ch := readkey;

End.

Построение эллипса. Процедуры Ellipse, FillEllipse

Процедура Ellipse(X, Y: Integer; SA, EA, XO, YO: Word) строит дугу эллипса с центром в точке X и Y. Величины SA и EA определяют начальный и конечный углы дуги эллипса. Параметры XO и YO задают размеры горизонтальной и вертикальной осей эллипса. Если SA=0 и EA=360, то процедура Ellipse создаст полную (замкнутую) дугу эллипса. Цвет дуги эллипса определяется процедурой SetColor, толщина дуги задается процедурой SetLineStyle. Цвет пикселей, попавших во внутрь замкнутой дуги эллипса, не изменяется.

Для создания закрашенного эллипса используют специальную процедуру FillEllipse(X, Y: Integer; XO, YO: Word). Эта процедура строит контур эллипса цветом SetColor, толщиной и заливкой, определяемыми процедурой SetLineStyle. При XO = YO процедура строит окружность и заливает ее указанным заполнителем.

Пример 20. Построить семейство эллипсов с координатами центра X, Y, размером наибольших осей XO, YO и приращением dX и dY по осям X и Y, соответственно. Заполнить эллипсы стандартными заливками, перечисленными в табл. 3.4.

Ниже приведен код программы и результат ее выполнения для 10 эллипсов (см. рис. 3.11).

Рис. 3.11 Семейство эллипсов

PROGRAM PR20;

Uses CRT, GRAPH;

Var dr, md: integer; X, Y, XO, YO, XN, YN, dX, dY, N, I: WORD; ch: char;

Begin

clrscr;

WRITELN('Укажите координаты центра эллипса - X, Y'); READ(X, Y);

WRITELN('Укажите размеры осей наибольшего эллипса- XO, YO');

READ(XO, YO);

WRITELN('Укажите количество эллипсов - n'); READ(n);

WRITELN('Укажите шаг приращения осей - dX, dY'); READ(dX, dY);

dr := detect; INITGRAPH (dr, md, 'd:\tp\bgi');

SetBkColor(7); ClearDevice; SetColor(1); SetLineStyle(1,0,1);

For I := 1 TO N

DO Begin

SetFillStyle(1+I, 1);

XN := XO - (I-1)*dX; YN := YO - (I-1)*dY;

FillEllipse(X, Y, XN, YN); {Семейство эллипсов}

End;

ch := readkey;

End.