稍微介紹下python庫之Turtle


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 random
import turtle

turtle.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 = 1
while 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 

好了睡覺..

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM