Свой рейтрейсер · Шаг 2 из 5
Свет по нормали
Силуэт плоский, как вырезанный из бумаги. Объём рисует свет: место шара, повёрнутое к лампе, светлое, отвёрнутое — тёмное. Иоганн Ламберт в 1760 году записал правило: яркость матовой поверхности — косинус угла между перпендикуляром к ней и направлением на источник.
Что сделать
Посчитайте, насколько ярко лампа освещает точку на шаре — по углу между нормалью и направлением на лампу.
Что приходит
tochka— точка на поверхности шара,(x, y, z)centr— центр этого шараlampa— где стоит лампа
Что вернуть
Число от 0 до 1, округлённое до 4 знаков: косинус угла между нормалью и направлением на лампу; отрицательный — 0.
Допишите функцию yarkost в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
В проекте
Каркас зовёт yarkost для каждой точки, где луч встретил шар. Решите шаг — и шары станут объёмными: светлыми к лампе и тёмными с другой стороны.
yarkost((0, 0, 4), (0, 0, 5), (0, 0, 3))
1.0
Нормаль — направление от центра шара к точке, tochka − centr, сведённое к длине 1. Направление на лампу — lampa − tochka, тоже длиной 1.
Яркость — их скалярное произведение (это и есть косинус угла между ними). Если оно отрицательное — лампа по ту сторону шара, точка в своей тени, и ответ 0. Ответ — round(…, 4).
Делить на длину нужно оба вектора: шар бывает любого радиуса, лампа — на любом расстоянии.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.