python观察日志(part3)--绘制科赫雪花图
生活随笔
收集整理的這篇文章主要介紹了
python观察日志(part3)--绘制科赫雪花图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
學(xué)習(xí)筆記
理論部分:分形與混沌
科赫雪花圖
分形(fractal)是一種不同于歐氏幾何學(xué)中元素的幾何圖形,科赫曲線就是一個分形.
如上圖所示,科赫曲線可以用如下方法產(chǎn)生:
在一段直線中間,以邊長為1/31/31/3的等邊三角形的兩邊,去代替原來直線中間的1/31/31/3,得到(a);
對(a)的每條線段重復(fù)上述做法又得到曲線(b) ;
對曲線(b) 的每段又重復(fù),如此無窮地繼續(xù)下去得到的極限曲線就是科赫曲線。
科赫雪花則是以等邊三角形三邊生成的科赫曲線組成的:
python實現(xiàn)
要繪制一個長度為x的科赫曲線,我們只需要:
大家有沒有感覺,這個科赫曲線的產(chǎn)生過程有點類似于上面介紹的曲線(b)的產(chǎn)生過程?
這一點也比較好解釋,我們可以通過分形的特征去理解。
分形有如下幾個特征:
分形具有自相似性。分形自身可以看成是由許多與自己相似的、大小不一的部分組成。
分形具有無窮多的層次。無論在分形的哪個層次,總能看到有更精細的、下一個層次存在。分形圖形有無限細節(jié),可以不斷放大,永遠都有結(jié)構(gòu)。
分形的維數(shù)可以是一個分數(shù)。
分形通常可以由一個簡單的遞歸、迭代的方法產(chǎn)生出來。
python代碼:
# -*- coding: utf-8 -*- from __future__ import print_function, divisionimport turtledef koch(t, n):"""Draws a koch curve with length n."""if n < 10:t.fd(n)returnm = n/3koch(t, m)t.lt(60)koch(t, m)t.rt(120)koch(t, m)t.lt(60)koch(t, m)def snowflake(t, n):"""Draws a snowflake (a triangle with a Koch curve for each side)."""for i in range(3):koch(t, n)t.rt(120)bob = turtle.Turtle()bob.pu() bob.goto(-150, 90) bob.pd() snowflake(bob, 300)turtle.mainloop()實現(xiàn)過程:
科赫雪花圖繪制成功啦!
總結(jié)
以上是生活随笔為你收集整理的python观察日志(part3)--绘制科赫雪花图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 活在当下下一句是什么
- 下一篇: 我常用的python函数(part1)-