Ну, тут не сколько физика сколько логика.
При столкновении большого тела и маленького, большое тело потеряет часть скорости или остановиться, а маленькое отскочить. (И тут уже нужна формула, ее можно найти в интернете) но это если хочешь реалистичную физику. А не просто на сухой логике с векторами.
Логика представления этой информации имелось и до начала постройки программы, однако ,не раз уже сталкиваюсь с тем что не особо понимаю расстановку циклов , где должно выполняться то или это , тоесть конечный результат я вижу , а решения , как добиться этого решения методом подсчёта в цикле допустим , и на какой итерации и тд , вот с этим сложности немного , и мега большие сложности с массивами "листами" , не всегда понимаю что можно тут допустим запаковать в массив , а в части другого кода распаковать и внести изменения и тд все что связанно с массивами , ну или все усложняю хотя на самом деле все проще чем кажется