示例#1
0
 def pocket_walls_collision(self, start_point, end_point):
     incoming_vec = self.coords - start_point
     pocket_wall_vec = end_point - start_point
     projected = Vec2D.projection(incoming_vec, pocket_wall_vec)
     distance = Vec2D.get_distance(incoming_vec, projected)
     if 0 <= math.fabs(projected.x) <=\
             math.fabs(end_point.x - start_point.x) and\
             0 <= math.fabs(projected.y) <=\
             math.fabs(end_point.y - start_point.y) and\
             distance < self.RADIUS:
         self.coords = Vec2D.normalized(incoming_vec - projected) *\
             self.RADIUS + start_point + projected
         self.velocity = 2 * (self.velocity.dot(pocket_wall_vec)
                              / pocket_wall_vec.dot(pocket_wall_vec)) *\
             pocket_wall_vec - self.velocity
 def pocket_walls_collision(self, start_point, end_point):
     incoming_vec = self.coords - start_point
     pocket_wall_vec = end_point - start_point
     projected = Vec2D.projection(incoming_vec, pocket_wall_vec)
     distance = Vec2D.get_distance(incoming_vec, projected)
     if 0 <= math.fabs(projected.x) <=\
             math.fabs(end_point.x - start_point.x) and\
             0 <= math.fabs(projected.y) <=\
             math.fabs(end_point.y - start_point.y) and\
             distance < self.RADIUS:
         self.coords = Vec2D.normalized(incoming_vec - projected) *\
             self.RADIUS + start_point + projected
         self.velocity = 2 * (self.velocity.dot(pocket_wall_vec)
                              / pocket_wall_vec.dot(pocket_wall_vec)) *\
             pocket_wall_vec - self.velocity