Энциклопедия Turbo Pascal. Главы 9-11
Страница 15. Системы координат


Системы координат

     Все графические  процедуры  в  инструментарии используют две
отдельные координатные системы.  Первая называется абсолютной ко-
ординатной системой,  а вторая - планетной координатной системой.
     Абсолютная координатная  система  определяется  используемым
вами графическим адаптером.  Она представляется числом пикселей в
горизонтальном и вертикальном направлениях (Пиксель  -  это  наи-
меньшая  адресуемая  точка на экране).  Например,  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.
     Следующим преимуществом планетной координатной системы явля-
ется то,  что она позволяет увеличивать масштаб изображения.  Это
реализуется  уменьшением  координат планеты при неизменности всех
других параметров. Примеры этого будут даны позднее.

 
Следующая статья »