2012-05-01 113 views
1

在OpenGL中製作概率機器。OpenGL。球碰撞

Ball ballArray[5]; 

while(elapsed > 0) 
{ 
    timeStep = m_Timer.getSeconds(); 
    for(int i = 0; i < NUMBER_OF_BALLS; ++i) 
    { 
     ballArray[i].updateBall(timeStep); // where collision with pegs dealt 
     //ballArray[0].ballBallCollision(timeStep,ballArray[0],ballArray[1]); 
     } 
     Redraw(); 
} 

我不能得到的註釋行工作:( 如何傳遞球的2個實例

回答

3

假設ballBallCollision()的作品,你可能要相互碰撞球每隔球,即0與1,0,2,1,2等,您將需要該第二個循環

我首選的方案是創建一個運行在所有剩餘的球像這樣的循環:

for(int i = 0; i < NUMBER_OF_BALLS; ++i) 
{ 
    ballArray[i].updateBall(timeStep); // where collision with pegs dealt 
    for(int j = i + 1; i < NUMBER_OF_BALLS; ++j) 
    { 
     ballArray[i].ballBallCollision(timeStep,ballArray[i],ballArray[j]); 
    } 
} 

請注意,因爲我們從i + 1開始,我們永遠不會碰到一個球(0與0),並且我們不檢查每一對兩次(我們檢查0對1,而不是1反對0) 。

+0

當我這樣做,我所有的球都凍結在頂端:( – HungryCoder

+0

@RashedHassan:它會出現你的'ballBallCollision'代碼不能按照假設的那麼工作,那麼我建議讓它在兩個單球上工作,而不是在一個數組中,沒有for循環,那麼你可以推廣到'NUMBER_OF_BALLS'球。 –

+0

謝謝你,你的算法工作的很好,我重新編寫了我的球 - 球碰撞的東西,現在它工作正常 正在網上查找關於循環賽聯賽的東西,但是對於循環作品桃子!乾杯xD – HungryCoder