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

Для вывода изображения объекта на экран графического устройства необходимо решить две основные задачи:

  • указать положение всех точек объекта в пространстве;
  • определить положение их образов на мониторе.

Для задания положения точек в пространстве и на мониторе исполюуются системы координат. Важно понимать, как связаны между собой различные системы координат. Особенно это важно для проектирования трехмерного объекта на плоский экран. Проекция на экране строится по тем же законам, что и проекция реального объекта на сетчатке человеческого глаза.

Первой среди систем координат мы рассмотрим систему координат устройства (device coordinate system), которая определяет положение точки на экране. Эта система состоит из горизонтальной оси и и вертикальной оси v (рис. 3.3). Обратите внимание, что начало отсчета может выбираться произвольно. Осей и и v достаточно для задания положения любой точки экрана, поэтому третья ось, перпендикулярная первым двум, не определяется. Положение любой точки задается двумя целыми числами и и о, равными числу пикселов между началом координат и точкой по осям и и v. Однако одна и та же точка может задаваться раз- ными парами и и v в зависимости от положения начала координат, направления осей и масштаба. Эти параметры для разных графических устройств устанавли- ваются достаточно произвольно (см. рис. 3.3). Поэтому аппаратные координаты в  графической программе могут потребовать изменения при смене графического устройства.

 
 

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

 

Виртуалъная система координат устройства (virtual device coordinate system) позволяет избежать описанной выше проблемы. Виртуальная система координат устройства фиксирует точку отсчета, направление и масштаб осей для всех рабо- чих станций. Слово «виртуальный» означает, что данная система отсчета сущес- твует только в воображении программиста. Обычно начало отсчета располага- ется в левом нижнем углу экрана, ось и откладывается вправо, а ось v — вверх. Обе координаты могут изменяться в диапазоне от нуля до единицы. Точка, поло- жение которой задается в виртуальной системе координат, на любом экране будет попадать в одно и то же место. Это дает программисту возможность едино- образно определять формы, не заботясь о конкретных системах координат устройств. Графическая программа передает виртуальные координаты подпрограм- ме драйвера устройства, которая преобразует их в координаты конкретного устройства.

Виртуальная и обычная системы координат устройства позволяют задавать по- ложение точки на плоском экране. Займемся теперь системами координат для работы с трехмерным пространством. Основных трехмерных систем координат свего три: внешняя система координат (world coordinate system), система коорди- нат модели (model coordinate system) и система координат наблюдателя (viewing koordinate system).

Внешняя, или мировая система координат (world coordinate system), — это опорная система, используемая для описания интересующего нас мира. Внешней она является по отношению к обьскгам этого мира. Например, такая система может ислользоваться для описания расположения и ориентации парт, стульев и доски, если интересующий нас мир представляет собой класс.

Следующим шагом является описание формы каждого объекта мира. Форма объекта определяется координатами всех или некоторых характеристических то- чек объекта по отношению к системе координат, связанной с ним, — системой координат модели (model coordinate system). Координаты точек объекта, определенные таким образом, не изменяются даже тогда, когда объект перемещается или вращается в пространстве. Они действительно зависят только от формы объекта. Система координат модели перемещается вместе с тем объектом, к которому она привязана. Поэтому форма каждого объекта определяется в его собственной системе координат модели. Расположение и ориентация любого объекта задаются относительным положением и ориентацией модельной системы координат данного объекта по отношению к внешней системе координат. Относительное расположение и ориентация систем координат определяются матрицей преобразования, о которой будет рассказано в разделе 3.7. Наличие внешней системы координат и модельных систем для всех объектов полностью определяет мир, то есть расположение и форму всех объектов данного мира. Другими слонами, применение матриц преобразования позволяет получить координаты любой точки любого объекта во внешней системе.

Следующий шаг — проектирование трехмерных объектов или их точек на монитор подобно тому, как они проектируются на сетчатку человеческого глаза. В компьютерной графике используется два вида проекций: перспективная и параллельная (рис. 3.4).

 
 

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

 
 

Оба вида требуют задания двух точек: точки зрения и точки наблюдения. Точка зрения (viewpoint) — это глаз наблюдателя. Точка наблюдения (viewsite) — это точка объекта, определяющая направление «луча зрения». Вектор, проведенный от точки зрения к цели, задает направление наблюдения.

В перспектитой проекции (perspective projection) все точки рассматриваемого объекта соединяются с центром проекции, который обычно лежит на линии, соединяющей точку зрения и цель1. Точки пересечения этих линий с экраном образуют проекцию. Экран располагается между точкой зрения и целью. В параллельной проекции (parallel projection) линии от всех точек объекта проводятся в направлении наблюдателя параллельно направлению наблюдения, а точки пересечения этих линий с экраном формируют проекцию. Экран, как и в перспективной проекции, располагается перпендикулярно направлению проектирования. Такая проекция называется ортогональной2.

