Разработать класс Sphere для представления сферы в трехмерном пространстве -Python(Питон)

Обеспечить следующие методы класса:
1. конструктор, принимающий 4 действительных числа: радиус, и 3 координаты центра
шара. Если конструктор вызывается без аргументов, создать объект сферы с
единичным радиусом и центром в начале координат. Если конструктор
вызывается с 1 аргументом, создать объект сферы с соответствующим радиусом и
центром в начале координат.
2. метод get_volume (), который возвращает действительное число — объем шара, ограниченной
текущей сферой.
3. метод get_square (), который возвращает действительное число — площадь внешней поверхности
сферы.
4. метод get_radius (), который возвращает действительное число — радиус сферы.
5. метод get_center (), который возвращает тьюпл с 3 действительными числами — координатами
центра сферы в том же порядке, в каком они задаются в конструкторе.
6. метод set_radius (r), который принимает 1 аргумент — действительное число, и меняет радиус
текущей сферы, ничего не возвращая.
7. метод set_center (x, y, z), который принимает 3 аргумента — действительных числа, и меняет
координаты центра сферы, ничего не возвращая. Координаты задаются в том
же порядке, что и в конструкторе.
8. метод is_point_inside (x, y, z), который принимает 3 аргумента — действительных числа —
координаты некоторой точки в пространстве (в том же порядке, что и в конструкторе), и
возвращает логическое значение True или False в зависимости от того, находится ли
эта точка внутри сферы.

from math import pi
 
class Sphere:
    def __init__(self, *arg):
        if len(arg) == 0:
            arg = (1, 0, 0, 0)
        elif len(arg) == 1:
            arg = (arg[0], 0, 0, 0)
        else:
            raise TypeError # raise TypeError("<Последняя строчка лога об ошибке>")
        self.r, self.x, self.y, self.z = arg
 
    def get_volume(self):
        return (self.r ** 3) * pi * 4 / 3
 
    def get_square(self):
        return (self.r ** 2) * pi * 4
 
    def get_radius(self):
        return self.r
 
    def get_center(self):
        return (self.x, self.y, self.z)
 
    def set_radius(self, r):
        self.r = r
 
    def set_center(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
 
    def is_point_inside(self, x, y, z):
        return (self.x-x)**2 + (self.y-y)**2 + (self.z-z)**2 < self.r**2

Leave a Comment