Вопросы к 40
Не зависит. Зависит только от источника света.
Смотря где наблюдатель. Если наблюдатель в одном месте с источником света теней не будет. (ну и расположение объектов)
Собственные (тень самого объекта) и проекционные (тень от другого объекта).
Чтобы найти собственную тень нужно воспользоваться первым этапом алгоритма Робертса. А именно определить нелецевые грани, совместить точку источника света с точкой наблюдения.
Чтобы найти проекционную тень нужно найти проекцию невидимых граней на объекты.
Тени, которые видит наблюдатель. Найти их можно используя алгоритмом Робертса. Нас будут интересовать грани, дающие видимую тень.
-
Должна быть в тени.
-
Должна быть лицевой для наблюдателя.
Когда наблюдатель смотрит из того же места, где расположен источник
Задачу по Робертсу даёт. Рисует тебе фигурку объёмную, надо составить матрицу тела, определить освещенные и теневые поверхности. И найти видимую тень.
Строишь матрицу тела
Каждая грань задаётся уравнением ax + by + cz + d = 0
Матрица тела:
(a1 a2 a3 ... a6
b1 b2 b3 ... b6
c1 ...
d1 ...)
Потом нормализуешь матрицу
Нужно, чтобы точка внутри этого тела лежала по одну сторону от всех этих граней
Все столбцы, где -1, в матрице тела надо умножить на -1
Далее берешь вектор наблюдения
И умножаешь на матрицу тела
Отрицательные - не видно
Положительные столбцы - видно
Нули - вектор параллелен плоскости
Потом у тебя есть вектор, откуда падает свет
Умножаешь его на матрицу тела
Получаешь теневые/светлые по тому же правилу
Потом выбираешь те грани из результатов, которые нужны
И вуаля
Если грань теневая и невидимая, то она в списке невидимых и в списке теневых
Записываешь ее уравнение вида ax + by + cz + d= 0 в ответ