Разработать физику свободного падения объекта на c++

Мне нужно написать программу, которая будет моделировать ситуацию:


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

  1. t - время, за которое этот объект упадет на землю.
  2. V - скорость нач., скор. конеч., среднюю скорость.
  3. ускорение свободного падения

Также надо: смоделировать силу упругости (то есть, на сколько подпрыгнет после приземления).

Все это нужно сделать графически, используя c++.
Какими средства лучше всего использовать?
SFML, OpenGL, или что-то есть более подходящее для этой цели?
И есть ли какая-либо литература по этому вопросу.
Спасибо.


Ответы (1 шт):

Автор решения: Antares

Из моего стека знаний это легче всего сделать в Юнити3д, если дозволено использовать шарп. Начальная скорость будет 0 при этом в апдейте ему нужно задать ускорение Это даст среднюю скорость, скорость в любой момент и данные об ускорении Чтобы показать упругость нужно прописать обратное ускорение при касании объекта, это можно сделать в классе шара, там же можно подставить разные константы упругости и по кнопкам использовать именно их для отображения разных материалов. В +сах это тоже можно сделать путем приложения, но тут уже придется больше повозиться, хотя механика все та же - создать класс шара и поверхности, задать вектор движения шара и метод, который будет генерировать его в пространстве, за пол можно брать просто нижнюю границу экрана, в целом это можно сделать и без сторонних библиотек. В итоге имеем в любом из вариантов

  • Класс шара со всеми примочками ( ускорение, обязательно публичное поле - скорость, упругость)
  • Класс пространства (в нем прописуем нижнюю границу, взаимодействие ее с шаром, а также метод, который будет отвечать за соотношение высоты и отображение линейки на экране, подсчет времени в полете (от 0 до препятствия или остановки) ну и в конце метод, который будет генерировать этот шар на нужной нам высоте)
  • Ну и пользовательский интерфейс (Выбор материала (константы упругости), высоты, по желанию цвета шара и кнопки старта. Далее поля, которые покажут скорость, время и ускорение для данной сессии ну и мелочи по желанию. ) На этом все - удачи

P.S. - про момент падения шара Нужно задать ему постоянное ускорение (по формуле в зависимости от массы и материала) по вектору вниз в апдейте, который будет срабатывать скажем каждые 0.1 или 0.01 секунды, а при касании умножить скорость на -1(х), где х будет отвечать за то, сколько скорости у него останется после падения, таким образом он будет подскакивать вверх, терять скорость и падать вниз, пока скорости будет достаточно для подъема.

→ Ссылка