Центральные (перспективные) проекции. Геометрические свойства нескольких изображений

Сегодня мы более подробно рассмотрим устройство виртуальной камеры. Начнём с картинки.

На рисунке мы видим координатное пространство камеры. Направление ("взгляд") камеры всегда совпадает с положительным направлением оси z, а сама камера расположена в начале координат.

Внутреннее пространство пирамиды изображённой на рисунке - это та часть виртуального мира, которую увидит пользователь.

Обратите внимание на три плоскости. Первая расположена на расстоянии 1 по оси z. Это ближняя плоскость. То что находится до неё игрок никогда не увидит. В данном случае значение z равно единице, но вообще говоря, оно может быть любым. Именно с ближней плоскостью связан один дефект отображения графики. Этот дефект проявляется прежде всего в шутерах (из-за большой свободы камеры). Когда ты слишком близко подходишь к объекту, то можно оказаться "внутри". Из последних игр этот дефект особенно сильно проявлялся в Left 4 dead: когда на игрока наваливалась толпа зомби, то очень часто можно было заглянуть внутрь других персонажей.

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

Шесть плоскостей ограничивающих пространство, которое увидит пользователь, называются отсекающими (clipping planes): левая правая верхняя нижняя ближняя и дальняя.

Плоскость расположенная между ближней и дальней - проекционная. В дальнейшем, эту плоскость мы будем располагать в z=1, т.е. она будет совпадать с ближней. Здесь я отделил ближнюю и проекционную плоскости, чтобы показать, что это всё-таки не одно и то же. Проекционная плоскость предназначена для последнего преобразования координат: преобразование из трёхмерного пространства камеры - в двухмерное пространство.

Именно благодаря проекционной плоскости пользователь увидит виртуальный мир. Собственно, эта плоскость и есть то, что увидит пользователь. Проекционная плоскость напрямую связана с такими понятиями как основной/фоновый буферы, окно программы и экран пользователя. Все эти понятия можно рассматривать как прямоугольную картинку, которая в памяти компьютера представлена массивом цифр.

Преобразование координат из трёхмерного мира в проекционную плоскость - самое сложное из тех, которые на данный момент были нами изучены.

Поле зрения/зона обзора (field of view)

На рисунке выше у проекционной плоскости (а значит и у изображения, которое увидит пользователь) ширина больше высоты. Ширина и высота проекционной плоскости задаются с помощью углов. Встречаются разные названия этих углов: поля зрения или зоны обзора. В английском - fields of view.

Зоны обзора задаются двумя углами. Назовём их: fovx - зона обзора по горизонтали, fovy - зона обзора по вертикали. Подробно о зонах обзора: ниже.

Z-буфер / w-буфер / буфер глубины (z-buffer / w-buffer / depth buffer)

Посмотрим на картинку, на которой представлено два треугольника: на расстоянии в 25 и 50 единиц от камеры. На рисунке (а) показано местоположение треугольников в пространстве (вид сверху), а на рисунке (б) можно увидеть конечное изображение:

Как вы возможно догадываетесь, изображение нужно рисовать начиная с самых дальных элементов и заканчивая самыми ближними. Очевидное решение: вычислить расстояние от начала координат (от камеры) до каждого объекта, а затем сравнить. В компьютерной графике используется немного более усовершенствованный механизм. У этого механизма несколько названий: z-буфер, w-буфер, буфер глубины. Размер z-буфера по количеству элементов совпадает с размером фонового и основного буферов. В z-буфер заносится z-компонента самого ближнего к камере объекта. В данном примере, там где синий треугольник перекрывает зелёный, в буфер глубины будут занесены z-координаты синего. Мы ещё поговорим о z-буферах более подробно в отдельном уроке.

Ортографическая / параллельная проекция (orthographic / parallel projection)

Операция при которой происходит уменьшение размерности пространства (было трёхмерное пространство, стало двухмерным) называется проекцией. Прежде всего нас интересует перспективная проекция, но сналача мы познакомимся с параллельной (parallel или orthographic projection).

Для вычисления параллельной проекции достаточно отбросить лишнюю координату. Если у нас есть точка в пространстве [ 3 3 3 ], то при параллельной проекции на плоскость z=1, она спроецируется в точку .

