Реализовать метод производящий вычитание двух окружностей
Реализовать метод производящий вычитание двух окружностей, вычитание радиусов произвести по модулю. Если вычитаются две окружности с одинаковым значением радиуса, то результатом вычитания будет точка класса Point. Вот пример кода
import math
class Point():
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return Point(x, y)
def __str__(self):
return f'({self.x}, {self.y})'
def distance_from_origin(self):
return math.hypot(self.x, self.y)
class Circle(Point):
def __init__(self, radius, x=0, y=0):
super().__init__(x, y)
self.radius = radius
def __eq__(self, other):
return self.radius == other.radius
def __str__(self):
return super().__str__()[:-1] + f', radius={self.radius})'
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
radius = self.radius + other.radius
return Circle(radius, x, y)
def edge_distance_from_origin(self):
return abs(self.distance_from_origin() - self.radius)
def circumference(self):
return 2 * math.pi * self.radius
def area(self):
return math.pi * (self.radius**2)
Основной код вроде как правильно а дальше подскажите пожалуйста
Ответы (2 шт):
Автор решения: splash58
→ Ссылка
Задание не сосем очевидно, но дословно это будет примерно так
def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
radius = abs(self.radius - other.radius)
return Circle(radius, x, y) if radius else Point(x,y)
Автор решения: Mr.OIITiMiCT
→ Ссылка
def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
radius = self.radius - other.radius
return Point(radius, x, y)
примерно так , в классе Circle прописал