pygame 中畫出 Lorenz Attractor
誰說pygame只能做遊戲,傑夫老師就把它拿來畫圖,今天畫的是有名的 Lorenz Attractor,就是在巴西輕拍翅膀導致一個月後德克薩斯州龍捲風的那隻蝴蝶。
Lorenz Equation 方程式改為程式
Lorenz Equation 方程式改為程式
用 pygame 也不只可以做遊戲,也可以用來畫圖。其實,說穿了,就是拿 pygame 的 draw.line 來畫出這個 3D 的圖。沒錯!pygame 只有 2D,要怎麼畫呢?一起來看下去。
先來看看方程式:
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 中繪圖
在 pygame 中繪圖
待續......