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

Построение сектора. Процедуры PieSlice, Sector

Для разделения окружности на сектора и заливки сектора используют процедуру PieSlice(X, Y: Integer; SA, EA, R: WORD). Параметры X, Y определяют центр окружности, SA и EA - задают начальный и конечный углы сектора, R - радиус окружности.

Можно создать и залить сектор и в эллипсе. Для этих целей используется процедура Sector(X, Y: Integer; SA, EA, XO, YO: Word), которая строит сектор эллипса с центром в точке X и Y. Величины SA и EA определяют начальный и конечный углы дуги сектора. Параметры XO и YO задают размеры горизонтальной и вертикальной осей эллипса, сектор которого строится.

4.3 Корректировка изображения Процедуры GetAspectRatio, SetAspectRatio

Каждый монитор и связный с ним драйвер характеризуется параметром, получившим название коэффициент пропорциональности (Aspect Ratio), или просто аспект. Величина этого безразмерного коэффициента AR вычисляется как отношение высоты пикселя к его ширине и является геометрической мерой пикселя. Для многих дешевых мониторов вертикальная линия кажется длиннее горизонтальной линии, хотя количество пикселей, составляющих их длину одинаково. Искажения относятся ко всем геометрическим фигурам: окружностям, эллипсам, секторам, квадратам и др. В ряде задач на экране необходимо построить геометрически правильное изображение. Для этих случаев используется процедура: GetAspectRatio(var xasp, yasp: word), которая возвращает величины: xasp - длина пикселя, yasp - высота пикселя в условных единицах измерения. Аспект AR вычисляется по формуле:

.

Как правило, величина yasp = 10000, а величина xasp принимает различные значения. Как правило, yasp > xasp, и AR > 1.0, следовательно изображение вытянуто по оси Y. При хорошей аппаратной настройки монитора AR = 1.0 и искажений изображения нет. Поэтому в этом случае нет необходимости в коррекции изображений.

Используют два подхода для программной коррекции изображений.

Программная корректировка изображений с помощью аспекта. Этот метод используют для коррекции линий, многоугольников и эллипсов, и не применяют для окружностей, дуг и секторов. В этом методе с помощью процедуры GetAspectRatio находят xasp, yasp и определяют аспект (коэффициент AR), а затем используют его при пересчете координат, или параметров геометрических фигур (например, полуосей эллипса).

Программная корректировка коэффициента сжатия. Этот метод использует процедуру SetAspectRatio(xasp, yasp: word), которая используется для изменения коэффициента пропорциональности для отображения окружностей, дуг и секторов на экране монитора. Используя эту процедуру можно окружность превратить в эллипс и наоборот.

Пример 21. Построить квадрат с координатами верхней левой точки X, Y, и размером стороны A.

PROGRAM PR21;

Uses CRT, GRAPH;

Var dr,md: integer; X,Y,A,xasp,yasp,X1,Y1: WORD; AR:REAL;

Begin

ClrScr;

WRITELN('Укажите координаты квадрата - X, Y'); READLN(X, Y);

WRITELN('Укажите размер стороны - A'); READLN(A);

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

SetBkColor(7);

GetAspectRatio(xasp, yasp); AR := yasp/xasp;

ClearDevice;

SetColor(1); SetLineStyle(0,0,1);

X1:= X + A; Y1:= Y+ROUND(A/AR); {КОРРЕКЦИЯ ПО ОСИ Y}

Rectangle(X,Y,X1,Y1); readln;

CloseGraph;

WRITELN('Коэффициент пропорциональности AR = ', AR:4:2);

readln

End.