Случайное движение частиц жидкости известно в физике под названием броуновского движения. Моделирование такого движения демонстрирует весьма интересный подход, который с успехом можно использовать при формировании кривых и поверхностей, имеющих довольно естественный вид. Физики моделируют броуновское движение с помощью ломаной линии, в которой каждая следующая точка излома отстоит на случайно выбранном расстоянии от предыдущей, а ориентация очередного сегмента также случайна. При воспроизведении реального физического процесса очень существенную роль играет настройка функции распределения генератора случайных чисел, принимающего участие в построении траектории. В компьютерной графике мы меньше озабочены обеспечением адекватности модели и физического явления, а значительно важнее для нас скорость вычислений и возможность формировать кривые с настраиваемыми характеристиками "резкости" или "мягкости". Поэтому термин броуновское движение мы будем далее использовать для обозначения любых случайных траекторий, может быть, даже и не имеющих отношения к движению частиц жидкости или газа.

Конечно, формировать траекторию броуновского движения можно и с помощью последовательности отрезков ломаной, задавая для каждого сегмента случайные значения длины и ориентации, но более эффективно воспользоваться рекурсивной процедурой. Рассмотрим линейный отрезок- сегмент траектории, показанный на рис. 11.24,а. Найдем его среднюю точку и разобьем сегмент на два, причем точку стыковки сегментов сдвинем относительно средней точки по нормали к исходному отрезку на случайно выбранное расстояние (рис. 11.24,6). Повторим этот процесс несколько раз, применяя его по отношению ко всем сегментам, построенным в предыдущем цикле. В результате будут построены кривые, примерно такие, как на рис. 11.25. Характеристики генератора случайных чисел, в частности среднеквадратичное отклонение, следует регулировать на каждом цикле, уменьшая его примерно в 2 раза, поскольку длины сегментов на каждом цикле также уменьшаются примерно вдвое. Можно усложнить алгоритм и включить случайный фактор не только в расстояние смещения, но и в его направление. Если отклонение всегда положительно, то будет построена случайная линия горизонта, а если воспользоваться генератором гауссовского центрированного шума со среднеквадратичным отклонением,


⇐ Предыдущая| |Следующая ⇒