|
Код на Visual Basic для построения фрактальных изображенийЭтот код написан на VB4. Код обрабатывает события мыши и использует 16 цветов для окрашивания.После загрузки кода в новую форму (form1) необходимо уменьшить ее размер до 3500 твипсов по ширине и высоте. При нажатии правой клавиши мыши генерируется изображение фрактала Мандельброта, нажатие левой клавиши генерирует фрактал Жюлиа (Изображения получаемые по умолчанию представлены в конце страницы). Изменяя переменные и алгоритм раскрашивания вы получите другие отображения. Dim NX As Integer, NY As Integer, M As Integer Dim c_real As Single, c_img As Single, dcr As Single Dim dci As Single, z_current_real As Single Dim z_real As Single, z_img As Single, z_magnitude As Single Dim crmin As Single, crmax As Single, cimin As Single, cimax As Single Dim Aa As Byte, colorr As Byte, Bb As Byte, kk As Byte, tt As Byte, L As Byte Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case Button Case 1 'Julia set Form1.Cls Xmin = -1.5: Ymin = -1.5: Xmax = 1.5: Ymax = 1.5 Form1.Scale (Xmax, Ymin)-(Xmin, Ymax) 'Установка масштаба формы как комплексной плоскости NX = 250: NY = 250 'Разрешение экрана L = 10 'Максимальный предел для z_magnitude M = 100 'Максимальное число итераций dcr = (Xmax - Xmin) / (NX - 1) 'Определение шага для получения точки real dci = (Ymax - Ymin) / (NY - 1) 'Определение шага для получения точки img c_real = 0.32 'Определение фиксированной переменной c_img = 0.043 'Определение фиксированной переменной For I = 0 To NX real = Xmin + I * dcr For J = 0 To NY img = Ymin + J * dci z_real = Xmin + I * dcr 'Определение динамической переменной z_img = Ymin + J * dci 'Определение динамической переменной counter = 0 For counter = 0 To M z_current_real = z_real z_real = z_real ^ 2 - z_img ^ 2 + c_real z_img = 2 * z_current_real * z_img + c_img z_magnitude = z_real ^ 2 + z_img ^ 2 If z_magnitude> L Then tt = counter / 7: Exit For При увеличении числа итераций измените число 7 так чтобы tt не превышало 15 Next counter If z_magnitude < L Then Form1.PSet (real, img) Else Form1.PSet (real, img), QBColor(tt) Next J Next I Case 2 'Mandelbrot set Form1.Cls crmin = -2.25: cimin = -1.5: crmax = 0.75: cimax = 1.5 Form1.Scale (crmin, cimax)-(crmax, cimin) Ll = 10: Mm = 100 Aa = 250: Bb = 250 dcr = (crmax - crmin) / (Aa - 1) dci = (cimax - cimin) / (Bb - 1) For I = 0 To Aa c_real = crmin + I * dcr For J = 0 To Bb c_img = cimin + J * dci z_real = 0: z_img = 0: counter = 0 For counter = 0 To Mm z_current_real = z_real z_real = z_real ^ 2 - z_img ^ 2 + c_real z_img = 2 * z_current_real * z_img + c_img z_magnitude = z_real ^ 2 + z_img ^ 2 If z_magnitude> Ll Then colorr = counter / 7: Exit For Next counter If z_magnitude> Ll Then Form1.PSet (c_real, c_img) Else Form1.PSet (c_real, c_img), QBColor(colorr) Next J Next I End Select End Sub
К началу текста |