Перспективная проекция (perspective projection) на проекционную плоскость

В данном виде проекции все линии сходятся в одной точке. Именно так устроено наше зрение. И именно с помощью перспективной проекции моделируется "взгляд" во всех играх.


Сравните этот рисунок с рисунком показывающим однородные координаты из предыдущего урока. Чтобы из трёхмерного пространства перейти в двухмерное, нужно первые две компоненты векторов разделить на третью: [ x/z y/z z/z ] = [ x/z y/z 1 ].

Как я уже писал выше, проекционная плоскость может располагаться где угодно между ближней и дальней. Мы будем всегда размещать проекционную плоскость в z=1, но в этом уроке мы рассмотрим и другие варианты. Посмотрим на картинку:


Расстояние до проекционной плоскости от начала координат обозначим как d. Мы рассмотрим два случая: d=1 и d=5. Важный момент: третья компонента всех векторов после проекции должна быть равна d - все точки расположены в одной плоскости z=d. Этого можно добиться умножив все компоненты вектора на d: [ xd/z yd/z zd/z ]. При d=1, мы получим: [ x/z y/z 1 ], именно эта формула использовалась для преобразования однородных координат.

Теперь, если мы отодвинем проекционную плоскость в точку z=5 (соотвтественно d=5), мы получим: [ xd/z yd/z zd/z ] = [ 5x/z 5y/z 5 ]. Последняя формула проецирует все векторы пространства в одну плоскость, где d=5.
У нас здесь небольшая проблемка. Предыдущая формула работает с трёхмерными векторами. Но мы договорились использовать четырёхмерные векторы. Четвёртую компоненту в данном случае можно просто отбросить. Но мы не будем этого делать, так как её использование даёт некоторые специфические возможности, которые мы ещё обсудим.

Нужно найти общий делитель третьей и четвёртой компонент, при делении на который в третьей компоненте остаётся значение d, а в четвёртой единица. Делитель этот - d/z. Теперь из обычного вектора [ x y z 1 ] нам нужно получить вектор готовый к проекции (делению) [ x y z z/d ]. Делается это с помощью матрицы преобразования (проверьте результат умножив любой вектор на данную матрицу):


Последнее преобразование - это ещё не проекция. Здесь мы просто приводим все векторы к нужной нам форме. Напоминаю, что мы будем размещать проекционную плоскость в d=1, а значит векторы будут выглядеть вот так: [ x y z z ].

Матрица перспективного преобразования

Мы рассмотрим матрицу перспективного преобразования использующуюся в DirectX:

Теперь мы знаем для чего предназначен элемент _34. Мы также знаем, что элементы _11 и _22 масштабируют изображение по горизонтали и вертикали. Давайте посмотрим, что конкретно скрывается за именами xScale и yScale.

Данные переменные зависят от зон обзора, о которых мы говорили выше. Увеличивая или уменьшая эти углы, можно масштавбировать (scale или zoom) изображение - менять размер и соотношение сторон проекционной плоскости. Механизм масштабирования отдалённо напомниает масштабирование в фотоаппаратах/камерах - принцип очень похожий. Рассмотрим рисунок:


Разделим угол fov на две части и рассмотрим только одну половинку. Что мы тут видим: увеличивая угол fov/2 (а соответсвенно и угол fov), мы увеличиваем sin угла и уменьшаем cos. Это приводит к увеличению проекционной плоскости и соответственно к уменьшеню спроецированных объектов. Идеальным для нас углом будет fov/2 = P/4. Напоминаю, что угол в P/4 радиан равен 45 градусам. При этом fov будет равен 90 градусам. Чем для нас хорош угол в 45 градусов? В данном случае не происходит масштабирования, а cos(P/4)/sin(P/4)=1.

Теперь мы можем легко масштабировать картинку по вертикали (горизонтали), используя синус и косинус половины зоны обзора (функция котангенса в C++ называется cot):

yScale = cos(fovY/2)/sin(fovY/2) = cot(fovY/2)
В DirectX используется только вертикальная зона обзора (fovY), а масштабирование по горизонатли зависит от вертикальной зоны обзора и соотношения сторон.

Напоминаю, что окно в наших программах размером в 500x500. Соотношение сторон: 1 к 1. Поэтому переменные будут равны: xScale=1, yScale=1.

