這一節的標題是
4.1 Why Particle Systems Matter
因為方格子標題字數限制,所以沒完整顯現
之所以要研究粒子系統,除了可以用來模擬許多自然界中的現象之外,另一個更重要的原因是:在我們的模擬世界中,會有許多物體存在,而這些物體可能會形成一群一群的群體;例如,幾個彈來跳去的球、一群飛來飛去的鳥、幾隻游來游去的魚等。粒子系統,我們把它定義成是由許多各自獨立不相干的物體所組成的群體。所以,這些球、鳥、魚等,都可以把它們當成粒子系統來處理。簡單來說,只要是兩個以上的物體,都可以把他們當成是粒子系統來處理。
粒子系統很重要的一個特徵,就是系統內的物體數量是會變動的。有可能一開始的時候系統內什麼都沒有,接著可能會出現1個物體,然後出現10個,然後100個,然後成千上萬個,然後又全部消失不見。
要想順暢地處理粒子系統這種內部物體數量會變動的特性,光是建立一個描述單一粒子的類別是遠遠不夠的,我們還需要另外建立一個用來描述整個粒子系統的類別。除此之外,善用物件導向技術中的繼承(inheritance)和多形(polymorphism)兩個技術,也能讓我們在模擬粒子系統時,更能夠事半功倍。我們的目標,是要讓主程式寫起來像這樣:
particle_system = ParticleSystem()
while True:
:
:
particle_system.run()
在上面的主程式中,並沒有看到任何用來處理單一粒子的程式碼,但是執行時,卻可以看到整個畫面上都是飛舞的粒子。
在這一章中所介紹的程式架構和使用的技術,在往後的許多章節中都會用到。雖然在這一章中,我們會讓粒子只具有簡單的外觀和單純的行為,但這並不表示所有的粒子系統都該如此。重點並不在於粒子系統本身,而是面對含有許多元素在其中的系統,要怎麼處理比較好。系統中的元素要長什麼樣子、會有什麼樣的行為,完全取決於我們自己,而最終的目標,就是要呈現出我們想要模擬的效果。