Определить класс Окружность. Реализовать проверку пересечения с другой окружностью в виде метода. Переопределить метод сравнения с учетом радиуса
Создал класс окружности , вроде правмильно написал сравнение двух объектов класса, но я не знаю как написать сравнение двух объектов одного класса в методе этого класса
import math
class Circle:
def __init__(self,x,y,radius):
self.x = x
self.y = y
self.radius = radius
cir1 = Circle(3,5,2)
cir2 = Circle(7,8,2)
if cir1.x == cir2.x:
if cir1.radius + cir2.radius > abs(cir1.y - cir2.y):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
elif cir1.y == cir2.y:
if cir1.radius + cir2.radius > abs(cir1.x - cir2.x):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
else:
if (cir1.radius + cir2.radius)**2 > abs((cir1.x - cir2.x)**2 - (cir1.y - cir2.y)**2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
Как реализовать метод и переопределить его , не знаю , нигде по этому поводу ничего не нахожу, и сам додуматься не могу.
Ответы (3 шт):
Автор решения: DGDays
→ Ссылка
Вот рабочий пример:
import math
class Circle:
def __init__(self,x,y,radius):
self.x = x
self.y = y
self.radius = radius
def persechenie(cir1,cir2):
if cir1.x == cir2.x:
if cir1.radius + cir2.radius > abs(cir1.y - cir2.y):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
elif cir1.y == cir2.y:
if cir1.radius + cir2.radius > abs(cir1.x - cir2.x):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
else:
if (cir1.radius + cir2.radius)**2 > abs((cir1.x - cir2.x)**2 - (cir1.y - cir2.y)**2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
cir1 = Circle(3,5,2)
cir2 = Circle(7,8,2)
Circle.persechenie(cir1,cir2)
Надеюсь я правильно понял ваш вопрос
Вот ещё один вариант, но тут надо вписывать все данные в один вызов класса:
import math
class Circle:
def __init__(self,x1,y1,radius1,x2,y2,radius2):
self.x1 = x1
self.y1 = y1
self.radius1 = radius1
self.x2 = x2
self.y2 = y2
self.radius2 = radius2
if self.x1 == self.x2:
if self.radius1 + self.radius2 > abs(self.y1 - self.y2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
elif self.y1 == self.y2:
if self.radius1 + self.radius2 > abs(self.x1 - self.x2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
else:
if (self.radius1 + self.radius2)**2 > abs((self.x1 - self.x2)**2 - (self.y1 - self.y2)**2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
Circle(3,4,2,7,8,2)
Вот ещё один пример:
import math
class Circle:
def __init__(self, x, y, radius):
self.x = x
self.y = y
self.radius = radius
def persechenie(self,cir):
if self.x == cir.x:
if self.radius + cir.radius > abs(self.y - cir.y):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
elif self.y == cir.y:
if self.radius + cir.radius > abs(self.x - cir.x):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
else:
if (self.radius + cir.radius) ** 2 > abs((self.x - cir.x) ** 2 - (self.y - cir.y) ** 2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
cir1 = Circle(3, 5, 2)
cir2 = Circle(7, 8, 2)
cir1.persechenie(cir2)
Автор решения: Zeka Farzali
→ Ссылка
import math
class Circle:
def __init__(self, x, y, radius):
self.x = x
self.y = y
self.radius = radius
def persechenie(self,cir):
if self.x == cir.x:
if self.radius + cir.radius > abs(self.y - cir.y):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
elif self.y == cir.y:
if self.radius + cir.radius > abs(self.x - cir.x):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
else:
if (self.radius + cir.radius) ** 2 > abs((self.x - cir.x) ** 2 - (self.y - cir.y) ** 2):
print('Окружности пересекаются')
else:
print('Окружности не пересекаются')
cir1 = Circle(3, 5, 2)
cir = Circle(7, 8, 2)
cir1.persechenie(cir)
Автор решения: Юрий
→ Ссылка
Квадрат гипотенузы равен сумме квадратов катетов!!! А у Вас разность.
if (self.radius + cir.radius) ** 2 > abs((self.x - cir.x) ** 2 - (self.y - cir.y) ** 2):