ООП · 15 из 25
Катафот на спице
Механик проката прикрутил катафоты к спицам новых велосипедов и вечером снял ролик: колесо катится, а огонёк катафота рисует в темноте арки. На ободе — острые, как у моста, на середине спицы — пологие волны, у самой оси — почти прямая. Хочется такую заставку для табло у стойки: колесо и катафот — объект, который помнит, сколько проехал.
Что сделать
Опишите колесо с катафотом на спице: его можно катить вперёд и спрашивать, где сейчас катафот.
Что приходит
radius— радиус колесаkatafot— на каком расстоянии от оси прикручен катафот, от 0 до радиуса
Что должен уметь
Поля radius, katafot, proehalo (с нуля); метод katit(put) прибавляет путь, gde_katafot() отдаёт пару (x, y), округлённую до трёх знаков.
Допишите класс Koleso в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Колесо радиусом 1 с катафотом на ободе прокатили на 3,14159 — пол-оборота. Катафот, бывший внизу, теперь наверху, над точкой 3,142: gde_katafot() даёт (3.142, 2.0).
k = Koleso(1, 1) k.katit(3.14159)
k.gde_katafot()
(3.142, 2.0)
Koleso(radius, katafot) — колесо на дороге. Ось в начале стоит над точкой 0 на высоте radius, катафот — прямо под осью.
Поля: radius, katafot — как пришли; proehalo — сколько колесо проехало, в начале 0.
katit(put) катит колесо вправо на put — без проскальзывания, по часовой стрелке. Вызовов может быть сколько угодно: путь копится. Возвращать ничего не нужно.
gde_katafot() возвращает кортеж (x, y) — где катафот сейчас. Колесо повернулось на угол ugol = proehalo / radius (в радианах), и
x = proehalo − katafot · sin(ugol)y = radius − katafot · cos(ugol)
Оба числа округлены до трёх знаков: round(…, 3). Метод только смотрит и ничего не меняет.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.