ООП · 13 из 16
Лава-лампа
В будке механика на стойке проката всю ночь светится лава-лампа: капли воска всплывают, сливаются и снова расходятся. Механик хочет такую же на табло — без картинок, одними числами. Каждая капля светит вокруг себя, ярче в середине и слабее к краю, а свечение соседних капель складывается: где сумма большая — там воск, и две близкие капли срастаются перемычкой сами.
Что сделать
Опишите каплю воска: сколько света она даёт в точке и как её сдвинуть записью kaplya += (dx, dy).
Что приходит
xиy— где центр каплиradius— докуда капля светит
Что должен уметь
Поля x, y, radius; метод vklad(px, py) — свет капли в точке; kaplya += (dx, dy) сдвигает ту же каплю.
Допишите класс Kaplya в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Капля в точке (0, 0) радиусом 2. В точке (1, 0) расстояние в квадрате 1, доля от квадрата радиуса — 1/4: свет (1 − 1/4)³ = 0.421875.
Kaplya(0, 0, 2).vklad(1, 0)
0.421875
Kaplya(x, y, radius) — капля с центром в (x, y). Поля x, y, radius — как пришли.
vklad(px, py) — свет капли в точке (px, py). Пусть d2 — квадрат расстояния от центра до точки. Если d2 < radius², свет равен (1 − d2 / radius²) ** 3; иначе — 0.0. В центре свет 1, на краю и дальше — ноль. Число дробное; сравнивается с точностью до миллионных.
kaplya += (dx, dy) сдвигает каплю: к x прибавляется dx, к y — dy. Сдвигается та же самая капля — кто держит на неё другую ссылку, видит её уже сдвинутой, — и после += в переменной остаётся капля, а не что-то другое.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.