Соотношение сторон стандартного монитора/телевизора: 4:3. Этому соотношению соответствуют разрешения экрана: 640x480, 800x600, 1600x1200. Мы пока не будем касаться полноэкранного режима, но можем изменить размер окна программы. Вы можете поменять размер окна (в present parameters), например, на 640X480. Но чтобы все предметы не растянулись (квадраты будут выглядеть как прямоугольники), не забудьте поменять соответствующие переменные в проекционной матрице.

Чуть не забыл, форумула для xScale в DirectX:

xScale = yScale / соотношение сторон
Соотношения сторон задаются просто: 1/1, 4/3, 16/9 - это из стандартных.

Осталось выяснить назначение элементов _33, _34 матрицы перспективного преобразования. zf - z-координата дальней плоскости (от far - далеко), а zn - z-координата ближней (от near - близко). Обратите внимание, что элемент _43 = _33 * -zn.

Легче всего понять, что именно делают эти формулы, можно на примерах. Умножим стандартный вектор [ x y z w ] на матрицу представленную выше. Рекомендую вам сделать это, взяв лист бумаги и карандаш (надеюсь вы помните как перемножать две матрицы). Компоненты вектора примут следующий вид.

1-ая = x*xScale
2-ая = y*yScale
3-я = z*(zf/(zf-zn)) + w*(-(zn*zf)/(zf-zn)) = (zf/(zf-zn))*(z - w*zn)
4-ая = (w*z)/d
Совершим проекционное преобразование (разделим все элементы на 4-ую компоненту, при этом допустим, что d=1 и w=1):

1-ая = (d*x*xScale)/(w*z) = (x*xScale)/z
2-ая = (d*y*yScale)/(w*z) = (y*xScale)/z
3-я = (zf/(zf-zn))*(z - w*zn)*(w*d/z) = (zf/(zf-zn))*(1 - zn/z)
4-ая = 1
В результате мы получили вектор вида:

[ x/(z*xScale) y/(z*yScale) (zf/(zf-zn))*(1-zn/z) 1 ]
Теперь, если вы зададите конкретные значения zf и zn, то обнаружите следующее (для положительных значений): если вектор расположен до ближней плоскости, то z-компонента после преобразования будет меньше нуля, если вектор расположен за дальней плоскостью, то z-компонента будет больше единицы.

Нет никакой разници где именно расположены ближняя и дальняя плоскости: zn=1, zf=10 или zn=10, а zf=100 (или любые другие значения) - после преобразования видимая область будет располагаться в отрезке от нуля до единицы, включительно.

Именно для этого и предназначены формулы в элементах _33, _34 проекционной матрицы - спроецировать расстояние от ближней до дальней плоскости в отрезок . Проверьте это, вычислив значения нескольких векторов для конкретных значений zn,zf (да-да, на листке бумаги!!!).

Произведения годов. Волошин Максимилиан. ДОБЛЕСТЬ ПОЭТА. 1. Править поэму, как текст заокеанской депеши: Сухость, ясность, нажим - начеку каждое слово.

Букву за буквой врубать на твердом и тесном камне: Чем скупее слова, тем напряженней их сила. Мысли заряд волевой равен замолчанным строфам.

Вытравить из словаря слова «Красота», «Вдохновенье» - Подлый жаргон рифмачей Поэту - понятья: Правда, конструкция, план, равносильность, cжатость и точность. В трезвом, тугом ремесле - вдохновенье и честь поэта: В глухонемом веществе заострять запредельную зоркость. Волошин М.А. Библиотека: Орловская областная научная универсальная публичная библиотека им. И.А. Бунина. - М., ; Избранные произведения: В 2-х т.

М., ; Красный дым: Повести. - М., ; Гладышев из разведроты: Повести. - М., ; Эшелон; Неизбежность: Романы. Много занимался переводами марийских и удмуртских поэтов. Время от времени пробовал свои силы также в прозе. Соч. Максимилиан Александрович Волошин () - один из крупнейших поэтов первой трети XX века. Это талантливый художник, многогранный лирик, прошедший путь от символистских, эзотерических стихотворений к гражданско-публицистической и научно-философской поэзии, через антропософские пристрастия - к «идеалу Града Божия».

