Реализации алгоритмов/Треугольник Серпинского: различия между версиями

Содержимое удалено Содержимое добавлено
Рекурсивный метод
Строка 1:
[[Файл:Sierpinski chaos animated.gif|thumb|200 px|Построение треугольника Серпинского методом хаоса]]
'''[[w:Треугольник Серпинского|Треугольник Серпинского]]''' — [[w:фрактал|фрактал]], один из двумерных аналогов [[w:множество Кантора|множества Кантора]], предложенный польским математиком [[w:Серпинский, Вацлав|Вацлавом Серпинским]] в 1915 году.
 
== Построение рекурсивным методом на [[w:en:Geometric Description Language|GDL]] для [[w:ArchiCAD|ArchiCAD]] ==
 
Поскольку язык GDL не предполагает процедур, для рекурсии используем переходы по меткам.
 
# Сразу переходим на i-ю метку
# i-я метка устанавливает параметры для метки (i-1) и переходит на метку рекурсивного алгоритма
# Метка рекурсивного алгоритма устанавливает позицию (x, y) и переходит на метку i-1
# ...
# Метка 0 строит треугольник
 
Рекурсивный алгоритм описывает 3D-матрицу, по которой строится каждая итерация треугольника Серпинского.
 
<source>
 
xA = 0 !COS(90)
yA = 1 !SIN(90)
xB = COS(210) !-0.86602540378
yB = -0.5 !SIN(210)
xC = COS(330) !0.86602540378
yC = -0.5 !SIN(330)
 
GOSUB i
 
END
 
4:
n = 3
dX1 = 8*xC
dX2 = 16*xC
dY = 12
GOSUB 100
RETURN
 
3:
n = 2
dX1 = 4*xC
dX2 = 8*xC
dY = 6
GOSUB 100
n = 3
dX1 = 8*xC
dX2 = 16*xC
dY = 12
RETURN
 
2:
n = 1
dX1 = 2*xC
dX2 = 4*xC
dY = 3
GOSUB 100
n = 2
dX1 = 4*xC
dX2 = 8*xC
dY = 6
RETURN
 
1:
n = 0
dX1 = xC
dX2 = 2*xC
dY = 1.5
GOSUB 100
n = 1
dX1 = 2*xC
dX2 = 4*xC
dY = 3
RETURN
 
0:
PLANE 3, xA, yA, 0, xB, yB, 0, xC, yC, 0
RETURN
 
100:
GOSUB n
AddX dX2
GOSUB n
DEL 1
AddX dX1
AddY dY
GOSUB n
DEL 2
RETURN
 
</source>
 
== Построение методом хаоса на [[w:Visual Basic for Applications|VBA]] для [[w:Система автоматизированного проектирования|CAD-систем]] ==