| dx, dy, x, у : Integer; { рабочие переменные }

| maxx, maxy : Integer; { разрешение монитора }

| BEGIN

| GrInit; { инициализация графики }

| maxx := GetMaxX; { функции из раздела 19.3 }

| maxy := GetMaxY;

| dx := maxx DIV 4; { вычисление стороны }

| dy := maxy DIV 4; { прямоугольника }

| Bar3D( dx, dy, maxx-dx, maxy-dy, 30,True ); { разд.19.5.3 }

| SetWriteMode( XORput ); { установка режима XOR }

| repeat { пока не нажата клавиша.. }

| x := Random( maxx - dx ); { случайная точка экрана }

| у := Random( maxy - dy );

| { рисование прямоугольника }

| Rectangle( x,y, x+dx, y+dy);

| Delay( 200 ); { пауза в 200 мс }

| { стирание прямоугольника }

| Rectangle( x,y, x+dx, y+dy );

| until KeyPressed; { условие конца цикла }

| ReadLn; { пауза до нажатия ввода }

| CloseGraph { закрытие графики }

| END.

Рис. 19.8

Режим, заданный процедурой SetWriteMode, распространяется только на рисование отрезками, т.е. на процедуры Line, LineTo, LineRel, а также Rectangle и DrawPoly.

- 421 -

<p>19.3. Системы координат и "текущий указатель"</p><p>19.3.1. Координаты устройства и мировые координаты</p>

В растровой компьютерной графике экран представляет собой прямоугольный массив адресуемых точек и любое изображение на нем образуется как композиция светящихся или погашенных пикселов (так называется минимальный элемент изображения). Эти точки адресуются двумя целыми — горизонтальным номером точки nx и вертикальным номером ny:

0 <= nx <= nx_max,

0 <= ny <= ny_max,

где nx_max и ny_max — количество адресуемых точек по горизонтали и по вертикали минус единица. В табл. 19.4 в колонке «Разрешение экрана» показано количество точек для различных режимов и типов адаптеров дисплеев.

В модуле Graph предусмотрена возможность программного опроса максимальных адресуемых координат экрана. Она реализована парой функций

GetMaxX : Integer;

GetMaxY : Integer.

Возвращаемые ими значения соответствуют параметрам nx_max и ny_max в наших обозначениях и будут различаться для различных режимов и адаптеров. При адресации точек координатами, большими чем эти значения, операция игнорируется.

Точка с адресом (0,0) обычно расположена в левом верхнем углу экрана дисплея. Координаты (nx, ny) называют также координатами устройства. Они могут принимать только целые значения.

В компьютерной графике используются еще две системы координат. Первая — физическая система координат (px, py), где px — физическое расстояние на экране по горизонтали, а py — по вертикали. Ее оси измеряются в дюймах или миллиметрах.

Вторая система координат — так называемая мировая. Она представляет собой декартову систему (X, Y), определенную программистом, и является независимой от типа устройства отображения:

xmin < x < xmax

ymin < у < ymax

Параметры, которыми задаются диапазоны изменения x и y (xmin, xmax, ymin, ymax), определяют прямоугольную область в

- 422 -

абстрактном математическом двумерном пространстве. В примере на рис. 19.9 приведены необходимые объявления и процедура установки мировых координат.

| TYPE { глобальный тип }

| World_Rec = RECORD { запись: }

| xmin.ymin, { предельные значения }

| xmax.ymax, { мировых координат }

| width,height: Real { диапазон мира }

| END;

| VAR

| my_world :World_Rec; { глобальная переменная-мир }

| nx_max,ny_max: Integer; { макс. разрешение экрана }

| PROCEDURE SetWindowWorld(minX,minY,maxX,maxY : Real);

| BEGIN

| with my_world do begin { работа с записью my_world }

| xmin = minX; { Назначение мировых координат в }

| ymin = minY; { соответствии с заданными }

| xmax = maxX; { фактическими параметрами... }

| ymax = maxY;

| width := maxX - minX; { Определение диапазона их }

| height:= maxY – minY { возможного изменения }

| end {with}

| END;

Рис. 19.9

Перейти на страницу:

Поиск

Похожие книги