Рш - eye + dir,. /hit (точка соударения). (14.4)
Введение в трассировку лучей
14.4. Пересечение луча с объектом С помощью времени природа не дает произойти всему сразу.
Неизвестный Ничто не озадачивает меня больше, чем время и пространство; и ничто не беспокоит меня меньше, ибо я никогда не думаю о них.
Чарльз Лэм (Charles Lamb)
В главе 5 мы ввели класс Scene, который может читать файл на языке SDL и строить список объектов сцены. Мы будем использовать этот инструмент и при трассировке лучей, строя сцену с помощью следующего кода:
Scene sen:
// create a scene
// создаем сцену
sen.read("myScene.dat");
// read the SDL scene file
// читаем SDL-файл сцены
Объекты сцены создаются и помещаются в список. Каждый объект является экземпляром «базовой» формы типа сферы или конуса вместе со своим аффинным преобразованием, которое определяет, как данный объект масштабирован, ориентирован в пространстве и где помещен на сцене. Некоторые из таких базовых форм мы ввели в главе 6. На рис. 14.5 приведены некоторые базовые формы, для которых мы будем строить ход луча.
Рис. 14.5. Некоторые основные базовые формы, используемые при трассировке луча В то время как в главе 5 для рисования объектов мы использовали OpenGL (посредством метода drawOpenGLO, разработанного нами для каждого типа формы), здесь мы будем рисовать их с помощью трассировки луча. Это означает, что мы ищем точку пересечения луча с каждым объектом сцены. Как мы увидим в дальнейшем, проще всего это сделать, используя неявную форму каждой из фигур, рассмотренную в разделе «Представления поверхностей» главы 6. Например, неявная форма для базовой сферы имеет вид"opengl1_928.html">⇐ Предыдущая| |Следующая ⇒