Удаление невидимых линий. Этапы алгоритма Робертса. Лицевые не лицевые грани. Идея определения нелицевых граней.




Работа Алгоритм Робертса проходит в два этапа:

1. Определение нелицевых граней для каждого тела отдельно.

2. Определение и удаление невидимых ребер.

Пусть F — некоторая грань многогранника. Плоскость, несущая эту грань, разделяет пространство на два подпространства. Назовем положительным то из них, в которое смотрит внешняя нормаль к грани. Если точка наблюдения – в положительном подпространстве, то грань – лицевая, в противном случае – нелицевая. Если многогранник выпуклый, то удаление всех нелицевых граней полностью решает задачу визуализации с удалением невидимых граней.

Для определения, лежит ли точка в положительном подпространстве, используют проверку знака скалярного произведения (l, n), где l – вектор, направленный к наблюдателю, фактически определяет точку наблюдения; n – вектор внешней нормали грани. Если (l, n) > 0, т. е. угол между векторами острый, то грань является лицевой. Если (l, n) < 0, т. е. угол между векторами тупой, то грань является нелицевой.

Алгоритма Робертса. Получение и проверка матрицы тела. Построение матрицы тела по трем точкам.

Уравнение произвольной плоскости в трехмерном пространстве имеет вид

aх + by + cz + d = 0 (17.1.)

В матричной форме этот результат выглядит так: [ x y z 1][ P ] T = 0, где [ P ] T = [ a b c d ] представляет собой плоскость. Поэтому любое выпуклое твердое тело можно выразить матрицей тела, состоящей из коэффициентов уравнений плоскостей, т. е. [ V ] = ,где каждый столбец содержит коэффициенты одной плоскости.

Шесть плоскостей, описывающих данный куб, таковы: x 1 = 1/2,

x 2 = -1/2, y 3 = 1/2, y 4 = -1/2, z 5 = 1/2, z 6 = -1/2. Более подробно уравнение правой плоскости можно записать как x 1 + 0× y 1+ 0× z 1- (1/2) = 0 или 2 x 1 - 1 = 0

Полная матрица тела такова:

[ V ]= = .

ПРОВЕРКА МАТРИЦЫ

Экспериментально проверим матрицу тела с помощью точки, о которой точно известно, что она лежит внутри тела. Если знак скалярного произведения для какой-нибудь плоскости больше нуля, то соответствующее уравнение плоскости следует умножить на -1. Для проверки возьмем точку внутри куба с координатами x = 1/4, y = 1/4, z = 1/4. В однородных координатах эта точка представляется в виде вектора

[ S ] = [1/4 1/4 1/4 1] = [1 1 1 4]. Скалярное произведение этого вектора на матрицу объема равно

[ S ]×[ V ] = [1 1 1 4] × = [-2 6 -2 6 -2 6].

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

[ V ] = .

ПОСТРОЕНИЕ ПО 3М ТОЧКМ

Хотя уравнение плоскости содержит четыре неизвестных коэффициента, его можно нормировать так, чтобы d = 1. Следовательно, трех неколлинеарных точек достаточно для определения этих коэффициентов. Подстановка координат трех неколлинеарных точек (x 1, y 1, z 1), (x 2, y 2, z 2), (х 3, у 3, z 3) в нормированное уравнение (17.1.) дает

ax 1 + by 1 + cz 1 = -1;

ax 2 + by 2 + cz 3 = -1;

ax 3 + by 2 + cz 3 = -1.

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

или [X][C] = [D] (17.2.)

Решение этого уравнения дает значения коэффициентов уравнения плоскости: [C] = [X]-1[D]. Другой способ используется, если известен вектор нормали к плоскости, т. е.

n = a i + b j + c k, где i, j, k – единичные векторы осей х, у, z соответственно. Тогда уравнение плоскости примет вид ax + by + cz + d = 0

Величина d вычисляется с помощью произвольной точки на плоскости. В частности, если компоненты этой точки на плоскости (х 1, у 1, z 1), то d = -(ax 1 + by 1 + cz 1)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: