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

Болотов В.П.

Рассматривается использование генератора случайных чисел/ГСЧ/ для нахождения не только оптимального результата того или иного явления, но и для моделирования, с помощью графических (а для явлений - абстрактных) примитивов, его графического образа. Оптимальный результат достигается здесь посредством корректирования диапазона случайных чисел (например, выбрать больше тех или иных, исключить те или иные и т.п.), коррекции самого результата (например, сочетаний тех-то должно быть на столько-то больше других) и т.п. Рассмотрим простые примеры, поясняющие сущность предложения.

Пример 1. Пусть на некотором поле посажены помидоры. Требуется графически смоделировать поле, кусты помидоров, а на них красные и зеленые помидоры. Поступаем следующим образом: на поле выбираем несколько небольших опытных участков и на каждом из них просчитываем число кустов, фиксируя диапазон его изменения, например до, 5. Также просчитываем количество красных и зеленых помидоров на каждом кусте. Пусть зеленых помидоров встречается от трех до семи, красных - от нуля до четырех.

В системе "Вектор" моделируем поле прямоугольником, разбивая его на участки, соответствующие опытным участкам. С помощью ГСЧ для каждого участка находим число кустов, учитывая, например, что участков с 3- 4 кустами на 30% больше, чем кустов с 1, 2 и 5 кустами. Далее моделируем (рис.1) количество помидоров на каждом кусте, считая, что четыре и пять зеленых помидоров на 40 % больше остальных. Далее с помощью ГСЧ можно также найти вес помидоров, зная диапазон изменения их веса. В последнем случае обращение к ГСЧ оформляется в системе "Вектор" рекурсивно (см., например, МК rhi).
В примере 1 был рассмотрен простой пример моделирования на основе ГСЧ. Применение ГСЧ при моделировании может быть самым разнообразным, например, поиск сочетания тех или иных чисел с учетом чисел ,при которых они определяются, и т.п.

Рис. 1

 Пример 2. Броуновское движение. Траектории движения частиц моделируем отрезками прямых в декартовой системе координат. Начало движения задаем (в МК broun0 т. р101), конец и направление отрезка определяем с помощью ГСЧ. Координаты отрезка находим в диапазоне до 75 мм (см МК broun). Направление определяем из сочетания до двух: если выпала 1, то направление положительное, если 0 - отрицательное.

На рис. 2 показано движение одной из четырех частиц, полученных в системе "Вектор", а ниже приведена макрокоманда, генерирующая движение одной частицы в цикле до 40 шагов. Выбор значений координат концов отрезков (т. р102) осуществляется с помощью ГСЧ (МК chiclo) в диапазоне до 75 мм, цвет отрезков определяется в МК задания отрезка прямой tprin целым числом (в диапазоне 8-14 с исключением темных цветов), которое, в свою очередь, определяется МК rhi на основе ГСЧ. При этом, вычисляя каждый раз длину отрезка и помещая его в определенный регистр, можно вычислить весь путь, пройденный частицей.

<broun0> МК построения движения точки
broun : p101 = 75.0, 0.0

<broun> МК построения движения точки

n1 > 40 ? exit
$  p101=0.0,0.0
chiclo : n99=75
n11=n191
chiclo : n99=75
n12=n191
chiclo : n99=2
n15=n191
chiclo : n99=2
n16=n191
: s11=n11 s12=n12
n15 <> 0 ? x102=x100+s11
n15 <> 1 ? x102=x100-s11
n16 <> 0 ? y102=y100+s12
n16 <> 1 ? y102=y100-s12
rhi
tprin: n9=n191 $ MK построения отрезка прямой
broun : p101=p102  n1=n1+1 $ рекурсивный сикл
<tprin> МК задания отрезка прямой и ее цвета

23
8  n9 06 07
32
_Линии_общего_назначения
_Отрезок_прямой_______________
 _Начальная_точка___=_( x101    y101    80.0
 _Кoнeчная_точка____=_( x102   y102    80.0
 _Число_выводимых__точек_= 02
 _Визуализация__по_стандартным_проекция
 _Выход
 _Выход
_Выход

<chiclo>  МК вычисления случайного числа
_Случайное_число_до_ n99
$  результат в n191
<rhi>  МК вычисления
случайного числа в диапозоне 8-14
_Случайное_число_до_ 14
n191 < 8  ? goto met
exit
$ met
rhi  $ рекурсивный сикл
 
 Рассмотрим применение случайных последовательностей при моделировании геометрических форм реалистических сцен. Дело в том, что освещенность объекта зависит от угла падающих на него лучей: чем больше угол с поверхностью, тем больше освещенность. Но такая интерпретация не всегда приводит к хорошему результату, по сравнению с действительностью. Поэтому предложен алгоритм случайного распределения (размы-вания) границ света и сглаживания полутонов, направленный на устранение дефекта изображения, порождаемого дискретностью шкалы уровней яркости, обеспечиваемой в графических режимах ПЭВМ. Дефект проявляется в явно видимых на изображении линейных границах между полутонами, что существенно снижает реалистичность восприятия изображения. Суть предложенного метода заключается в использовании для сглаживания яркостной границы некоторой случайной функции. В результате граница размывается, и переход от одного дискретного уровня яркости к другому происходит плавно. Формально алгоритм можно представить следующим образом:
n=FLOOR(u)+RAND(u-FLOOR(u)),
где n - уровень яркости; FLOOR(x) - целая часть от x,
RAND(x) - случайная функция, имеющая значения: 1 - с вероятностью х или  0 - с вероятностью 1-х;
u - аналоговые значения сигнала в диапазоне от 0 до N, где N - максимальное значение уровня яркости.

Другим применением случайных чисел может быть моделирование обрастание корпуса судна. На рис. 3-5 показаны некоторые примеры такого моделирования.

Упражнение (Великая теорема Ферма). Используя ГСЧ, найти тройку целых положительных чисел x, y, и a, удовлетворяющих уравнению.