Предлагаемое издание дает возможность читателю ознакомиться не только с лучшими поэтическими произведениями Волошина, но также - с его наиболее интересными работами по эстетике, мемуарной прозой, публицистикой и письмами, имеющими отношение к драматическим событиям в жизни стран. Автор. Волошин Максимилиан. Все стихи автора. Произведение. Доблесть поэта. 2. Звёзды. Создавать избранные коллекции авторов и стихов!

Общаться с единомышленниками! Писать отзывы, участвовать в поэтических дуэлях и конкурсах! Присоединяйтесь к лучшему! Спасибо, что присоединились к Поэмбук! На вашу почту отправлено письмо с данными доступа к аккаунту!

Необходимо авторизоваться в течение 24 часов. В противном случае аккаунт будет удален! Зарегистрированные пользователи получают массу преимуществ: Публиковать стихи - реализовать свой талант! Создавать избранные коллекции авторов и стихов! Общаться с единомышленниками! Писать отзывы, участвовать в поэтических дуэлях и конкурсах!. Максимилиан Волошин. Описание. Максимилиан Александрович Волошин - один из крупнейших поэтов первой трети XX века.

Это талантливый художник, многогранный лирик, прошедший путь от символистских, эзотерических стихотворений к гражданско-публицистической и научно-философской поэзии, через антропософские пристрастия - к "идеалу Града Божия". Предлагаемое издание дает возможность читателю ознакомиться не только с лучшими поэтическими произведениями Волошина, но также - с его наиболее интересными работами по эстетике, мемуарной прозой, публицистикой и письмами, имеющими отношение к драмати.

Избранные произведения и письма. М. А. Волошин. Цена. руб. Максимилиан Александрович Волошин - один из крупнейших поэтов первой трети XX века. Это талантливый художник, многогранный лирик, прошедший путь от символистских, эзотерических стихотворений к гражданско-публицистической и научно-философской поэзии, через антропософские пристрастия - к "идеалу Града Божия".

Волошин М.А., Доблесть поэта: Избранные произведения и письма. серия: Новая библиотека русской классики: обязательный экземпляр Парад, г., стр., Описание книги. Максимилиан Александрович Волошин () - один из крупнейших поэтов первой трети XX века. Это талантливый художник, многогранный лирик, прошедший путь от символистских, эзотерических стихотворений к гражданско-публицистической и научно-философской поэзии, через антропософские пристрастия - к «идеалу Града Божия».

Categories Post navigation

Перспективные проекции

Плоская перспективная проекция однозначно определяется положением точки наблюдения и расстояние от нее до плоскости проецирования (d ). Положение точки наблюдения может задаваться в виде вектора V , связывающего точку наблюдения и начало трех мерной системы координат, из которой выполняется проецирование. Трехмерная система координат, из которой выполняется проецирование, называется мировой системой координат.

Вектор V может задаваться в одной из двух форм (Рис. 6.2‑1):

1)в полярной системе координат через параметрами:

R- модуль вектораV ;

Q -угол между координатной осью X и проекцией вектора V на координатную плоскость XY мировой системы координат;

J -угол между вектором V и осью Z мировой системы координат;

2)в декартовой системе координат через проекции вектора V на координатные оси мировой системы координат:

V x – проекция вектора V на ось X ;

V y – проекция вектора V на ось X ;

V z – проекция вектора V на ось X .


Рис. 6.2 1

Задача проецирования графического объекта, в конечном счете, сводится к определению координат X ,Y отдельных точек объекта на плоскости проецирования, которые изначально заданны тремя координатами в мировой системе координат.

Определение координат точки на плоскости проекции

Разобьем общую задачу перспективногопроецирования на две задачи преобразования координат:

Преобразование для перехода из мировой системы координат в видовую систему координат

Преобразования для перехода из видовой системы координат в координаты на плоскости проекции.

Переход в видовую систему координат

Переход в видовую систему координат иллюстрируется ниже приведенным рисунком (Рис. 6.2‑2).

