2012-05-01 3 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' не будет работать так, как предполагалось, тогда я бы рекомендовал, чтобы он работал на двух одиночных шарах , а не в массиве, без циклов. Тогда вы можете обобщить на шары NUMBER_OF_BALLS. –

+0

Спасибо, человек. Ваш алгоритм работал отлично. Я переписал свои вещи с мячом. Теперь он отлично работает. Смотрел онлайн о круговой игре лиги, но что для петли работает персик! cheers xD – HungryCoder

Смежные вопросы