Arhn - архитектура программирования

алгоритм трассировки лучей - несколько вопросов

несколько вопросов по алгоритму трассировки лучей:

  1. Подскажите, пожалуйста, правильно ли я понял алгоритм трассировки лучей?

он получает первый объект, который пересекается с лучом

(если пересечений нет, то гаснет)

затем, если объект отражающий, он рекурсивно посылает луч отражения и вычисляет его цвет.

если объект прозрачен, он рекурсивно отправляет луч преломления и вычисляет его цвет.

какая последняя строчка?:

 return shade(reflactColor, refractColor,p,obj)

он вычисляет цвет, выполняя среднее значение из значений ReflectColor и refractColor или что-то в этом роде?

2 . где теневой луч? это не часть алгоритма

3 . и последнее... зачем нам рекурсивность?

введите здесь описание изображения


Ответы:


1

Похоже, вы хорошо разбираетесь в алгоритме.

Последняя строка выглядит так, как будто вычисляет какую-то взвешенную комбинацию отраженного и преломленного цветов.

Кроме того, вы правы в том, что трассировка теневых лучей не включена в базовый алгоритм, который вы приложили к своему сообщению. Однако его легко добавить, направив луч на источник света и определив, есть ли пересечение между объектом, в который вы попали, и источником света. Если есть, то свет закрыт, и объект не должен быть освещен в этой точке.

Чтобы объяснить рекурсию, можно представить себе пару зеркал, обращенных друг к другу. Вы получите эффект бесконечного зеркала (в реальной жизни). Если вы не рекурсивно и только один раз отбрасываете отражающие/преломляющие лучи, ваши виртуальные зеркала (или отражающие поверхности в целом) будут отражать только другие объекты, а не отражения других объектов. (Так что никаких бесконечных зеркальных эффектов. :( )

03.07.2014
  • если есть теневой луч....объект не должен быть освещен или мы просто не учитываем этот конкретный источник света? 03.07.2014
  • В простейшем случае (один источник света) объект в этой точке вообще не освещен. При наличии нескольких источников света вы можете использовать среднее значение, средневзвешенное значение или другие методы, чтобы выяснить, каким должен быть вклад. 03.07.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..