From Wikipedia, the free encyclopedia
例如一隻用牛頓力學(Newtonian mechanics)嘅賽車遊戲,喺玩家撳咗「踩油」嘅掣嗰陣,要改變架車嘅加速度數值,而架車相應嘅速度同位置等變數亦要跟牛頓力學裏面嘅法則作出相應嘅改變[1]。
以下呢段用 C 程式語言寫嘅源碼可以攞嚟模擬喺牛頓第二定律(Newton's second law)之下郁動嘅物體[2]:
double t = 0.0;
float dt = 1.0f;
float velocity = 0.0f;
float position = 0.0f;
float force = 10.0f;
float mass = 1.0f;
// 設一大柞變數,包括咗時間點(t)、時間間隔(dt)、速度(velocity)、位置(position)、件物體受嘅力(force)、同件物體嘅質量(mass)。
while ( t <= 10.0 ) // 重複噉計若干次,計到時間點係 10 為止。
{
position = position + velocity * dt;
velocity = velocity + ( force / mass ) * dt; // 用牛頓第二定律計吓件物體受嘅力同佢嘅質量會點影響佢嘅速度。
t += dt;
}
碰撞探測(collision detection)係指用嚟喺每個時間點探測一個世界內部「有冇邊對物件相撞」嘅演算法[3]。碰撞探測「要點樣最佳化」係一條大問題:原則上,段演算法可以將所有物體可能配對遂對遂對攞嚟睇,但噉做運算複雜度會好高[註 1];比較有效率嘅做法可能係「將遊戲空間入面啲物件全部睇做長方體,排除邊對邊對物體冇可能係相撞緊」呀噉[4]。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.