1) "приблизительность" - ты сам про шаги рассказал, про механизм склеивания я догадался, а ты подтвердил
2) асимптотика - 200 шариков запускать совсем не интересно.
3) остальное (если найдется) - вечером...
Все исправляемо.
Собственно, я и задачку давал с умыслом. Чтобы можно было "через руки" почувствовать, что только сейчас и начнется Настоящее Программирование. После
А вообще - классно. Я же знал, что ты формулы столкновения в интернете искать не будешь

Ну а, кости есть - мясо нарастет.