Collision Question
Question submitted by (16 July 1999)

Return to The Archives
  I'm writing collision routines for a very simple game, and need to determine the outcome of a collision of two spherical objects, both of which are the same size. One of the objects will remain stationary, and the other is in motion. I have calculated the vector between the two objects, and have a vector of the direction of motion for the moving object. Is there an easy way to calculate the new direction of the moving object?  

  let P be the point of contact on the stationary sphere. the vector from the centre of this sphere toward P is PO. the tangent at P is perpendicular to PO. also, suppose the direction of motion of the moving sphere is labeled D.

\ D \ \ \ \ -----P-------- tangent on the stationary sphere at P | | | | | PO |

the moving sphere will bounce away from P along the direction D' such that the angle between D and PO is the same as the angle between D' and PO.

\ D / D' \ / \ / \ / \ / -----P-------- tangent on the stationary sphere at P | | | | | PO |

extending D "into" the sphere and projecting the endpoint onto the tangent yields the vector XP, the component of D' parallel to the tangent.

\ D / D' \ / \ / \ / \ / -----P----X--- tangent on the stationary sphere at P |\ | | \ | | \ | | \| | PO |

of course, if the vectors D and PO are colinear, the moving sphere will simply bounce back in the direction of -kD where k is some constant.

Response provided by Hin Jang

This article was originally an entry in flipCode's Fountain of Knowledge, an open Question and Answer column that no longer exists.


Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.