pygame 中畫出 Lorenz Attractor

誰說pygame只能做遊戲,傑夫老師就把它拿來畫圖,今天畫的是有名的 Lorenz Attractor,就是在巴西輕拍翅膀導致一個月後德克薩斯州龍捲風的那隻蝴蝶。

Lorenz Equation 方程式改為程式

用 pygame 也不只可以做遊戲,也可以用來畫圖。其實,說穿了,就是拿 pygame 的 draw.line 來畫出這個 3D 的圖。沒錯!pygame 只有 2D,要怎麼畫呢?一起來看下去。

先來看看方程式:

Lorenz equations

Lorenz equations

σ = 10、β = 8/3 ,而 ρ = 28 時表現出混沌特性

不要昏倒,這寫成程式非常簡單。 以第一個式子來說:dt 就是一個很短的時間單位,例如 0.01;dx 就是在這個時間單位中 x 的變化量,那第一個式子就可以換成:

dx = σ (y-x) dt

懂了之後,把方程式改寫成程式就一點都不難了:

dx = s*(y - x)

dy = r*x - y - x*z

dz = x*y - b*z

x = x + dx*dt

y = y + dy*dt

z = z + dz*dt

只要定出初始的 x, y, z 以及 dt,一直重複以上的步驟就可以算出無限多組 x, y, z 值,再將這些點畫出來就好了。

x, y, z = 0.1, 1., 1.05

dt = 0.01

在 pygame 中繪圖

待續......