exam27 - MiAneko24/bmstu-cg GitHub Wiki
27. Алгоритм Робертса. Формирование матрицы тела. Удаление нелицевых граней.
Алгоритм Робертса удаляет невидимые линии. Для него необходимо чтобы все изображаемые тела были выпуклыми. Если тело невыпуклое необходимо разбить его на выпуклые составляющие
Основные этапы решения задачи:
- Подготовка исходных данных
- Удаление рёбер (или граней), экранируемых самим телом
- Удаление рёбер, экранируемых другими телами
- Удаление линий пересечения тел, экранируемых самими телами, связанными отношением протыкания и другими телами
В этом алгоритме выпуклое многогранное тело должно представляться набором пересекающихся плоскостей. Уравнение произвольной плоскости имеет вид:
ax + by + cz + d = 0
Тогда любое выпуклое твердое тело можно выразить матрицей тела, состоящей из коэффициентов уравнений плоскостей
(вот вопрос к вам мужики, надо найти коэффы, а у нас какбы КГ а не вычалг че может не надо про это писать?)
Матрица тела должна быть сформирована корректно, то есть любая точка, расположенная внутри тела, должна располагаться по положительную сторону от каждой грани тела (при подстановке координат точки в уравнение результат положителен). Если для очередной грани это условие не выполняется, то соответствующий столбец матрицы надо умножить на -1.
Как тестирующую точку можно взять барицентр.
Если вдруг необходимо также преобразовать тело, то надо матрицу исходного тела слева умножить на обратную матрицу преобразования:
Cледующий этап, удаление ребер, экранируемых самим телом.
Необходимо определить вектор взгляда наблюдателя, если наблюдатель располагается в +бесконечности на оси Z и смотрит в сторону начала координат:
E = (0, 0, -1, 0) = вектор взгляда наблюдателя.
Для определения невидимых граней следует вектор Е умножить на матрицу тела V. Отрицательные компоненты полученного вектора будут соответствовать невидимым граням. Невидимые ребра образуются пересечением невидимых граней.
Если тело одно, алгоритм закончен.
Следующий вопрос: 28. Алгоритм Робертса. Удаление отрезков, экранируемых другими телами.
Предыдущий вопрос: 26. Алгоритм Робертса. Основные этапы и математические основы каждого этапа.