Видовая система координат представляет собой такую трехмерную систему координат с координатными осями X в , Y в , Z в , которая «удобна» для заданной проекции, т.е. из которой наиболее просто осуществляется переход в двумерную систему на плоскости проекции (например, экран). Для данного вида перспективной проекции начало видовой системы координат должно находиться в точке E , ее ось Z в должна совпадать с вектором проекции V , ее ось X в должна проецироваться на ось X э , а ее ось Y в должна проецироваться на ось Y э .



Рис. 6.2 2

Исходя из этого, переход из мировой системы координат в видовую можно выполнить за счет следующей последовательности базовых преобразований:

1)перенос мировой системы координат на вектор V , в результате чего будет получена система координат c началом в точке E и координатными осями X 1 , Y 1 , Z 1 (реализуется матрицей Т -1 (-V x , -V y , -V z ));

2)поворот полученной системы на угол (-(90 0 -q) )относительно ее координатной оси Z 1 , в результате чего будет получена система с координатными осями X 2 , Y 2 , Z 2 (реализуется матрицей R z -1 (-(90 0 -q)) , в которой вектор V находится в координатной полскости Y 2 , Z 2 ;

3)поворот полученной системы E , X 1 , Y 1 , Z 1 на угол ((180 0 - j)) относительно ее координатной оси X 2 , в результате чего будет получена система с координатными осями X 3 , Y 3 , Z 3 , начало которой находится в точке E , (реализуется матрицей R x -1 (180 0 - j)) , в которой вектор V располагается на оси Z 3 ;

4)смена направления координатной оси X 3 , в результате чего будет получена нужная видовая система координат с координатными осями X в , Y в , Z в (реализуется матрицей R (-x )).

Таким образом, учитывая четыре базовых преобразования координат, для перехода в видовую систему координат необходимо использовать следующее произведение матриц:

Для задания используемых матриц представим все их элементы через тригонометрические функцииsin j , cos j , sin q , cos q и введем обозначения:

cos j= a ; sin j = b ; cos q = с; sin q = d ;

u x = -r bc ; u y = -r bd ; u z =-r a .

С этой целью представим перечисленные в выше приведенном выражении матрицы в следующем виде.

Матрица переноса :

T -1 (u x , u y , u z )= T (-u x , -u y , -u z ).

Такой представление правомерно, так как обратная матрица переноса на вектор эквивалентна прямой матрицы переноса на этот же вектор в обратной направленности.

C учетом введенных обозначений будем иметь:

Матрицы поворота относительно оси Z 1:

R z -1 (-(90 0 -Q))= R z (90 0 -Q),

и, учитывая, что sin (90 0 -a)= cos a, можно записать:


Матрицы поворота относительно координатной оси X 2:

R x -1 ((180 0 -j))= R x (-(180 0 -j)) ,

и, учитывая, что sin (-(180 0 -j)) =- sin j, cos (-(180 0 -j)) =- cos j, имеем:

Матрица смены направления координатной оси X 2 имет вид:

Найдем матрицу видового преобразования R в:

Определим порядок умножения матриц согласно скобок в записи:

Найдем R1:


Найдем произведение:


При нахождении матрицы видового преобразования R в, учтем необходимость расширения матрицы R 2 из размерности 3*3 до размерности 4*4:


Таким образом, матрица видового преобразования имеет вид:

(6.2-1)

Переход из видовой системы к координатам на плоскости проекции.

Для выполнения этого этапа используем ниже приведенный рисунок (Рис. 6.2‑3).


На рисунке приняты следующие обозначения:

Е – начало видовой системы координат с координатными осями X в , Y в , Z в ;

Т1 – точка в видовой системе координат, расположенная на координатной плоскости X в Z в ;

Т2– точка в видовой системе координат, расположенная на координатной плоскости Y в Z в ;

D - расстояние от начала видовой системы координат до плоскости проекции;

X э , Y э - оси системы координат на плоскости проекции (на экране).

Из приведенного рисунка видно, что:

Отсюда вытекает следующая зависимость координат точки на экране от координат этой точки в видовой системе координат:

(6.2-2)

Таким образом, используя матрицу видового преобразования R в , определяемую выражением (6.2-1), и соотношения согласно выражениям (6.2-2), можно рассчитать координаты заданных точек на плоскости перспективной проекции.

Точки и линии схода

