2016-07-29 77 views
2

我已經設法得到了一個很好的巴恩斯利蕨類植物,用下面的代碼生成,但有些不太正確。 '幹'有額外的線,我一直沒有找到問題。有誰能解決這個問題嗎 巴恩斯利蕨盡力而爲:巴恩斯利蕨Python腳本

enter image description here

from PIL import Image 
import random 
import matplotlib.pyplot as plt 
A=[] 
mat=[[0.0,0.0,0.0,0.6,0.0,0.0,0.01], 
    [0.85,0.04,-0.04,0.85,0.0,1.6,0.85], 
    [0.2,-0.26,0.23,0.22,0.0,1.6,0.07], 
    [-0.15,0.28,0.26,0.24,0.0,0.44,0.07]] 
x=0.0 
y=0.0 
for k in range(0,100000): 
    p=random.random() 
    if p <= mat[0][6]: 
     i=0 
    elif p <= mat[0][6] + mat[1][6]: 
     i=1 
    elif p <= mat[0][6] + mat[1][6] + mat[2][6]: 
     i=2 
    else: 
     i=3 

    x0 = x * mat[i][0] + y * mat[i][1] + mat[i][4] 
    y = x * mat[i][2] + y * mat[i][3] + mat[i][5] 
    x = x0 

    ptn=[x,y] 

    A.append(ptn) 

plt.figure(figsize=(20,30)) 
plt.scatter(*zip(*A),marker='o', color='g',s=0.1) 
plt.show() 
+1

我不熟悉的這個分形背後的算法,但一個好的調試起點可能是爲你的if語句中的不同情況分配不同的顏色。 – fodma1

回答

1

有矩陣中的錯字:

mat=[[0.0,0.0,0.0,0.16,0.0,0.0,0.01], 
[0.85,0.04,-0.04,0.85,0.0,1.6,0.85], 
[0.2,-0.26,0.23,0.22,0.0,1.6,0.07], 
[-0.15,0.28,0.26,0.24,0.0,0.44,0.07]] 

這種修復它哎呀...