Вопросы к 27 - chrislvt/CG GitHub Wiki
В этом вопросе нужна картиночка
1) Какую задачу решает Робертс?
Алгоритм используется для удаления невидимых линий, работает в объектном пространстве и работает только с выпуклыми телами, поэтому перед запуском алгоритма необходимо сначала проверить, является ли оно выпуклым.
Перед началом применения алгоритма нужно подготовить исходные данные, в качестве исходных данных выступает матрица размерностью 4хN, (4 строки и N столбцов, N – это варьируемое число, зависит от количества граней; тк грань содержится в какой-то плоскости и уравнение плоскости задается уравнением ax + by + cz + d = 0, эти 4 параметра (a, b, c, d) составляют один столбец, поэтому имеем 4 строки) .
2) Что собой представляет матрица тела?
Матрица тела представляет собой коэффициенты плоскостей, проходящих через каждую грань тела.
3) Как проверить, правильно ли сформирована матрица?
Для этого нужно взять какую-либо точку, которая лежит внутри нашего объекта (н-р, можно найти усредненные значения вершин и получим какую-то точку в середине объекта). Далее вектор этой точки умножим на составленную нами матрицу. В полученном векторе надо найти отрицательные элементы, они соответствуют некорректно сформированным уравнениям плоскостей. Соответствующий столбец надо умножить на -1.
4) С какими телами справляется этот алгоритм (выпуклыми или невыпуклыми)?
С выпуклыми телами.
5) Какое требование мы предъявляем к матрице?
Любая точка, находящаяся внутри нашего тела, должна находиться по положительную сторону от каждой грани тела.
6) Как определить нелицевые грани?
Наблюдатель находится на положительной полуоси Oz, а вектор его взгляда будет (0, 0, -1). Если мы поделим на конечное w, то мы получим однородные координаты (0, 0, (-1)/0). (-1)/0 является минус бесконечностью.
7)Как будет находиться точка в минус бесконечности по отношению к другим граням?
По отношению к граням, которым она невидима она будет отрицательной.
8) Можем найти невидимую грань. А мы говорим про каркасную модель и ребра; не получится так, что нужно решить одну задачу, а решили совсем другую?
Нет, не получится, потому что невидимые ребра можно получить из пересечения двух невидимых граней, а во-вторых, если у нас грань невидима, то и ребра ее невидимы.