30697-1 (Трёхмерная компьютерная графика), страница 6

2016-07-31СтудИзба

Описание файла

Документ из архива "Трёхмерная компьютерная графика", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "30697-1"

Текст 6 страницы из документа "30697-1"

ах + by + cz + d = 0 (3.1)

В матричной форме это выглядит так:

или

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

где каждый столбец содержит коэффициенты одной плоскости.

Напомним, что любая точка пространства представима в однородных координатах вектором

Более того, если точка [S] лежит на плоскости, то [S]*[P]T = 0. Если же [S] не лежит на плоскости, то знак этого скалярного произведения показывает, по какую сторону от плоскости расположена точка. В алгоритме Робертса предполагается, что точки, лежащие внутри тела, дают положительное скалярное произведение.

Хотя уравнение плоскости (3.1) содержит четыре неизвестных коэффициента, его можно нормировать так, чтобы d = 1 следовательно, трех неколлинеарных точек достаточно для определения этих коэффициентов. Подстановка координат трех неколлинеарных точек (x1, y1, z1), (x2, y2, z2), (x2, y2, z2) в нормированное уравнение (3.1) дает:

ax1 + by1 + cz1 = 1

ax2 + by2 + cz2 = 1

ax3 + by3 + cz3 = 1

В матричной форме это выглядит так:

или

(3.2)

Решение этого уравнения дает значения коэффициентов уравнения плоскости:

Другой способ используется, если известен вектор нормали к плоскости, т. е.

n = ai + bj + ck

где i, j, k - единичные векторы осей x, y, z соответственно. Тогда уравнение плоскости примет вид

ax + by + cz + d = 0(3.3)

Величина d вычисляется с помощью произвольной точки на плоскости. В частности, если компоненты этой точки на плоскости (х1, y1, z1) то:

d = (aх1 + by1 + cz1) (3.4)

Поскольку объем вычислений в алгоритмах удаления невидимых линий или поверхностей растет с увеличением числа многоугольников, для описания поверхностей выгодно использовать многоугольники с более чем тремя сторонами. Эти многоугольники могут быть как невыпуклыми, так и неплоскими. Метод, предложенный Мартином Ньюэлом, позволяет найти как точное решение для уравнений плоскостей, содержащих плоские многоугольники, так и “наилучшее” приближение для неплоских многоугольников. Этот метод эквивалентен определению нормали в каждой вершине многоугольника посредством векторного произведения прилежащих ребер и усреднения результатов. Если a, b, c, d – коэффициенты уравнения плоскости, то

(3.5)

где

if i =n then j = 1 else j = i + 1

а d вычисляется с помощью любой точки на плоскости.

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

Если [В] - матрица однородных координат, представляющая исходные вершины тела, а [Т] - матрица размером 4х4 видового преобразования, то преобразованные вершины таковы:

[ВТ] = [В][T] (3.6)

где [ВТ] - преобразованная матрица вершин. Использование уравнения (3.2) позволяет получить уравнения исходных плоскостей, ограничивающих тело:

[В][V] = [D] (3.7)

где [V] - матрица тела, а [D] в правой части - нулевая матрица. Аналогично уравнения преобразованных плоскостей задаются следующим образом:

[ВТ][VТ] = [D] (3.8)

где [VТ] - преобразованная матрица тела. Приравнивая левые части уравнения (3.7) и (3.8), получаем

[ВТ][VT] = [В][V]

Подставляя уравнение (3.6), сокращая на [В] и умножая слева на

[T]-1 имеем

[VT] = [T]-1[V]

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

3.8 Не лицевые плоскости

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

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

который служит, кроме того, образом точки, лежащей в бесконечности на отрицательной полуоси z. Фактически [Е] представляет любую точку, лежащую на плоскости z = , т. е. любую точку типа (x, y, ). Поэтому, если скалярное произведение [Е] на столбец, соответствующий какой-нибудь плоскости в матрице тела, отрицательно, то [Е] лежит по отрицательную сторону этой плоскости. Следовательно, эти плоскости невидимы из любой точки наблюдения, лежащей в плоскости z = , а пробная точка на z = экранируется самим телом, как показано на рис. 3.8. Такие плоскости называются не лицевыми, а соответствующие им грани задними. Следовательно,

[Е][V] < 0

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

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

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

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

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

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

Для сравнения отрезка P1P2 с телом удобно использовать параметрическое представление этого отрезка:

Р(t) = P1 + (Р2 - P1)t 0 t 1

v = s + dt

где v - вектор точки на отрезке, s - начальная точка, d - направление отрезка. Необходимо определить, будет ли отрезок невидимым. Если он невидим, то надо найти те значения t, для которых он невидим. Для этого формируется другой параметрический отрезок от точки Р(t) до точки наблюдения g:

Q(a,t) = u = v + ga = s + dt + ga 0 t 1, a 0

Здесь a и t выполняют аналогичные функции. Заданное значение t указывает точку на отрезке P(t), а a указывает точку на отрезке, проведенном от точки P(t) до точки наблюдения. Фактически Q(a,t) представляет собой плоскость в трехмерном пространстве. Пара (a,t) определяет точку на этой плоскости. Значение a положительно, поскольку тела, экранирующие P(t) могут находиться только в той части этой плоскости, которая заключена между отрезком P(t) и точкой наблюдения.

Скалярное произведение любой точки, лежащей внутри тела, на матрицу тела положительно. Если же точка лежит внутри тела, то она невидима. Поэтому для определения части отрезка, которая экранируется телом, достаточно найти те значения a и t, для которых скалярное произведение Q(a,t) = u на матрицу тела положительно.

3.9 Схема решения относительно a и t

Это скалярное произведение равно:

h = u * [VT] = s * [VT] + td * [VT] + ag * [VT] >0 0 t 1, a 0

Если все компоненты h неотрицательны для некоторых t и a, отрезок при этих значениях t экранируется данным телом. Обозначим

p = s * [VT]

q = d * [VT]

w = g * [VT]

запишем условия в виде

hj = pj + tqj + awj 0 t 1, a 0

где j - номер столбца в матрице тела. Эти условия должны выполняться при всех значениях j, т. е. для всех плоскостей, ограничивающих объем тела. Пограничный случай между видимостью и невидимостью возникает, когда hj = 0. При hj = 0 точка лежит на плоскости. Полагая hj = 0 для всех плоскостей, мы получим систему уравнений относительно a и t, которые должны удовлетворяться одновременно. Результат можно получить путем совместного решения всевозможных пар уравнений из этой системы, при этом будут найдены все значения a и t, при которых изменяется значение видимости отрезка. Схема решения показана на рис. 3.10. Число возможных решений при j уравнениях (плоскостях) равно j(j 1)/2. Каждое решение в диапазонах 0 t 1, a 0, подставляется во все остальные уравнения для проверки того, что условие hj 0 выполнено. Поиск корректных решений производится для того, чтобы найти минимальное среди максимальных значений параметра t(tminmax) и максимальное среди минимальных значений t(tmaxmin). Отрезок невидим при (tmaxmin) < t < (tminmax). Последнее требование является простым следствием из классической задачи линейного программирования.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5161
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее