По древней легенде, прекрасная Афродита родилась из морской пены. Как и во многих древних мифах, в этой красивой сказке скрыт глубокий космогонический смысл. В пене действительно есть что-то тайное, метафизическое. Попробуйте пристально вглядеться в структуру пены (для этого, например, можно использовать бокал пива или поролоновую губку). В этих эфемерных трехмерных кружевах интуитивно угадываются некие базовые проэлементы будущих клеточных тканей живых организмов. Именно пена, которая образовывалась на поверхности первичного океана Земли миллиарды лет назад, послужила той изначальной субстанцией, из которой впоследствии возникла жизнь. Этот процесс физико-химической самоорганизации продолжался многие миллионы лет и занял гораздо больше времени, чем вся последующая биологическая эволюция. Древняя пена постепенно усложнялась, обогащалась сложными химическими веществами, обретала способность к самовоспроизведению, дыханию и, наконец, ожила. Представить себе величественный космический процесс становления жизни можно, обратившись к удивительной живописной серии известного литовского композитора и художника Чурлёниса. По признанию самого автора, он собирался работать над этой серией всю свою жизнь. Рисунки объединены под общим названием "Сотворение мира" и отображают различные стадии эволюции от первичного сгустка космической плазмы до образования ростков жизни в древнем, возможно, неземном, планетарном океане (ознакомиться с серией "Сотворение мира" можно по адресу neris.mii.lt/art/ciurlionis/creation/cretion.html).
Такой поток ассоциаций нахлынул на меня после посещения очень интересного сетевого ресурса под названием "Арбуз или угощение для технической интеллигенции" (www.arbuz.narod.ru). Читателям, интересующимся различными занимательными математическими феноменами и программированием, я настоятельно рекомендую посетить этот адрес - не пожалеете. В числе прочего на сайте выложена и страничка о пузырях и пене. Идея алгоритма проста. Вначале случайным образом разыгрывается некоторое заданное количество точек на участке плоскости. Это центры будущих пузырей. Далее последовательно для каждой точки строящегося изображения вычисляются расстояния от нее до всех центров. Из них выбирается наименьшее, и, в зависимости от его значения, точка окрашивается в соответствующий тон. В результате получается некое подобие пены. В программе, выложенной на сайте, включен дополнительный цикл для пузырьковой сортировки (в данном случае термин "пузырьковая сортировка", как вы понимаете, никак не связан с обсуждаемой темой) расстояний. Это, по-моему, будет здорово замедлять работу программы с ростом количества пузырей. Поэтому я переписал программный код следующим образом:
Dim i As Byte Dim n As Byte Dim x_bubble(100) As Integer Dim y_bubble(100) As Integer Dim x As Integer Dim y As Integer Dim r(100) As Single Dim r_min As Single Dim PointColor As Long
Private Sub Form_Click() Cls Randomize n = 25 For i = 1 To n x_bubble(i) = Rnd * 500 y_bubble(i) = Rnd * 500 Next i For x = 1 To 500 For y = 1 To 500 r_min = 2000 For i = 1 To n r(i) = Sqr((x_bubble(i) - x) ^ 2 + (y_bubble(i) - y) ^ 2) If r_min > r(i) Then r_min = r(i) Next i PointColor = RGB(255 - Int(r_min), 255 - Int(r_min), 255 - Int(r_min)) PSet (x, y), PointColor Next y Next x End Sub
Варьируя коэффициенты при различных цветовых компонентах в функции RGB, можно получать пену различных цветовых оттенков. Если же изменять количество исходных центров пузырей, то итоговая пена будет получаться различной степени насыщенности. С помощью приведенного программного фрагмента я получил несколько загадочных изображений, напоминающих не то молекулы, не то кладки икры инопланетной твари. Одно из них я даже сделал покрытием для рабочего стола. Как это ни парадоксально, но у многих людей эти картинки вызывают некие устойчивые эротические ассоциации. Не правда ли, напоминает известный анекдот о том, как пациент спрашивает у доктора, демонстрирующего ему психологические тесты в виде квадратов и треугольников: "Доктор, а откуда у вас такие неприличные картинки?".
А. КОЛЕСНИКОВ,
andr61@mail.ru
Комментарии