В вашем игровом цикле вычислите новую позицию мяча, как если бы не было никаких шаров.
Затем проверьте, не пересекается ли новая позиция с или не является ли она ПРОСТИЧЕСКИМ краем.
Если какое-либо условие выполнено, рассчитайте новую позицию мяча, отразив его от абстикального элемента.
Подойдет метод, который вычисляет точку с учетом начальной точки, угла и расстояния:
Public Function TranslatePoint(ByVal tStartPoint As Point, _
ByVal tAngle as Decimal, ByVal tDistance As Decimal) As Point