分形是一个悖论。
它惊人的简单,却又无限的复杂。
它很新,却又比尘埃更古老。
分形是什么?它们是从哪里来的?我们为什么要在乎?
20世纪非传统的数学家Benoit Mandelbrot在1975年从拉丁词fractus(意思是不规则的或破碎的)创造了分形这个词。
我们周围到处都可以看到分形的影子。
从最基本的角度看,分形是重复模式或公式的视觉表达,开始时很简单,然后逐渐变得更复杂。
在数学中,分形是欧氏空间的子集,其分形维数严格超过其拓扑维数。
分形在不同的尺度上表现相同,如Mandelbrot集合的连续放大。
分形通常在越来越小的尺度上表现出类似的模式,这种特性称为自相似性,也称为扩展对称或展开对称。
如果这种复制在每个尺度上都完全相同,就像在门格尔海绵中一样,那么它就被称为仿射自相似。
分形几何属于度量理论的数学分支。
原理参考上一篇:python与分形0019 - 【教程】Stack of Circles 原创
- # coding: utf-8
-
- import turtle
- import math
- import time
-
- window = turtle.Screen()
- window.screensize()
- window.setup(width=1.0, height=1.0, startx=None, starty=None)
-
- turtle.speed(5)
- turtle.hideturtle()
- #turtle.tracer(0)
- turtle.bgcolor('black')
- turtle.color('white')
- turtle.pensize(3)
-
- def draw_vertical_hexagon(start_pos, length):
- turtle.penup()
- turtle.goto(start_pos)
- turtle.seth(90)
- turtle.pendown()
- for i in range(6):
- turtle.fd(length)
- turtle.right(60)
-
- def stack_hexagons(x0, y0, r, stacks):
- draw_vertical_hexagon((x0,y0), r)
- if stacks > 1:
- for s in range(1, stacks):
- x0 -= 0.5*math.sqrt(3)*r
- y0 -= 1.5*r
- for _ in range(s+1):
- draw_vertical_hexagon((x0+_*math.sqrt(3)*r,y0), r)
- turtle.update()
-
- #time.sleep(5)
- r = 30
- x0 = 0
- y0 = 300
- stack_hexagons(x0, y0, r, 9)