#python #фракталы
Нужно чтобы вначале рисовался треугольник, внутри него еще 3, внутри трех еще 3 и так далее. Как это реализуется?
Ответы
Ответ 1
Вот вам псевдокод: SierpinskiSieve(v1, v2, v3, recdepth) : if (recdepth == 0) : draw triangle (v1, v2, v3) return m1 = (v2 + v3)/2 m2 = (v3 + v1)/2 m3 = (v1 + v2)/2 SierpinskiSieve(v1, m3, m2, recdepth - 1) SierpinskiSieve(m3, v2, m1, recdepth - 1) SierpinskiSieve(v2, m1, v3, recdepth - 1)Ответ 2
Моя версия с использованием turtle, может кому-то пригодится. l это длина стороны треугольника, n это количество рекурсивно нарисованных треугольников Серпиского. Например >>>sierpinski(100,1) даст результат как на третьей картинке из вопроса. from turtle import * speed("fastest") def sierpinski(l,n): assert (isinstance(l, int) or isinstance(l, float)) and l>0, 'parameter l is a positive float or integer' assert isinstance(n, int) and n>=0, 'parameter n is a whole number' if n==0: for i in range(0,3): fd(l) left(120) else: sierpinski(l/2,n-1) fd(l/2) sierpinski(l/2,n-1) bk(l/2) left(60) fd(l/2) right(60) sierpinski(l/2,n-1) left(60) bk(l/2) right(60)
Комментариев нет:
Отправить комментарий