Source: https://www.learnalberta.ca/content/sfp30/html/java/collisions_1D/appletHelp/lesson2.pdf