Задача 4 (Мастер биллиарда)

Правила проведения олимпиады, условия задач и комментарии к ним, результаты олимпиады и апелляции.
Руководители: к.ф-м.н., профессор Пирогов Владислав Юрьевич, ник - Vladislav_133; к.п.н, доцент Слинкин Дмитрий Анатольевич, ник - xdsl

Задача 4 (Мастер биллиарда)

Сообщение Vladislav_133 04 апр 2015, 10:26

Здесь будет обсуждение
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Задача 4 (Мастер биллиарда)

Сообщение Vladislav_133 08 апр 2015, 09:25

Ну начнем с картинки.
Вложения
1~2.jpg
1~2.jpg (11.18 Кб) Просмотров: 1049
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Задача 4 (Мастер биллиарда)

Сообщение Vladislav_133 08 апр 2015, 09:42

Главное здесь уравнение прямой и игра с углами.

Если известна точка и угол направления (к оси X) то уравнение прямой:

(y-y1) = (x-x1) * tg(alfa)

зная уравнение можно найти пересечение с любой из сторон:
1:
x=0; y=y1-x1*tg(alfa)
2:
y=b; x=(b-y1)/tg(alfa)+x1
3:
x=a; y=y1+(a-x1)*tg(alfa)
4:
y=0; x=(-y1)/tg(alfa)+x1;

Проверив точки пересечения мы обнаружим, те, которые относятся к прямоугольнику - не выходят за указанные рамки.

Конечно подходящих пересечений будет 2, но каждый раз мы будем знать от какой стенки шар оттолкнулся, т.е. узнаем
в какую точку другой стены он ударится.

С углами тоже очень интересно. Во-первых, удобно оперировать углом 0<=alfa<=180.
Я так в свое программе и делаю. Оказывается при ударе о любую стенку угол (относительно оси X) меняется
по формуле: 180-alfa.

Вот собственно и вся теория. Дальше надо писать программу.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Задача 4 (Мастер биллиарда)

Сообщение Vladislav_133 08 апр 2015, 14:38

Не оптимизированный текст программы я выкладываю, как прикрепленный файл.
Кому интересно, можно с ним поработать. Но показывать я его не показываю, чтобы не демонстрировать
ужасный стиль программирования ;) . Оптимизированный вариант выложу на днях.
Вложения
prog5.c.7z
(979 байт) Скачиваний: 176
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.


Вернуться в Олимпиада по программированию

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron