2.6.1. Преобразования нормирования
2.6.1.1. В ЯГС прикладной программист может строить графическое изображение из отдельных частей, каждая из которых концептуально определяется в своей собственной системе мировых координат (МК). Взаимное расположение этих частей описывается в едином для всех пространстве нормированных координат (НК), в которое отображаются все заданные системы мировых координат. Набор преобразований нормирования определяет преобразования из систем мировых координат в единое пространство нормированных координат, которое можно рассматривать как независимый от станций абстрактный носитель изображения. Такое нормированное изображение можно запомнить и затем подвергнуть преобразованиям через механизм сегментации; оно также может быть записано в метафайл.
2.6.1.2. В любой момент времени одно из преобразований нормирования является текущим для вывода примитивов и используется для преобразования МК, заданных, например в примитивах вывода и геометрических атрибутах, в нормированные координаты.
2.6.1.3. Преобразование нормирования определяется путем задания границ области в системе МК (ОКНО), которая должна быть отображена в заданную область в пространстве нормированных координат (поле вывода). Границы окна и поля вывода определяют прямоугольники, стороны которых параллельны осям координат в МК и НК. Границы включаются в состав прямоугольников. Преобразование нормирования производит отображение МК в НК, которое включает перенос и масштабирование с положительными коэффициентами (возможно различными) для обеих координатных осей.
2.6.1.4. Хотя пространство НК концептуально простирается до бесконечности, та его часть, в которой должно быть размещено поле вывода и которую можно увидеть на станции, ограничивается диапазоном [0., 1.][0., 1.]. Кроме того, в конкретной реализации может поддерживаться только ограниченный диапазон НК. Однако этот диапазон всегда существенно больше, чем квадрат [0., 1.][0., 1.], что позволяет эффективно использовать функцию ВСТАВИТЬ СЕГМЕНТ. В частности, всегда должен быть обеспечен диапазон изменения НК в пределах [-7., 7.][-7., 7.].
2.6.1.5. Каждое преобразование нормирования идентифицируется номером - целым числом в диапазоне от нуля до зависящего от реализации , которое содержится в таблице состояния ЯГС. Преобразование нормирования с номером нуль является тождественным преобразованием, отображающим область [0., 1.,][0., 1.,] МК в область [0., 1.,][0., 1.,] НК. Это преобразование не может быть изменено.
Первоначально все другие преобразования нормирования устанавливаются равными преобразованию с номером ноль. После того как ЯГС открыто, эти преобразования в любой момент могут быть заменены на другие преобразования. ЯГС поддерживает несколько различных преобразований нормирования, прикладная программа может их определять до начала вывода графического изображения. Перед началом вывода отдельных частей изображения осуществляется выбор определенного преобразования нормирования. Переопределение преобразований нормирования допускается и в процессе графического вывода.
Текущее преобразование нормирования задается функцией ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ и используется для вывода до тех пор, пока не будет выбрано другое преобразование. По умолчанию выбирается преобразование с номером ноль.
2.6.2. Отсечение
2.6.2.1. Поле вывода и окно, задающие определенное преобразование нормирования, используются также для задания прямоугольника отсечения. Поле "прямоугольник отсечения" в таблице состояния ЯГС устанавливается равным полю вывода текущего преобразования нормирования при определении поля вывода текущего преобразования нормирования или при выборе преобразования нормирования. Отсечение по границам поля вывода может быть разрешено или не разрешено. Имеется единый глобальный переключатель (индикатор отсечения), указывающий, будет ли прямоугольник отсечения использоваться для отсечения.
2.6.2.2. Отсечение не проводится непосредственно во время выполнения преобразования нормирования, оно задерживается до того момента, когда примитивы будут выводиться на носитель изображения графической станции. Прямоугольник отсечения, связанный с примитивами вывода, входящими в состав сегментов, хранится вместе с координатами этих примитивов, преобразованными в НК. Функция ВСТАВИТЬ СЕГМЕНТ позволяет заменить прямоугольник отсечения, записанный вместе с примитивом вывода при создании сегмента, на прямоугольник отсечения, взятый из таблицы состояния ЯГС.
Примитивы, посланные на станцию категории МВЫВОД, отсечению не подвергаются.
2.6.3. Преобразование станции
2.6.3.1. Пространство нормированных координат может рассматриваться как независимый от станции абстрактный носитель изображения. Для каждой открытой станции независимо выбирается некоторая часть пространства НК в диапазоне [0., 1.][0., 1.], которая будет отображаться на носитель изображения. Преобразование станции отображает НК в координаты устройства (КУ) данной станции.
Координаты устройства измеряются в метрах для устройств, способных генерировать точно масштабируемые изображения (например для большинства графопостроителей), или в зависящих от станции единицах (например для дисплеев, размер монитора которых неизвестен).
В любом случае координаты устройства отображаются в пространство изображения следующим образом:
а) начало системы координат устройства находится в левом нижнем углу изображения;
б) единицы измерения КУ соотносятся с пространством изображения так, чтобы квадрат в КУ выглядел квадратом на поверхности изображения (это условие правильно выполняется, если единицами измерения в КУ являются метры);
в) координаты Х и Y возрастают соответственно слева направо и снизу вверх.
На некоторых устройствах единицы измерения КУ могут не совпадать с адресуемыми единицами (например, в случаях, когда адресуемые единицы не удовлетворяют вышеуказанным условиям).
Размер пространства изображения, выраженный в единицах измерения КУ, заносится в таблицу описания станции.
2.6.3.2. Преобразование станции представляет собой неискажающее преобразование НУ в КУ, т.е. выполняет перенос и одинаковое масштабирование по обеим осям с положительными коэффициентами. Таким образом для композиции изображений можно воспользоваться преобразованиями нормирования, тогда как преобразование станции позволяет отображать на разных станциях различные части скомпонированной картины.
Например, чертеж можно вывести на графопостроитель в истинном масштабе и одновременно некоторую часть чертежа отобразить на полный экран дисплея интерактивного терминала.