BC/NW 2007, №1, (10) :16.9

 

ПОСТРОЕНИЕ РЕАЛИСТИЧНЫХ ЛАНДШАФТОВ С ПОМОЩЬЮ СТОХАСТИЧЕСКИХ ФРАКТАЛОВ С ПРИМЕНЕНИЕМ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ

 

А.С. Целищев, В.А. Логинов

(Москва, Московский энергетический институт (технический университет), Россия)

 

Для построения сложных трёхмерных поверхностей используют различные концепции и методики, основанные на аналитических моделях таких поверхностей или их составляющих. Однако не всегда аналитическая модель позволяет добиться желаемого результата. Так, например, практически невозможно составить набор аналитических выражений для построения поверхности, имитирующей природный ландшафт, что часто необходимо при использовании реалистичной трёхмерной графики в компьютерных играх или фильмах. В рамках исследования возможностей применения двумерного быстрого преобразования Фурье (БПФ), а также методов фрактальной геометрии был предложен вариант генерации трехмерной поверхности, имитирующей горный ландшафт с помощью стохастического фрактала, представленного картой высот.

Text Box:                        Рис. 1. Ландшафт

 

Известно, что в общем случае амплитуда гармоник, составляющих случайный сигнал, равна Af = k / f                     γ . При абсолютно случайном сигнале (белый шум) γ = 0, и амплитуда всех гармоник, как высших, так и низших одинакова, и соседние значения сигнала не зависят друг от друга. Если γ стремится к бесконечности, амплитуды всех гармоник равны нулю, а сигнал – константа. При генерации ландшафта необходимо принять за высоту каждой точки поверхности значения случайного двумерного сигнала с 0<γ<∞. Предложен алгоритм получения такого сигнала для последующего построения ландшафта:

1. Генерация матрицы Dст, n*n элементов. Dст[i,j]  - случайное целое от 0 до r, где r – расстояние между низшей и высшей точками желаемого ландшафта.

2. Проведение двумерного БПФ над Dст. Fст – матрица коэффициентов БПФ размерностью n*n .

3.   Изменение коэффициентов двумерного БПФ для получения амплитудного спектра Af=k / f  γ при сохранении значений фазового спектра (что обеспечит уникальность ландшафта, обусловленную изначальной случайностью элементов Dст [i,j]). В силу специфики двумерного БПФ коэффициенты низших гармоник будут находиться ближе к угловым элементам матрицы Fст., а высших – ближе к центральным.  Таким образом, новые коэффициенты необходимо считать в четырёх циклах (либо в одном объединённом) для каждой четверти матрицы Fст. Так, например, для коэффициентов Fст[i,j]: i=0..n/2, j=0..n/2 (верхняя левая часть матрицы Fст) новые коэффициенты предложено рассчитывать следующим образом:

Fст [i,j]=aст+bст*i коэффициент двумерного БПФ после шага 2.

Fнов [i,j]=aнов+bнов*iкоэффициент двумерного БПФ, посчитанный на шаге 3, где

         aнов=A[i,j]*cos(φ[i,j]) , bнов=A[i,j]*sin(φ[i,j]) , где A[i,j] = k/ (i+j) γ – новый модуль коэффициента Fст [i,j],

         φ[i,j] = arctg(bст/aст) – аргумент Fст [i,j].

4. Проведение обратного БПФ, получение Dнов.

         Dнов – это стохастический фрактал, представленный картой высот [0,r]. Построив его для всех значений Dнов и наложив на поверхность текстуры, можно получить искомый ландшафт. Варьируя γ и k, можно менять характер ландшафта, варьируя элементы Dст[i,j] – его внешний вид. Пример ландшафта, полученного с помощью написанной программы, представлен на рис. 1.