Уведомления

Группа в Telegram: @pythonsu

#1 Март 31, 2015 23:46:48

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разработать класс Sphere ?

Здраствуйте, подкажите, как разработать класс Sphere ?
Задача такая:

Разработать класс Sphere для представления сферы в трехмерном пространстве.
Обеспечить следующие методы класса:

  • конструктор, который принимает 4 действительных числа: радиус, и 3 координаты центра пули. Если конструктор вызывается без аргументов, создать объект сферы с единичным радиусом и центром в начале координат. Если конструктор вызывается с 1 аргументом, создать объект сферы с соответствующим радиусом и центром в начале координат.

  • метод get_volume(), какой возвращает вещественное число – объем пули, ограниченной текущей сферой.

  • метод get_square(), какой возвращает вещественное число – площадь внешней поверхности сферы.

  • метод get_radius(), какой возвращает вещественное число – радиус сферы.

  • метод get_center(), какой возвращает тьюпл с 3 вещественными числами – координатами центра сферы в том же порядке, в яком они задаются в конструкторе.

  • метод set_radius(r), который принимает 1 аргумент – вещественное число, и изменяет радиус текущей сферы, ничего не возвращая.

  • метод set_center(x,y,z), который принимает 3 аргумента – действительных числа, и изменяет координаты центра.

  • метод is_point_inside(x,y,z), который принимает 3 аргумента – действительных числа – координаты некоторой точки в пространстве (в том же порядке, что и в конструкторе), и возвращает логическое значение True или False в зависимости от того, находится ли эта точка внутри сферы.

Тесты из некорректными данными не проводятся.

Пример последовательности действий для тестирования класса:

s0 = Sphere(0.5) # test sphere creation with radius and default center
print s0.get_center() # (0.0, 0.0, 0.0)
print s0.get_volume() # 0.523598775598
print s0.is_point_inside(0, -1.5, 0) # False
s0.set_radius(1.6)
print s0.is_point_inside(0, -1.5, 0) # True
print s0.get_radius() # 1.6

Офлайн

#2 Апрель 1, 2015 01:58:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Как разработать класс Sphere ?

https://en.wikipedia.org/wiki/Sphere
Там формулы площади и объёма.

Xryst
метод get_square(), какой возвращает вещественное число – площадь внешней поверхности сферы
surface или area, square - площадь на улице от слова квадрат.

Xryst
метод is_point_inside(x,y,z)
Расстояние между точками в пространстве равно модулю вектора.
теория



Отредактировано py.user.next (Апрель 1, 2015 02:09:28)

Офлайн

#3 Апрель 1, 2015 16:20:20

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как разработать класс Sphere ?

может пора уже самому задания делать?

import math
class Sphere:
    def __init__(self, r=1.0, x=0.0, y=0.0, z=0.0):
        self.r, self.x, self.y, self.z = r, x, y, z
    def get_volume(self):
        volume = 4 / 3.0 * math.pi * self.r ** 3
        return volume 
    def get_square(self):
        square = 4 * math.pi * self.r ** 2
        return square 
    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, self.y, self.z = x, y, z
    def is_point_inside(self, x, y, z):
        if math.sqrt((self.x - x) ** 2 + (self.y - y) ** 2 + (self.z - z) ** 2) <= self.r:
            return True
        return False
комментировать код не буду
и так все понятно



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Апрель 3, 2015 16:36:16

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разработать класс Sphere ?

terabayt
может пора уже самому задания делать?
py.user.next
https://en.wikipedia.org/wiki/SphereТам формулы площади и объёма.

Я просто не имел понятия как работать из класом, спасибо большое !

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version