При перспективной проекции точка схода прямой АА’ назыавется та точка на плоскости проекции, к которой стремится проекция точки, «убегающей» в бесконечность по прямой АА’. Для того, чтобы представить геометрический смысл точек схода, рассмотрим ниже приведенный рисунок (Рис. 6.2‑4).

На рисунке используются следующие обозначения:

Е - начало видовой системы координат;

«пп» - плоскость проекции (экран) с координатными осями X и Y .



Рис. 6.2 4

Проведем через точку Е прямую Еа’, перпендикулярную плоскости проекции. Эта линия пересекается с плоскостью проекции в точке а п , которая будет являться точкой проекции всех точек прямой Еа’, в том числе и точки, убегающей по этой прямой в бесконечность. Следовательно, точка а п является точкой схода для линии Еа’.

Возьмем на плоскости проекции некоторую точку b п и проведем через нее линию b п b ’, параллельную линии Еа’. Проведем через линии Еa ’ и b п b ’ плоскость, которая пересечется с плоскостью проекции по линии b п a п . Возьмем на линии b п b ‘ точку b б и устремим ее по прямой в бесконечность.

По мере перемещения бегущей точки по прямой в бесконечность, ее проекцияb бп будет перемещаться по прямой b п a п , стремясь к точке a п по мере стремления точки b п в бесконечность. Таким образом, точка a п будет являться точкой схода для прямой b п b ‘.

Единственным условием для выбора прямой bb ’ являлось то, что она параллельна прямой Еa ’. Следовательно, для всех прямых, параллельных Еa ’, точкой схода будет являться одна и та же точка a п .

Проведем в плоскости проекции через точку a п прямую, параллельную оси X плоскости проекции и возьмем на ней произвольную точку d п . Проведем прямую через точки E и d п . Затем возьмем на плоскости проекции еще одну произвольную точкуc п и проведем через нее в видовой системе координат прямуюc п c , параллельную прямой Ed п .

Через полученные параллельные прямые проведем плоскость, которая пересечет плоскость проекции по прямой d п с п . Возьмем на прямой с п с точку c б и устремим ее в бесконечность. Как видно из рисунка, по мере перемещения точки c б. в бесконечность, ее проекция будет перемещаться по прямой c п d п. , стремясь к точке d п . Отсюда следует, что точка d п является точкой схода для прямой с п с.

Рассуждая аналогично легко показать, что для всех линий, параллельных плоскости, проходящей через точку E и прямую d п а п , точки схода будут находиться на линии, проходящей через точки d п а п .

Из изложенного следует, что прямая d п а п является линией схода для всех горизонтальных плоскостей. Эта прямая называется линией горизонта.

Из изложенного также можно заключить, что все параллельные линии, независимо от их положения, имеют одну точку схода. Сказанное относится и к вертикальным линиям, которые имеют единую точку схода, называемую точкой зенита .

Рассуждая аналогично, можно показать, что все параллельные плоскости, имеют единую линию схода.

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

Пусть необходимо построить проекцию параллелепипеда, с вертикальными боковыми гранями, имеющий верхнюю грань, заданную опорными точками 1, 2,3, 4, и нижнюю, заданную узловыми точками 5, 6, 7, 8 (Рис. 6.2‑5).

Отметим, что из свойства заданного объекта ребра, заданные узловымии точками 1,2; 3,4; 5,6; 7,8, параллельные, а, следовательно, несущие их прямые сходятся в одной точке (точка Тс1). Прямые, несущие боковые ребра 3,7; 4,8; 2,6 и 1,5, так же имеют одну и ту же точку схода (точка Т3). То же самое можно сказать о ребрах 1,3; 2,4; 5,7; 6,8 – несущие их прямые параллельны друг другу, а следовательно, имеют единую точку схода (точка Тс2).

Для однозначного построения проекции заданного объекта достаточно на проекции определить три выше упомянутые точки схода (Т3, Тс1, Тс2), и проекции точек 2,5,6,8 (Рис. 6.2‑6).


Рис. 6.2 5

Построение проекции можно вести в следующей последовательности.

