def expectedTimeWalls(self, circle): # the order is East, West, North, South wallsHorizontal = [circle.radius, width - circle.radius] wallsVertical = [circle.radius, height - circle.radius] for horizontal in wallsHorizontal: solution = Numerical.solveLinear([circle.velocity[0], circle.currentPosition(self.time)[0] - horizontal]) yield solution + self.time for vertical in wallsVertical: solution = Numerical.solveLinear([circle.velocity[1], circle.currentPosition(self.time)[1] - vertical]) yield solution + self.time