Как в методе класса обозначить пересекаются ли круги или нет(Питон)
Есть код
class Circle:
def __init__(self, center, radius):
self.center = center
self.radius = radius
def square(self):
return (3.14 * self.radius**2)
Он принимает координаты центра круга и его радиус, а потом находит площадь круга, его необходимо доработать, добавив ему ещё один метод def do_intersect, который будет принимать другой объект класса Circle и возвращать True или False в зависимости от того, пересекаются круги или нет. Но как это сделать я не знаю...
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
проверить пересекаются ли круги можно взяв расстояние их центров и вычесть сумму их радиусов
def f(center1, r1, center2, r2):
x = center1[0] - center2[0]
y = center1[1] - center2[1]
dist = (x * x + y * y) ** 0.5
if dist < abs(r1 - r2):
return False
dist -= r1 + r2
return dist < 0
Автор решения: Vitek_228_69
→ Ссылка
понятно что две окружности пересекаются, если расстояние между их центрами меньше суммы их радиусов. Поэтому ищем гипотенузу и сравниваем. Наверно координаты идут кортежем, поэтому вынесем их в конец инициализации
class Circle:
def __init__(self, radius, *args):
self.center = args
self.radius = radius
def square(self):
return 3.14 * self.radius ** 2
def do_intersect(self, other):
dist = ((self.center[0] - other.center[0]) ** 2 + (self.center[1] - other.center[1]) ** 2) ** 0.5
return abs(self.radius - other.radius) <= dist <= self.radius + other.radius
circle = Circle(3, 1, 1)
circle2 = Circle(1, 1, 1)
print(circle.do_intersect(circle2))