Через точки 5 и Тс2 проведем прямую линию, несущую ребра 5,7. Ее пересечение с линией, проходящей через точки Тс1 и 8 (прямой линии,



Рис. 6.2 6

несущей ребро 7,8), является точкой 7. Несущие для боковых ребер 3,7; 4,8; 2,6 и 1,5 будут получены, если провести прямые через точку зенита Т3 и уже имеющиеся четыре узловые точки нижней грани параллепипеда (линии Т3,6; Т3,7; Т3,8; Т3,5).

Затем проведем прямые Тс1,2. Точка ее пересечения с прямой Т3,5 будет являться точка 1. Проведем линии Тс1,4. Точка ее пересечения с прямой T 3,7 будет являться точка 3.

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

Для того, чтобы при проецировании был получен образ объекта, близкий к тому, каким он субъективно воспринимается человеком, необходимо ограничивать угол проецирования (угол обзора наблюдателем трех мерного объекта из точки наблюдения, т.е. из точки начала видовой системы координат). Как правило, приемлемый результат проецирования получается, когда угол проецирования не превышает 30-40 градусов.

Рассмотренный метод проецирования приемлем лишь для сравнительно простых объектов.

При центральной проекции все проектирующие лучи проходят через определенную точку пространства – центр проекции. Физическим устройством, реализующим центральную проекцию, является объектив. При визуальном наблюдении роль объектива выполняет глаз. В объективе лучи, соединяющие сопряженные точки в пространстве предметов и изображений, проходят через заднюю главную точку, являющуюся центром проекции (рис. 1.5.3). Из этого основного свойства центральной проекции вытекает математический метод построения изображения: координаты каждой точки изображения могут быть вычислены путем определения точки пересечения прямой, проходящей через предметную точку и центр проекции , с поверхностью проекции (изображения). Если в выбранной объектной системе координат известны координаты точек и , а также уравнение поверхности изображения , то координаты точки изображения определяются в результате решения системы уравнений

Рис. 1.5.3. Общая схема центральной проекции

Поверхность проекции в большинстве случаев можно считать плоской. Это приближение достаточно точно выполняется и для глаза. Хотя светочувствительная поверхность глаза – сетчатка имеет почти сферическую форму, для области ясного зрения, ограниченной угловым размером в несколько градусов, ее вполне можно считать плоской.

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

Если учесть отмеченные особенности центральной проекции в реальных устройствах формирования изображения, то связь координат точек пространства предметов и пространства изображений может быть выражена в иной форме, чем в системе уравнений (1.5.7). Введем систему координат для плоскости изображения, связанную систему координат объектива и систему координат пространства предметов (рис. 1.5.4). Особенность центральной проекции можно выразить следующим образом: векторы и , соединяющие центр проекции с сопряженными точками и , являются коллинеарными. Отсюда следует

где – константа для данной пары точек и .

Рис. 1.5.4. Схема разворотов плоскости изображения

Учитывая, что съемочная камера может быть развернута на углы и относительно осей , из (1.5.8) получаем

, (1.5.8)

где – координаты центра проектирования в системе ; – координаты центра проектирования в системе .

Если учесть, что поверхность проекции является плоской , начало координат системы , как правило, совпадает с главной точкой картинной плоскости , расположенной на расстоянии от , то

. (1.5.9)

Исключая в (1.5.9) константу путем деления первой и второй строк на третью, получаем уравнения, связывающие координаты сопряженных точек в системах и :

Из системы (1.5.10) по координатам точек изображения можно определить координаты сопряженных точек в пространстве предметов, если задано уравнение наблюдаемой поверхности . Затем по координатам точки , уравнению поверхности и известным условиям освещения могут быть определены атрибуты точки (яркость, цвет) и рассчитаны соответствующие атрибуты точки изображения . Описанная здесь кратко процедура синтеза изображений основана на отслеживании луча, исходящего из пространства изображений в пространство предметов, т.е. в направлении, противоположном ходу лучей в реальной системе. Этот подход в машинной графике назовем методом обратного трассирования лучей.

Характерной особенностью центральной проекции является существенное различие в масштабах изображения предметов, находящихся на различных расстояниях от центра проектирования. Это связано с уменьшением угловых размеров предмета (и соответственно с уменьшением линейных размеров в плоскости изображения) при удалении от съемочной сцены. На рис.1.5.5 приведен результат съемки предмета в виде полосы с нанесением на нее рисунка из периодически повторяющихся прямоугольников. Изменение ширины полосы и размеров прямоугольников создает ощущение глубины пространства. Принципиально изображение может быть рассчитано, например, по формулам (1.5.12), но его можно построить с достаточной степенью точности, если задать точку схода лучей. Расчеты с использованием координаты точки схода лучей значительно проще. Потому такой подход широко используется при имитации визуально наблюдаемой обстановки в видеотренажерах.

