Думаю над этой задачей уже вот с 17 марта (как полез гуглить про кибербоулинг и нашел эту ссылку) потихоньку. Я вроде бы даже описал движение шара от времени, но позже понял, что время тут не играет роли и окончательно запутался. Насколько я понял, нужно составить уравнение зависимости координаты Y от X, а не от времени. X — линейная функция, в свою очередь.
Короче, вроде бы школьная задачка 2011 года, но я настолько тупой, что не могу решить...
Если от времени идти, то X(t) = V * cos(a). Где t — координата, V — скорость, a — угол. Y, если он+радиус шара не больше ширины поля, Y(t) = V * sin(a). Если же он+радиус шара больше ширины поля, то шар отталкивается и его движение уже задается формулой Y(t) = V * sin(-a). Это я сразу же описал, как начал решать задачу, но потом подумал: время тут не играет никакой роли... И дальше застрял :(
Хотя, конечно, костыльное и неэстетичное решение мне на ум приходит: взять за скорость движения шара его радиус и дальше фигачить в цикле, каждый раз проверяя, не накладываются ли его координаты на какую-нибудь кеглю, но, все же, это какой-то грустный метод решения. Мне кажется, что есть более красивый, но я не могу найти его...
Короче, если тут есть те, кто когда-то был звездой школьных олимпиад (а может быть даже и сейчас), то прошу подсказать направление для размышлений.
Комментарий недоступен
Ну почти
Думаю, Олег Горохов справится. Попроси у него.
Ну да, его реквестирую в тред в первую очередь
Ты прав, что время тут ни при чём, и зачем в условии скорость — тоже непонятно. На первый взгляд задача про геометрию.
Я бы попробовал так: мы знаем, что угол падения равен углу отражения. Можно попробовать при каждом столкновении со стенкой отражать поле относительно стенки, с которой столкнулся шар. Тогда получится, что шар фактически катится по прямой. Скажем, что исходное положение шара — это начало координат, тогда уравнение этой прямой это просто 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), по идее если в этом диапазоне будет между большим и меньшим значением будет переход через целое число, то сбили кеглю, соответствующую этому числу.
Не знаю, получится ли такое решение, но как вариант для размышлений)
Комментарий недоступен
мысли тэжэшника: "такс такс такс что тут у нас ахаха мемчики наканецта побибикаем"
Комментарий недоступен
Комментарий недоступен
нет, на самом деле там должен был быть "аллах"
аллах, мемчики - ето же простой ассоциативный ряд!
Красная тревога