2 окружности пересекаются, если расстояние между 2 центральными точками меньше суммы 2 радиусов.Расстояние между двумя точками может быть вычислено как Евклидово расстояние :
dist = math.sqrt(dx*dx + dy*dy)
В пигаме это может быть вычислено как pygame.math.Vector2.distance_to()
.
Если 1-й круг определяется центральной точкой (x1, y1)
и радиусом radius1
, а 2-й круг определяется центральной точкой (x2, y2)
и радиусом radius2
, то:
centerPoint1 = pygame.math.Vector2(x1, y1)
centerPoint2 = pygame.math.Vector2(x2, y2)
collide = centerPoint1.distance_to(centerPoint2) < (radius1 + radius2)
collide
равно True
, если 2 круга пересекаются.
Если вы хотите избежать операции с квадратным корнем, вы можете использовать distance_squared_to()
и сравнить квадрат обоихдлина:
max_dist_square = (radius1 + radius2)*(radius1 + radius2)
collide = centerPoint1.distance_squared_to(centerPoint2) < max_dist_square