1

在 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 个球实例

4

1 回答 1

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)。

于 2012-05-01T17:25:28.990 回答