Точки проекции, получаемые любым из описанных методов, легко могут быть рассчитаны, если координаты точек проецируемого объекта даны в системе координат xvyvzv (рис. 3.4)1. Например, координаты точек параллельной проекции объекта попросту равняются соответствующим координатам Xv и Yv, точек объекта. Система координат xvyrzv называется наблюдательской (viewing coordinate system), поскольку она облегчает расчет проекции наблюдения. Наблюдательская система координат строится таким образом, чтобы обладать перечисленными ниже характеристиками. Начало этой системы координат располагается в рассматриваемой точке, ось zv направлена из начала координат в точку зрения, а ось yv. параллельна вертикальной оси экрана (см. рис. 3.4). Третья ось, хv определяется как векторное произведение первых двух. У большинства людей вертикальное направление в пространстве естественным образом ассоциируется с вертикальным направлением на экране, поэтому ось уv считается проекцией вертикального вектора из пространства на экран. В большинстве графических библиотек пользователю приходится задавать вектор вертикали в пространстве (up vector) в мировых координатах. Положение точки зрения и точки наблюдения также задается в мировых координатах (рис. 3.5).
 
 

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

 
 

После определения наблюдательской системы координат и вычисления координат точек всех интересующих нас объектов остается только вычислить положение их проекций на экране. Мы уже знаем, что для параллельной проекции это сделать очень легко. Поэтому мы займемся описанием процедуры вычисления координат в перспективной проекции. Рассмотрим виды сверху и сбоку (рис. 3.4, а, рис. 3.6). Интересующая нас точка на рисунке выделена, ее координаты мы обозначим как Хv ,Yv , Zv..

Начало координат наблюдательской системы координат может находиться в точке зрения, а ось zv при этом должна указывать на точку наблюдения. Оси хv и уv определяются так же, как обычно, в результате чего система становится левосторонней. Следствием этого является то, что точки с большими значениями Z оказываются дальше от наблюдателя. По соглашению, принятому в этой книге, объекты с большими значениями Z расположены ближе к наблюдателю.

 

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

 
 

Из подобия треугольников следует, что

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

В формулах (3.1) и (3.2) X,s и Ys — расстояния до проекции выбранной точки. Расстояния измеряются в горизонтальном и вертикальном направлениях от точки, где ось zv пересекается с экраном. Далее, L — расстояние между точкой наблюдения и центром проекции, a S — расстояние между центром проекции и экраном. Формулы (3.1) и (3.2) показывают, что точка с большими значениями Zv будет иметь большие значения Xs и Ys, благодаря чему далекий отрезок кажется меньше, чем близкий той же длины. Расстояния Xs и Ys преобразуются в виртуальные координаты устройства с учетом желаемого положения центра изображения и его размеров (на мониторе).

 

Взаимоотношения перечисленных выше систем координат иллюстрирует рис. 3.7.

Как уже говорилось, системы координат связаны друг с другом матрицами преобразования. Так, положение и ориентация каждой из модельных систем координат по отношению к мировой задаются соответствующими матрицами преобразований. Наблюдательская система координат также может быть определена относительно мировой при помощи матрицы преобразования, если задать положение точек зрения и наблюдения, а также вектор вертикали. Процедура расчета точек проекции с использованием матриц преобразования выглядит следующим образом. Сначала координаты проецируемой точки преобразуются из модельных в мировые при помощи матрицы преобразования, определяющей переход от модели, к которой относится точка, к мировой системе координат. Эта операция (рис. 3.8) называется преобразованием модели (model transformation). Затем координаты этой точки преобразуются из мировой системы координат в наблюдательскую. Эта операция (см. рис. 3.8) называется преобразованием наблюдения (viewing transformation). Наконец, координаты в наблюдательской системе координат преобразуются в значения Xs и Ys по формулам (3.1) и (3.2), а затем — в виртуальные координаты устройства. Эта операция (рис. 3.8) называется преобразованием проекции (projection tranformation). Наконец, виртуальные координаты устройства преобразуются в обычные подпрограммой драйвера. Результат показан на рис. 3.8.

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

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

 

Все эти преобразования обычно выполняются внутри графической библиотеки, а программисту приходится только указывать сведения, необходимые для проведения преобразований. Например, трансляции и повороты объектов учитываются при преобразовании модели, положение точки зрения, точки наблюдения и вектора вертикали — при преобразовании наблюдения, а тип проекции, расположение центра проекции и экрана — при преобразовании проецирования. Однако графические библиотеки примитивного уровня могут потребовать от программиста самостоятельного написания кода для всех этих преобразований. Подробнее мы расскажем об этом в разделе 3.7.

 

1 В противном случае проекция называется косоугольной.

2 В косоугольной проекции ориентация экрана произвольна.

 

Смотрите также