def collide(self, p1, p2):
np = self.np
dx = p1.x - p2.x
dy = p1.y - p2.y
elasticity = 1
dist = np.hypot(dx, dy)
if dist < p1.size + p2.size:
tangent = np.arctan2(dy, dx)
angle = 0.5 * np.pi + tangent
angle1 = 2*tangent - p1.angle
angle2 = 2*tangent - p2.angle
speed1 = p2.speed*elasticity
speed2 = p1.speed*elasticity
(p1.angle, p1.speed) = (angle1, speed1)
(p2.angle, p2.speed) = (angle2, speed2)
p1.x += np.sin(angle)
p1.y -= np.cos(angle)
p2.x -= np.sin(angle)
p2.y += np.cos(angle)
评论列表
文章目录