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

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

Луч и шар

Рейтрейсер рисует картинку наоборот: не свет летит в глаз, а из глаза через каждую точку экрана выпускают луч и смотрят, во что он упрётся. Самый простой предмет для луча — шар: о нём достаточно знать центр и радиус.

Что сделать

Найдите, где луч впервые встречает шар, — или скажите, что не встречает.

Что приходит

  • nachalo — откуда выходит луч, точка (x, y, z)

  • napr — куда он идёт, тройка (dx, dy, dz); длиной 1 быть не обязана

  • centr и radius — центр шара (x, y, z) и его радиус

Что вернуть

Число t, округлённое до 6 знаков: встреча — в точке nachalo + t · napr, ближайшая с t > 0.0001; встречи нет — None.

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

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

В проекте

Каркас выпускает луч через каждую точку картинки и спрашивает luch_v_shar про каждый шар: ближайшая встреча — то, что видно в этой точке. Решите шаг — и на картинке проступят шары.

Пример

Луч из начала координат прямо вперёд, (0, 0, 1), шар радиусом 1 с центром в (0, 0, 5). Передняя стенка шара — в точке (0, 0, 4), до неё четыре длины napr: ответ 4.0.

Тот же пример кодом
Вызов
luch_v_shar((0, 0, 0), (0, 0, 1), (0, 0, 5), 1)
Вернуть
4.0
Ctrl+Enter — проверить

Обсуждение

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

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