Задание для выполнения лабораторной работы

1) Изучите тему фракталы, используя материалы Интернет и отразите изученное в отчете представив теоретический и графический материалы (ориентировочно 2-3 страницы);

2) Введите готовый текст программы в VBasic 6.0, запустите программу и получите изображения для множества Жюлиа (клик левой кнопкой мыши по форме) и Мандельброта (клик правой кнопкой мыши по форме);

3) Измените в тексте программы исходные значения согласно таблице и получите новые изображения;

4) Сделайте вывод: как зависят изображения от входных данных?

фрактал Жюлиа фрактал Мандельброта
c_real c_img Xmin...Xmax Ymin...Ymax
-0.12375 0.56508 -1.8..1.8 -1.8...1.8
-0.12 0.74 -1.4...1.4 -1.4...1.4
-0.481762 -0.531657 -1.5...1.5 -1.5...1.5
-0.39054 -0.58679 -1.5...1.5 -1.5...1.5
0.27334 0.00742 -1.3...1.3 -1.3...1.3
-0.11 0.6557 -1.5...1.5 -1.5...1.5
-1.25   -1.8...1.8 -1.8...1.8
0.11031 -0.67037 -1.5...1.5 -1.5...1.5
-0.194 0.6557 -1.5...1.5 -1.5...1.5
-0.15652 1.03225 -1.7...1.7 -1.7...1.7
-0.74543 0.11301 -1.8...1.8 -1.8...1.8
0.32 0.043 -2...2 -1.5...1.5
-0.12375 0.56508 -2...2 -1.5...1.5
-0.39054 -0.58679 -1.5...1.5 -1.5...1.5
-0.11 0.67 -2...2 -1.5...1.5


Параметры для построения различных
конфигураций множества Жюлиа
(по Х.-О. Пайтгену "Красота фракталов",
стр 174)

crmin crmax cimin cimax
-2.25 0.75 -1.5 1.5
-0.19920 -0.12954 1.01480 1.06707
-0.95 -0.88333 0.23333 0.3
-0.713 -0.4082 0.49216 0.71429
-1.78 -1.764   0.013
-0.75104 -0.7408 0.10511 0.11536
-0.74758 -0.74624 0.10671 0.10779
-0.746541 -0.746378 0.107574 0.107678
-0.74591 -0.74448 0.11196 0.11339
-0.745538 -0.745054 0.112881 0.113236
-0.745468 -0.745385 0.112979 0.113039
-0.7454356 -0.7454215 0.1130037 0.1130139
-0.7454301 -0.7454289 0.1130076 0.1130085
-1.254024 -1.252861 0.046252 0.047125



Параметры для построения увеличенных
фрагментов множества Мандельброта
(по Х.-О. Пайтгену "Красота фракталов", стр 174)

Листинг программы

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 Integer, Bb As Integer

Dim colorr 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 = 1000: NY = 1000 'Разрешение экрана

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.DrawWidth = 1

Form1.PSet (Real, img)

Else

Form1.DrawWidth = 1

Form1.PSet (Real, img), QBColor(tt)

End If

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 = 1000: Bb = 1000

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.DrawWidth = 1

Form1.PSet (c_real, c_img)

Else

Form1.DrawWidth = 1

Form1.PSet (c_real, c_img), QBColor(colorr)

End If

Next J

Next I

End Select

End Sub

ЛИТЕРАТУРА

1.О. Л. Голицына, И. И. Попов Основы алгоритмизации и программирования. Серия: Профессиональное образование Год издания: 2008 ISBN: 5-91134-214-6 Издательство: Форум 432 стр.

http://icc.mpei.ru/services/library.aspx?uuid=5fbb24a3-9c86-470c-afe3-1a25daffc8c6

http://314159.ru/belov/frakyy.htm


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: