Рш - 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">⇐ Предыдущая| |Следующая ⇒