АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

7. Отражения

Ограничение времени: 1 сек.
Ограничение памяти:65536 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил debug

Рендеринг реалистичных изображений воображаемой среды или объектов - интересная тема в компьютерной графике. Одним из самых популярных методов для этой цели является трассировка лучей.

Чтобы визуализировать изображения, используя трассировку лучей, вычисляют (отслеживают) путь, по которому пройдут лучи света, попадающие в сцену. Мы просим вас написать программу, которая вычисляет такие пути.

Для простоты мы рассмотрим только двухмерные сцены. Все объекты в сцене являются полностью отражающими (зеркальными) сферами. Когда луч света попадает на такую сферу, он отражается так, что угол приходящего луча и уходящего луча относительно касательной одинаков:


На следующем рисунке показан типичный путь, по которому луч света может пройти в такой сцене:


Ваша задача - написать программу, которая с учетом описания сцены и луча, входящего в сцену, определит, какие сферы посетит луч.

Исходные данные

Входные данные состоят из набора описаний сцен. Каждое описание начинается со строки, содержащей количество n (n <= 25) сфер в сцене. Следующие n строк содержат три целых числа xi, yi, ri каждая, где (xi, yi) - центр, а ri> 0 - радиус i-й сферы. Далее следует строка, содержащая четыре целых числа x, y, dx, dy, которые описывают луч. Луч исходит из точки (x, y) и изначально указывает в направлении (dx, dy). По крайней мере одно из dx и dy будет отличным от нуля.

Сферы будут непересекающимися и не соприкасающимися. Никакой луч не начинается внутри сферы и не проходит возле сфер по касательной.

Ввод завершается значением n = 0.

Результат

Для каждой сцены сначала выведите номер сцены. Затем выведите номера сфер, по которым луч попадёт в первые десять отражений (нумерация сфер соответствует их порядку на входе).

Если луч попадает не более чем в десять сфер (а затем направляется в бесконечность), выведите inf после последней сферы, в которую он попадает. Если луч достигнет более чем 10 сфер, выведите три точки (...) после десятой сферы.

Выведите пустую строку после каждого теста.

Пример

Исходные данныеРезультат
3
3 3 2
7 7 1
8 1 1
3 8 1 -4
2
0 0 1
5 0 2
2 0 1 0
0
Scene 1
1 2 1 3 inf

Scene 2
2 1 2 1 2 1 2 1 2 1 ...

Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи по темам / Математика / Геометрия /
1657. Открытки 7. 1629. Охота на зайцев 894. Прямоугольники. 1672. Сложные геометрические расчёты
Задачи с соревнований и сборов / Тренировки ВоГУ / ВоГТУ и ВоГПУ 17.11.2007 /
478. C - Parallel Deadlock 7. 479. E - Sorting Slides 12. F - Быстрое питание 480. G - Prime Cuts
Задачи с соревнований и сборов / Школьные олимпиады и курсы Вологодской области / Импульс, смена 2019 / Геометрия /
1657. 10 - Открытки 7. 1672. 12 - Сложные геометрические расчёты 1747. 13 - Всеми любимая геометрия!
 
время генерации 0.172 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.