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

Рекурсивный метод
(Рекурсивный метод)
?>
</source>
 
== Построение рекурсивным методом на [[w:en:Geometric Description Language|GDL]] для [[w:ArchiCAD|ArchiCAD]] ==
 
Поскольку язык GDL не предполагает процедур, для рекурсии используем переходы по меткам.
 
# Сразу переходим на i-ю метку
# i-я метка устанавливает параметры для метки (i-1) и переходит на метку рекурсивного алгоритма
# Метка рекурсивного алгоритма устанавливает позицию (x, y) и переходит на метку i-1
# ...
# Метка 0 строит треугольник
 
Рекурсивный алгоритм описывает 3D-матрицу, по которой строится каждая итерация ковра Серпинского.
 
<source>
GOSUB i
 
END
 
4:
n = 3
d = 27
GOSUB 100
RETURN
 
3:
n = 2
d = 9
GOSUB 100
n = 3
d = 27
RETURN
 
2:
n = 1
d = 3
GOSUB 100
n = 2
d = 9
RETURN
 
1:
n = 0
d = 1
GOSUB 100
n = 1
d = 3
RETURN
 
0:
PLANE 4, 0,0,0, 1,0,0, 1,1,0, 0,1,0
RETURN
 
100:
GOSUB n !11
AddX d !1: 2,1
GOSUB n !21
AddX d !2: 3,1
GOSUB n !31
DEL 2 !0: 1,1
 
AddY d !1: 1,2
GOSUB n !12
AddX 2*d !2: 3,2
GOSUB n !32
DEL 1 !1: 1,2
 
AddY d !2: 1,3
GOSUB n !13
AddX d !3: 2,3
GOSUB n !23
AddX d !4: 3,3
GOSUB n !33
DEL 4 !0: 1,1
RETURN
</source>
 
 
== Построение методом хаоса на [[w:Visual Basic for Applications|VBA]] для [[w:Система автоматизированного проектирования|CAD-систем]] ==
Строится ковёр Серпинского с центром в начале координат и стороной 1, т.е. каждая вершина удалена от центра на 0.5 по оси x и на 0.5 по оси y.
 
<source lang="vb">
Sub Gasket()