Все графические процедуры в инструментарии используют две
отдельные координатные системы. Первая называется абсолютной ко-
ординатной системой, а вторая - планетной координатной системой.
Абсолютная координатная система определяется используемым
вами графическим адаптером. Она представляется числом пикселей в
горизонтальном и вертикальном направлениях (Пиксель - это наи-
меньшая адресуемая точка на экране). Например, CGA в режиме 6
имеет 640 пикселов в ширину и 200 в высоту. Процедуры инструмен-
тария используют координатную систему Х-Y, где ось Х представляет
горизонтальное направление, а ось Y - вертикальное. По соглашению
верхний левый угол экрана имеет координаты (0,0) и в случае конт-
роллера CGA левый нижний угол имеет координаты (639,200). Хотя вы
можете использовать абсолютную координатную систему, это делается
редко из-за больших преимуществ планетной координатной системы.
Планетная координатная система задается процедурой
DefineWold, которая используется для определения начальной и ко-
нечной точек координатной системы. Например, строка
DefineWord(1, 0, 0, 1000, 1000);
определяет координатную систему для планеты номер 1. Она делает
0,0 левым верхним углом и 1000,1000 правым нижним. Когда это сде-
лано все графические процедуры в инструментарии будут настроены
на координатную систему. Это позволяет создавать графические
программы без учета того, какое графическое оборудование будет
использоваться, таким образом давая большую независимость от ап-
паратуры. Та же самая программа может быть скомпилирована для ра-
боты либо с контроллером EGA в режиме 640х350, либо с CGA с раз-
решением 640х200 без изменений.
Для использования планетной координатной системы требуется
трехступенчатый процесс. Во-первых, вы должны осуществить задание
параметров планеты с помощью DefineWold. Во-вторых, вы должны
выбрать одну из предварительно заданных планет с помощью
SelectWold. Наконец, вы должны выбрать окно в планете с помощью
SelectWindom. Процедура объявляется следующим образом:
procedure DefineWorld(WorlidNum:integer,StartX,StartY,EndX,
EndY: real);
procedure SelectWorid(WoridNum: integer);
procedure SelectWindom(WindomNum: integer);
WorldNum - это номер планеты, а WindomNum - номер окна.
StartX и StartY определяют координаты верхнего левого угла, а
EndX и EndY - правого нижнего угла. Окно, которое вы выбрали,
должно иметь тот же номер, что и номер планеты.
Следующий фрагмент кода определяет две планеты и выбирает
первую из них в качестве текущей среды:
DefineWorld(1, 0, 0, 1000, 1000);
DefineWorld(2, 0, 0, 2000, 2000);
SelectWorld(1);
SelectWorld(2);
После данной последовательности процедуры инструментария бу-
дет работать в координатном пространстве 1000х1000.
Следующим преимуществом планетной координатной системы явля-
ется то, что она позволяет увеличивать масштаб изображения. Это
реализуется уменьшением координат планеты при неизменности всех
других параметров. Примеры этого будут даны позднее.