python与分形0009 - 谢尔宾斯基地毯

分形介绍

分形是一个悖论。

它惊人的简单,却又无限的复杂。

它很新,却又比尘埃更古老。

分形是什么?它们是从哪里来的?我们为什么要在乎?

20世纪非传统的数学家Benoit Mandelbrot在1975年从拉丁词fractus(意思是不规则的或破碎的)创造了分形这个词。

我们周围到处都可以看到分形的影子。

从最基本的角度看,分形是重复模式或公式的视觉表达,开始时很简单,然后逐渐变得更复杂。

在数学中,分形是欧氏空间的子集,其分形维数严格超过其拓扑维数。

分形在不同的尺度上表现相同,如Mandelbrot集合的连续放大。

分形通常在越来越小的尺度上表现出类似的模式,这种特性称为自相似性,也称为扩展对称或展开对称。

如果这种复制在每个尺度上都完全相同,就像在门格尔海绵中一样,那么它就被称为仿射自相似。

分形几何属于度量理论的数学分支。

分形结果

谢尔宾斯基地毯
谢尔宾斯基地毯
谢尔宾斯基地毯
谢尔宾斯基地毯
谢尔宾斯基地毯
谢尔宾斯基地毯
谢尔宾斯基地毯

分形源码

# coding=utf-8

import turtle
import random
import time

COLOR_TABLES = [
    ["#000000""#000000""#000000""#000000" ],
    ["#00649F""#97ECC5""#00DBE7""#01AAC1" ],
    ["#085F63""#EF255F""#FCCF4D""#49BEB7" ],
    ["#9B5D73""#FFF1C5""#C38B8B""#B0757C" ],
    ["#F0F0F0""#FC5185""#364F6B""#43DDE6" ],
    ["#F67280""#355C7D""#6C5B7B""#C06C84" ],
    ["#F3ECC8""#0D1B4C""#3F6699""#78C2C3" ]
    ]

window = turtle.Screen()
window.screensize()
window.setup(width=1.0, height=1.0, startx=None, starty=None)

turtle.speed(0)
turtle.hideturtle()
turtle.tracer(0)
turtle.bgcolor('white')

def box(boxSize):
    turtle.begin_fill()     # 0 deg.
    turtle.forward(boxSize)
    turtle.left(90)         # 90 deg.
    turtle.forward(boxSize)
    turtle.left(90)         # 180 deg.
    turtle.forward(boxSize)
    turtle.left(90)         # 270 deg.
    turtle.forward(boxSize)
    turtle.end_fill()
    turtle.setheading(0)

def move_box(xy, length, color):
    (x, y) = xy
    turtle.color(color)
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    box(length)

def draw_all(xy, length, depth, color_table):
    if depth <= 0return

    length3 = length / 3
    (x, y) = xy

    pos1_9 = [  (x-length3*2,       y+length+length3),
                (x+length3,         y+length+length3),
                (x+length+length3,  y+length+length3),
                (x-length3*2,       y+length3),
                (x+length+length3,  y+length3),
                (x-length3*2,       y-length3*2),
                (x+length3,         y-length3*2),
                (x+length+length3,  y-length3*2) ]    
    for pos in pos1_9:
        move_box(pos, length3, color_table[depth%len(color_table)])
        draw_all(pos, length3, depth-1, color_table)
    
def Sierpinski():
    length = 270
    start_x = -length/2
    start_y = -length/2
    depth = 3

    for color_table in COLOR_TABLES:
        move_box((start_x, start_y), length, color_table[0])
        draw_all((start_x, start_y), length, depth, color_table)
        time.sleep(1)

#time.sleep(6)
Sierpinski()

分形视频

余额不足的程序员
谢尔宾斯基地毯循环色 #分形 #解压 #python
视频号
余额不足的程序员
谢尔宾斯基地毯黑白 #分形 #解压 #python
视频号
余额不足的程序员
谢尔宾斯基地毯彩色 #分形 #解压 #python
视频号

--EOF--

例行求粉,谢谢!

求粉

本文使用 文章同步助手 同步

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容