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

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

Окружность можно построить с помощью процедуры Circle(X, Y, R: WORD), где X и Y координаты центра, а R - радиус в пикселях. Так же как и для прямоугольника, основой контура является сплошная линия. Цвет этой линии должен быть задан ранее оператором SetColor, а толщина может быть указана с помощью оператора SetLineStyle. Ниже приведены примеры использования оператора Circle.

Для построения семейства концентрических окружностей с центром в точке x, y достаточно в цикле FOR менять величину радиуса - R=A+ (I-1)dR, где A - наименьший радиус, I - номер окружности, dR - приращение радиуса очередной окружности (см. рис. 3.8).

Рис. 3.8 Семейство из 5 концентрических окружностей

Пример 17. Построить семейство концентрических окружностей в соответствии с рис. 3.8.

PROGRAM PR130;

Uses CRT, GRAPH;

Var drivervar, modevar: integer; A, dR, X, Y, I, N: WORD;

ch: char;

Begin ClrScr;

WRITELN('Введите радиус наименьшей окружности, A'); READ(A);

WRITELN('Укажите количество окружностей, N'); READ(N);

WRITELN('Укажите шаг, dR'); READ(dR);

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

drivervar := detect; INITGRAPH (drivervar, modevar, 'd:\tp\bgi');

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

For I:= 1 TO N DO CIRCLE(X, Y, A + (I - 1) * dR);

ch := readkey; {ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ}

End.

Пример 18. Построить семейство из 9 окружностей радиусом A, удаленных от точки X0, Y0 на расстоянии R, как показано на рис. 12. Центры соседних окружностей соединяют дуги в 45.

Рис. 3.9 Геометрическое построение по примеру 18

Код программы, реализующий построение по рис. 3.9, приведен ниже. В программе использованы следующие положения. Все центры окружностей расположены на окружности с радиусом R и координатами центра X0, Y0. Такую окружность принято называть геометрическим местом центров (ГМЦ) окружностей сателлитов. Положение каждой из окружностей сателлитов однозначно определяется направлением луча, выходящего из точки X0, Y0. Это направление задается углом dA между лучом и осью 0X. В рассматриваемой задаче угол dA принимает значения 0, 45, 90, 135, 180, 225, 270, 315. Поэтому для вычисления угла dA удобно использовать формулу , где . Поскольку в процедуре CIRCLE необходимо указывать положение центра окружности сателлита в системе координат расположения пикселей на поверхности экрана, то на основании значений R и dA следует рассчитать целочисленные величины X и Y по формулам:

.

PROGRAM PR18;

Uses CRT, GRAPH;

Var dr, md: integer; A,R,X,Y,X0,Y0,I: WORD; dA: REAL; ch: char;

Begin ClrScr;

WRITELN('Введите радиус окружности сателлита, A'); READ(A);

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

READ(X0,Y0,R);

drivervar := detect;

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

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

SetLineStyle(1,0,1);

CIRCLE(X0,Y0,R); {ГЕОМЕТРИЧЕСКОЕ МЕСТО ЦЕНТРОВ ОКРУЖНОСТЕЙ (ГМЦ)}

CIRCLE(X0,Y0,1); {ВЫВОД ЦЕНТРА ГМЦ, КАК ОКРУЖНОСТИ РАДИУСОМ = 1}

SetLineStyle(1,0,3); {ТОЛЩИНА ОКРУЖНОСТЕЙ ОПРЕДЕЛЕНА В ТРИ ПИКС.}

For I:=0 TO 8

DO Begin

dA := I*PI/4;

X:=TRUNC(R*COS(dA))+X0; Y:= -TRUNC(R* SIN(dA))+Y0;

CIRCLE(X, Y, A); {СЕМЕЙСТВО ОКРУЖНОСТЕЙ САТЕЛЛИТОВ}

CIRCLE(X,Y,1); {ЦЕНТР ОКРУЖНОСТИ САТЕЛЛИТА}

End;

ch:=readkey;

End.