Офтоп
Kolyanok

Сложный кибербоулинг

Думаю над этой задачей уже вот с 17 марта (как полез гуглить про кибербоулинг и нашел эту ссылку) потихоньку. Я вроде бы даже описал движение шара от времени, но позже понял, что время тут не играет роли и окончательно запутался. Насколько я понял, нужно составить уравнение зависимости координаты Y от X, а не от времени. X — линейная функция, в свою очередь.

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

Если от времени идти, то X(t) = V * cos(a). Где t — координата, V — скорость, a — угол. Y, если он+радиус шара не больше ширины поля, Y(t) = V * sin(a). Если же он+радиус шара больше ширины поля, то шар отталкивается и его движение уже задается формулой Y(t) = V * sin(-a). Это я сразу же описал, как начал решать задачу, но потом подумал: время тут не играет никакой роли... И дальше застрял :(

Хотя, конечно, костыльное и неэстетичное решение мне на ум приходит: взять за скорость движения шара его радиус и дальше фигачить в цикле, каждый раз проверяя, не накладываются ли его координаты на какую-нибудь кеглю, но, все же, это какой-то грустный метод решения. Мне кажется, что есть более красивый, но я не могу найти его...

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

0
12 комментариев
Написать комментарий...
Кредитный динозавр

Комментарий недоступен

Ответить
Развернуть ветку
Передовой пёс_анон

Ну почти

Ответить
Развернуть ветку
Острый татарин

Думаю, Олег Горохов справится. Попроси у него.

Ответить
Развернуть ветку
Передовой пёс_анон

Ну да, его реквестирую в тред в первую очередь

Ответить
Развернуть ветку
Фирменный алмаз

Ты прав, что время тут ни при чём, и зачем в условии скорость — тоже непонятно. На первый взгляд задача про геометрию.
Я бы попробовал так: мы знаем, что угол падения равен углу отражения. Можно попробовать при каждом столкновении со стенкой отражать поле относительно стенки, с которой столкнулся шар. Тогда получится, что шар фактически катится по прямой. Скажем, что исходное положение шара — это начало координат, тогда уравнение этой прямой это просто y = tgα · x. Также надо найти уравнения прямых, по которым двигаются края шара, чтобы потом определять столкновения.
Теперь нужно для каждой кегли найти её координату в нашей новой системе координат, которая вся из отражений и попытаться найти пересечения кеглей с вот этими тремя прямыми. Я не придумал, как это делать, но мб тебе поможет.

Ответить
Развернуть ветку
Крепкий паркур

Выглядит как чистая геометрия.
Если x = 10 м (ширина коридора - 2l, расстояние между кеглями l), то можно высчитывать отрезок y (который будет катетом меньшего треугольника) и складывать результаты до тех пор, пока он не будет делиться на x. Число, полученное при этом по идее и будет номером кегли.
Если добавлять радиусы, то надо по идее как-то добавить в деление диапазоны y = tgα · x ± R, то есть для каждого значения y считать (y+R)/(x+R), (y+R)/(x-R), (y-R)/(x+R), (y-R)/(x-R), по идее если в этом диапазоне будет между большим и меньшим значением будет переход через целое число, то сбили кеглю, соответствующую этому числу.
Не знаю, получится ли такое решение, но как вариант для размышлений)

Ответить
Развернуть ветку
Молочный дым

Комментарий недоступен

Ответить
Развернуть ветку
Органический Гоша

мысли тэжэшника: "такс такс такс что тут у нас ахаха мемчики наканецта побибикаем"

Ответить
Развернуть ветку
Недостаточный корабль

Комментарий недоступен

Ответить
Развернуть ветку
Молочный дым

Комментарий недоступен

Ответить
Развернуть ветку
Органический Гоша

нет, на самом деле там должен был быть "аллах"
аллах, мемчики - ето же простой ассоциативный ряд!

Ответить
Развернуть ветку
Итальянский калькулятор

Красная тревога

Ответить
Развернуть ветку
Читать все 12 комментариев
null