1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Perfect Sphere's colliding using only vectors

  1. Dec 22, 2013 #1
    The problem I have is I need to find the force applied to a perfect sphere after colliding with another perfect sphere. For both spheres I have:

    position as <x,y>
    Velocity as <x,y>
    coefficient of restitution

    I am writing a program which simulates a bunch of balls bouncing around so I need to have an series of equations that when using the above values for two balls (that I know are colliding) it gives a force (as <x,y>) that is applied to the current sphere. The force being applied instantaneously.

    I have searched online and read up on http://en.wikipedia.org/wiki/Inelastic_collision (which only does one dimensional) and other sites like http://www.hoomanr.com/Demos/Elastic2/ . Of the sites that do go into two dimensional they use angle and magnitude, or directly change the velocity of the sphere. I only want the force applied during the collision. I have a decent knowledge of basic physics but for whatever reason I just cannot get this to work properly.

    What I currently have is a Frankenstein of the wiki page that works relatively well, but it treats every collision as head-on so it isn't ideal.
  2. jcsd
  3. Dec 22, 2013 #2


    User Avatar
    Gold Member

    drfrev, I'm not qualified to help you find the force applied to a perfect sphere after colliding with another perfect sphere using a simulation.

    I do, however, have a suggestion that may assist you. I have more than 50 years experience playing billiards and pool. In these games we cause one perfect sphere to collide with another perfect sphere. We shooters learn to control the momentum of the first perfect sphere (cue ball) so as to impart a particular desired momentum to the second perfect sphere (object ball). If you experiment with these real-world objects you might gain some insight on the issue, and thereby learn to control your simulation more effectively. Go out and shoot some pool or billiards.
    Last edited: Dec 23, 2013
  4. Dec 23, 2013 #3


    User Avatar
    Gold Member

    We have [itex] F=\frac{\Delta p}{\Delta t} [/itex].If [itex]\Delta t [/itex] approaches zero for non-zero [itex] \Delta p [/itex],F approaches infinity.This is the ideal situation of a momentary force.But things are not ideal in the real world.[itex]\Delta t [/itex] may be very small but it is not zero,so the force maybe very large but not infinity.The Force maybe even a complex function of time but if we consider a small enough [itex]\Delta t[/itex] we may assume its constant.But what is its value?well,that depends on [itex] \Delta p [/itex] and the value you want to assign to [itex] \Delta t [/itex]. But[itex] \Delta p [/itex] can only be determined using the conservation of momentum so this scheme of force description of a collision,isn't fundamental and is of less use than the method using the conservation of momentum.
  5. Dec 23, 2013 #4


    User Avatar
    Science Advisor

    How long is "during"? See what Shyan said.

    Connect the centers of the balls with a line. That is the collision normal. Now you can decompose all forces, velocities into normal and tangential components. The normal direction is just like the 1D version. The tangential forces depend on frictional parameters, and introduce spin, so you need parameters for rotational inertia as well, if friction is non-zero.
  6. Dec 23, 2013 #5
    This is a common issue when simulating contact problems. You're trying to start with some initial conditions and time stepping forward using some suitable equation (state at t = i+1 = function of state at t = i), but the problem here is that the physics are boring for long periods of time, and then for an instant, the forces are huge. You will find it extremely difficult to deal with this using a standard time-stepping algorithm.

    I suggest you use some mixed formulation. You have analytic equations for the positions of the balls before any collisions occur, then you need to find some way of detecting a collision (again, this can be done analytically): distance between two ball centres <= sum of the ball radii. At this stage you then use momentum conservation to instantaneously modify the two balls' velocities, and you end up with a new set of trajectories.

    This will be a far more accurate (and faster) method than integrating forces with direct time-stepping.
  7. Dec 23, 2013 #6


    User Avatar
    Science Advisor
    Gold Member
    2017 Award

    This question requires the word "Impulse" in any useful answer. You don't need to specify the force or the time of the force, involved in a collision (the information usually doesn't exist). What you need to consider it the change of momentum and this is given by the Impulse (Force times Distance but you don't actually need to know the actual force or distance and the force doesn't need to be uniform). All collision problems tend to be dealt dealt with in this way. Momentum is always conserved (kinetic energy is not) and you can use this to solve the problem. If the balls really are spherical and smooth, the applied impulse will always be along the radius for the collision. That means the tangential velocity will be unaffected and the Normal velocity (velocity of approach) times the coefficient of restitution (which tells you the efficiency of the process) gives the Normal velocity of separation. The geometry is harder for balls of different diameters but it's all easily able to be calculated.
    As mikeph says, it would be a laborious process to do 'time stepping' but it may be difficult to avoid this when there are many balls with collisions at different times. You need to be able to calculate when trajectories coincide (in space and time) and then work out the changes in velocities.
    Is there a Games Writing Forum somewhere?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook