| О проекте | Главная | Оставить сообщение | Адрес для связи: tbam1@rambler.ru |
ПРОГРАММА
"Программа построения модификаций фрактала ковер Серпинского"
Программа написана на языке VisualBasic..
Под фракталом "ковер Серпинского" традиционно понимается объект, который получается путем многократного выполнения следующей процедуры:
Берется квадрат со стороной равной некой величине f и разбивается на девять равных квадратов со сторонами f/3. Внутренность среднего квадрата удаляется, а с остальными процедура повторяется. Теоретически эта процедура может повторяться бесконечное количество раз.
Предлагаемая программа строит модификации фрактала "ковер Серпинского" предусматривающие не удаление внутренности среднего квадрата, а ее сплошное заполнение точками. Кроме этого получаемые модификации по форме могут быть не только квадратами, но и любыми прямоугольниками и параллелограммами.
Конечно столь существенные отличия от фрактала "ковер Серпинского" позволяют говорить о построении именно его модификаций лишь с большой натяжкой.
Программа написана на основе использования системы параметрических уравнений задающих практически любой параллелограмм, включая квадрат или произвольный прямоугольник (см. статью: Параметрические уравнения четырехугольников (квадрат, прямоугольник, параллелограмм, трапеция) http://stob2narod.ru/30s.htm). Возможность построения различных четырехугольников непосредственно по единой системе параметрических уравнений позволила получить приведенный ниже оригинальный алгоритм формирования фракталов типа "ковер Серпинского".
Алгоритм построения модификации фрактала "ковер Серпинского" на языке VisualBasic
Ввод исходных данных:
P1 - размер диагонали исходного прямоугольника;
L - величина угла наклона к горизонтали диагонали исходного прямоугольника;
D1 - величина деформации (сдвига) исходного прямоугольника;
K - коэффициент масштаба графика;
NZ - коэффициент заполнения параллелограмма;
N1MAX - количество итераций;
XP - позиция по горизонтали;
YP - позиция по вертикали
X1 = 0: Y1 = 0
For N1 = 0 To N1MAX
NMAX = 3 ^ (2 * N1) - 1
N2MAX = 3 ^ N1
P = P1 / (3 ^ N1)
D = D1 / (3 ^ N1)
For N = 0 To NMAX
A6 = Fix(N / N2MAX)
A7 = Fix(Fix(((A6 - 1) / 3 + 1)) / ((A6 - 1) / 3 + 1))
A8 = Fix(Fix(((N - 1) / 3 + 1)) / ((N - 1) / 3 + 1))
A9 = A7 * A8
PMAX = NZ * P
X1 = P * Cos(L) * (N - (3 ^ N1) * Fix(N / (3 ^ N1))) + D * A6
Y1 = P * Sin(L) * Fix(N / (3 ^ N1))
For T = P To PMAX Step 0.1
A1 = Fix(1 / Fix(T / P)) * Fix(Fix(T / P) / 1)
A2 = Fix(2 / Fix(T / P)) * Fix(Fix(T / P) / 2)
A3 = Fix(3 / Fix(T / P)) * Fix(Fix(T / P) / 3)
A4 = Fix(4 / Fix(T / P)) * Fix(Fix(T / P) / 4)
A5 = T - P * Fix(T / P)
X = (1 - A9) * (((D / P) * A1 + A4 * Cos(L)) * A5 + A2 * (D + A5 * Cos(L)) + A3 * (P * Cos(L) + (D / P) * A5) + X1) + A9 * (A5 * Cos(L) + (D / NZ) * Fix(T / P) + X1)
Y = (1 - A9) * (((A1 + A3) * A5 + A2 * P) * Sin(L) + Y1) + A9 * ((P * Sin(L) / NZ) * Fix(T / P) + Y1)
PSet (K * X + XP, K * -Y + YP)
Next T
Next N
Next N1
Вводимые исходные данные предустановленны в программе, но их величины могут быть изменены. Собственно исследовать свойства фрактала при помощи программы только и можно за счет изменения величин вводимых исходных данных.
Качественные изменения вида получаемого фрактала при помощи приведенного выше алгоритма происходят при следующих значениях исходных данных:
1. При D1=0 L=3,14/4 получается фрактал в виде квадрата наиболее близкий к классическому фракталу "ковер Серпинского". Пример его внешнего вида приведен ниже на рисунке.
2. При D1=0 L неравном 3,14/4 получается фрактал в виде прямоугольника, но не квадрата. Пример его внешнего вида приведен ниже на рисунке.
3. При D1 неравном нулю получается фрактал в виде параллелограмма, но не прямоугольника или квадрата. Пример его внешнего вида приведен ниже на рисунке.
Степень детализации построения при помощи программы фракталов зависит от количества итераций N1MAX. Теоретически количество итераций может быть бесконечным, но практически его следует выбирать равным 5 – 6. При большем их количестве четырехугольники на экране монитора начинают сливаться. Например, приведенные выше примеры были построены при N1MAX = 4.
Программа является демонстрационной и не предназначена для использования в коммерческих целях или при осуществлении трудовой деятельности.
Ссылки на дополнительные материалы:
Параметрические уравнения четырехугольников (квадрат, прямоугольник, параллелограмм, трапеция)
Фракталы и универсальное уравнение
Уравнение правильных многоугольников в полярных координатах
август 2009 года