Turtle乃龜的意思,最初屬於logo語言的(沒玩過)..不過後來也有別的語言支援.其一是SmallBasic,其二就是Python.一直不知道這個庫竟然是Python內建的.它是基於Tk庫的.
用起來很簡單.
from turtle import *
即可.
簡單畫線.
其中reset()是將整個畫布清空並講烏龜(箭頭)置於原點(畫布的中心). goto(70,0) 是根據當前的狀態(速度,顏色,是否畫線 ... )運動到(70,0)點上.
turtle的座標系跟我們學習的座標系一樣.很好學習.
下面我們來畫個正方形.很簡單.
就是前進(fd)一段距離,右轉(right)90度,反覆4次即可.
當然畫任意的邊形都可以.改變角度就好了,當然也可以順便改下長度,如下
好了簡單介紹到這裡了,還有更多的功能可以查手冊了.
或者更多的Demo看 http://code.google.com/p/python-turtle-demo/
下面來看一小例子,分形.當然經典的Mandelbrot看爛了,換點別的.葉子的構造.
方法很簡單.乘法迭代.不過不是單一的迭代而是根據機率迭代.每次的結果都以座標畫在圖片上.
代碼來自於.http://www.mathworks.cn/moler/intro.pdf 不過原始代碼是Matlab寫的,我這裡改成Python的.其中用到了Numpy庫,主要用於矩陣乘法,其實自己寫個一不困難的.
調試時發現A*x在Numpy中有別的含義,要使用dot(A,x).代碼如下:
from numpy import *from random import randomimport turtleturtle.reset()x = array([[.5],[.5]])p = [0.85,0.92,0.99,1.00]A1 = array([[.85, 0.04], [-0.04,.85]])b1 = array([[0],[1.6]])A2 = array([[0.20,-0.26], [0.23,0.22]])b2 = array([[0],[1.6]])A3 = array([[-0.15,0.28], [0.26,0.24]])b3 = array([[0],[0.44]])A4 = array([[0,0], [0,0.16]])turtle.color("blue")cnt = 1while True: cnt += 1 if cnt == 2000: break r = random() if r < p[0]: x = dot(A1 , x) + b1 elif r < p[1]: x = dot(A2 , x) + b2 elif r < p[2]: x = dot(A3 , x) + b3 else: x = dot(A4 , x) #print x[1] turtle.up() turtle.goto(x[0][0] * 50,x[1][0] * 40 - 240) turtle.down() turtle.dot()
注意下其中匯入.numpy.dot 和 turtle.dot 是有衝突的.
結果如下.
牙,好難看..
Matrix67句句也學過關於這個的文章 http://www.matrix67.com/blog/archives/500
好了睡覺..