Вопросы к 27 - p1xelse/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) Можем найти невидимую грань. А мы говорим про каркасную модель и ребра; не получится так, что нужно решить одну задачу, а решили совсем другую?

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