Войти Создать аккаунт

Свой рейтрейсер · Шаг 3 из 5

Тень

Шары освещены, но висят в воздухе: ни один не бросает тени. Тень — это вопрос, который точка задаёт лампе: «ты меня видишь?». Ответ даёт тот же луч — только выпущенный из точки к лампе.

Что сделать

Скажите, заслоняет ли какой-нибудь шар лампу от этой точки.

Что приходит

  • tochka — точка, которую освещают, (x, y, z)

  • lampa — где стоит лампа

  • shary — шары сцены: список пар (центр, радиус)

  • luch_v_shar — ваш шаг 1: luch_v_shar(nachalo, napr, centr, radius) даёт t или None

Что вернуть

True, если хоть один шар встречает луч от точки к лампе раньше лампы, иначе False.

Допишите функцию v_teni в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой

В проекте

Каркас спрашивает v_teni для каждой освещённой точки: в тени — свет лампы ей не достаётся. Решите шаг — и шары отбросят тени на пол и друг на друга.

Пример

Точка на полу (0, -1, 0), лампа над ней в (0, 5, 0), над точкой висит шар. Направление луча — lampa − tochka, то есть (0, 6, 0); шар встретился при t = 0.5 — на полпути, раньше лампы. Ответ True.

В проверке вместо вашего шага 1 стоит игрушка: она говорит «встреча на полпути» про шар радиусом 1 и «мимо» про все остальные.

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.