14.8.2. Эксперименты с генераторами случайного шума Приведенный в листинге 14.11 конструктор noise основан на свойствах стандартной С-функции randO, которую неправильно называют генератором случайных чисел (random-number generator - RNG), хотя она не выдерживает некоторых статистических тестов. (Поиск RNG в Интернете быстро приводит нас к странице http://stat.fsu.edu/~geo/, поддерживаемой Джорджем Марсалья (George Marsaglia), где производится тестирование RNG.) Разрабатываются более совершенные RNG, однако они становятся значительно сложнее. Поищите в Сети исходники улучшенных RNG и обсуждение их свойств.
14.8.2. Наложение изображений на поверхности В главе 8 мы уже рассматривали вопрос о том, как накладывать (paste) изображения на полигональные поверхности при помощи OpenGL В данном разделе мы рассмотрим, как накладывать изображения на произвольные криволинейные поверхности в рамках трассировщика лучей. Подпрограммы для этой операции просты, а результаты могут получиться превосходными, однако для их работы обычно требуется больше компьютерного времени, чем при работе с OpenGL. Каждый пиксел вычисляется индивидуально, причем нельзя использовать никакой связности строк развертки.
14.8. Наложение текстуры на поверхности Как в главе 8, предположим, что определена двумерная текстурная функция texture(«, v), каждый из аргументов которой миг; изменяется от 0 до 1, определяющая интенсивность или цвет в каждой точке (ы, v). Функция texture(M, v) может быть процедурной текстурой, такой как шахматная доска или множество Мандельброта, а может быть текстурой изображения, хранящегося в пиксельной карте. Пусть такая пиксельная карта организована как массив пиксельных значений Nna М, обозначенный txtr[][]. Тогда, задавая значения и и v в пределах от нуля до единицы, мы можем указывать на соответствующий пиксел массива txtr простым вызовом
txtr[ (int) (u*N)] [ (int) (v*M)].
Проще наложить текстуру на базовый объект, чем на объект, преобразованный в координаты сцены. Дизайнер связывает текстурные координаты с координатами базового объекта таким образом, что при преобразовании объекта в координаты сцены текстура корректно (и с нужными пропорциями) отображалась на преобразованном объекте.