Автор: | Maxim Kuzin | Ограничение времени: | 60 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Вам поручено провести важное научное исследование — изучить упругое столкновение двух тел.
Чтобы упростить задачу, вам предлагается сцена в Unity
с двумя шарами. В этой сцене уже реализована механика движения и столкновения тел. Все, что вам осталось сделать — это написать дополнительный скрипт, который засекает определенное время и выводит координаты мячей после моделирования их движения в течении этого времени.
Для взаимодействия со сценой вы можете использовать любые функции Unity
, а также дополнительный объект — controller
. Однако, весь ваш код должен находиться в классе Solution
. Другие изменения в сцене учитываться не будут.
Объект controller
предоставляет следующие функции для работы со сценой:
controller.getTime()
— возвращает общее время, в течении которого требуется моделировать системуcontroller.Pause()
— останавливает моделирование (шары перестают двигаться)controller.Resume()
— возобновляет моделирование (шары начинают двигаться)controller.getFirstBallVelocity()
— возвращает текущую скорость первого шараcontroller.getSecondBallVelocity()
— возвращает текущую скорость второго шараcontroller.getFirstBallPosition()
— возвращает текущую позицию первого шараcontroller.getSecondBallPosition()
— возвращает текущую позицию второго шараcontroller.setFirstBallPosition(Vector3 v)
— устанавливает текущую позицию первого шара в позицию v
controller.setSecondBallPosition(Vector3 v)
— устанавливает текущую позицию второго шара в позицию v
controller.setAnswer()
— заканчивает моделирование, текущие координаты шаров будут записаны в ответ
Изначально система находится на паузе. Обратите внимание, что шары начнут
двигаться сами, как только вы вызовете метод controller.Resume()
.
Также, заметьте, что требуемое время моделирования может быть достаточно большим.
Шары двигаются без трения и ускорения.
Проект
https://github.com/Supermagzzz/NTI_TASK1
,
Вам осталось реализовать класс Solution
.
Вы можете тестировать свои решения, изменяя данные, содержащиеся в файле input.txt
в репозитории проекта.
Входной файл содержит пять строк.
В первой строке содержится требуемое время моделирования t.
Во второй и третьей строке содержатся координаты первого и второго шаров, соответственно xi, yi, zi.
В четвертой и пятой строке содержатся начальные скорости первого и второго шаров, соответственно vx, vy, vz.
Все числа во входном файле вещественные.
Реализовывать считывание данных с файла input.txt
не нужно.
Для получения данных используйте функции, реализованные в controller
.
Файл с решением должен содержать реализацию класса Solution
.
Координаты, полученные с помощью вашего решения, должны иметь погрешность
не больше одной единицы в координатах Unity
.
Реализовывать вывод в файл output.txt
не нужно.
Для вывода ответа используйте метод setAnswer()
, описанный выше.
0 ≤ t ≤ 105
− 1000 ≤ xi, zi ≤ 1000
− 1000 ≤ vx, vz ≤ 1000
yi = 0.5, vy = 0
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|