В центральных проекциях грани отображаемого объекта, параллельные картинной плоскости, изображаются без искажения формы, но с искажением размера.

Рисунок 24 Центральные проекции куба: а) одноточечная, б) двухточечная, в) трехточечная.

Центральные проекции любой совокупности параллельных прямых, которые не параллельны картинной плоскости, будут сходиться в точке схода . Точка схода прямых, параллельных одной из координатных осей, называетсяглавной точкой схода . Т.к. координатных осей три, то и главных точек схода не может быть больше трех.

В зависимости от расположения осей координат и картинной плоскости различают одно-, двух- и трехточечные центральные проекции.

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

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

Рассмотрим более подробно случай одноточечного проецирования точки Р на плоскостьz = 0 с центром проецированияС , лежащим на осиz (рис.25).

Точка A проецируется на экран какA . Расстояние от наблюдателя до проекционной плоскости равноk. Необходимо определить координаты точкиA на экране. Обозначим ихx э иy э. Из подобия треугольниковA y A z N иy э ON находим, что

(x.9)

аналогично для x:

. (x.10)

Рис. 25. Вывод формул центральной проекции.

Рис. 26. Другой способ вычисления координат точек в центральной перспективной проекции.

Напомним, что k -это расстояние, а наблюдатель находится в точке N = (0,0,-k ). Если точку наблюдения поместить в начало координат, а проекционную плоскость на расстояниеa , как показано на рисунке 26, то формулы дляx э и y э примут вид:

,
(x.11)

Формулы (x.10) более удобны при необходимости простым образом приближать или удалять наблюдателя от проекционной плоскости. Формулы (x.11) требуют меньше времени для вычислений за счет отсутствия операции сложения.

Рассмотрим точку трехмерного пространства (a , b , c ). Если представить эту точку как однородное представление точки двумерного пространства, то ее координаты будут (a / c , b / c ). Сравнивая эти координаты со вторым видом формул, выведенных для центральной перспективной проекции, легко заметить, что двумерное представление точки с координатами (a , b , c ) выглядит как ее проекция на плоскостьz = 1, как показано на рис. 27.

Рис. 27. Проекция точки (a , b , c ) на плоскость z = 1.

Аналогично, рассматривая применение однородных координат для векторов трехмерного пространства, можно представить трехмерное пространство как проекцию четырехмерного пространства на гиперплоскость w = 1, если (x , y , z )(wx , wy , wz , w ) = (x , y , z , 1). .

В однородных координатах преобразование центральной перспективы можно определить матричной операцией. Эта матрица записывается в виде:

Покажем, что эта матрица определяет преобразование точки объекта, заданной в однородных координатах, в точку перспективной проекции (также в однородных координатах). Пусть p = (x , y , z ) – точка в трехмерном пространстве. Ее однородное представлениеv = (wx , wy , wz , w ). УмножимvнаP :

это в точности повторяет формулы (x.10), выведенные для центральной перспективы.

Из-за особенностей человеческого зрения к удаленным от наблюдателя объектам лучше применять перспективную проекцию, к достаточно близким (на расстоянии вытянутой руки) – ортографическую или аксонометрическую, а к еще более близким объектам – обратную перспективную проекцию.

Для создания стереоизображений используются две центральные проекции, центры которых совпадают с расположением глаз гипотетического наблюдателя, т.е. они расположены на некотором расстоянии друг от друга на прямой, параллельной картинной плоскости. После выполнения проецирования получают два изображения объекта – для левого и правого глаза. Устройство вывода должно обеспечивать подачу этих изображений к каждому глазу пользователя отдельно. Для этого может использоваться система цветных или поляризационных фильтров. Более сложные устройства вывода (например, шлемы) подают каждое из изображений на отдельные экраны для каждого глаза.

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

kinderglad.ru - Я мама. Учимся готовить. Уход за ребенком. Развитие детей