Public Sub Collide(m As Integer, n As Integer)
Dim A1 As Single, A2 As Single
Dim Vx1 As Single, Vx2 As Single, A As Single
Dim Vy1 As Single, Vy2 As Single
On Error Resume Next
Dim Dist As Single
Dist = DistanceBtw(Ball(m).X, Ball(m).Y, Ball(n).X, Ball(n).Y)
If (Dist <= Ball(m).Radius + Ball(n).Radius And 2 * Dist > Ball(m).Radius + Ball(n).Radius) Then
A1 = -AngleBtw(VectorC(Ball(m).X, Ball(m).Y), VectorC(Ball(n).X, Ball(n).Y)) + _
DegToRad(Ball(m).DirAngle)
A2 = -AngleBtw(VectorC(Ball(n).X, Ball(n).Y), VectorC(Ball(m).X, Ball(m).Y)) + _
DegToRad(Ball(n).DirAngle)
Vx1 = Ball(m).Vel * Cos(A1)
Vx1 = Vx1 + Ball(n).Vel * Cos(A2)
Vx2 = Vx1
Vy1 = Ball(m).Vel * Sin(A1)
Vy2 = Ball(n).Vel * Sin(A2)
A = Vy1 / Sqr(Vx1 * Vx1 + Vy1 * Vy1)
Ball(m).DirAngle = RadToDeg(Atn(-A / Sqr(-A * A + 1)) + 2 * Atn(1))
A = Vy2 / Sqr(Vx2 * Vx2 + Vy2 * Vy2)
Ball(n).DirAngle = RadToDeg(Atn(-A / Sqr(-A * A + 1)) + 2 * Atn(1))
End If
End Sub