Collision detection is an essential feature of game programming, and since we're programmers, and games are cool (for some values of games, and some values of cool), therefore, I'm going to recommend that take a look in that area for algorithms and techniques.
As an aside, one thing that took some getting used to, after moving to southern Florida, was that when the forecasters there said "25% chance of rain" it meant something different than when that exact same phrase was uttered in the rest of America. In S. FL, it meant "25% of the listening area will get wet" compared to the rest of the country, where it means "no chance of rain."
The book Game Programming Gems (the first one) has a chapter on collision detection. http://www.amazon.com/Game-Programming-Gems/dp/1584500492/
Article to start with: http://www.gamedev.net/reference/articles/article1234.asp
As an aside, one thing that took some getting used to, after moving to southern Florida, was that when the forecasters there said "25% chance of rain" it meant something different than when that exact same phrase was uttered in the rest of America. In S. FL, it meant "25% of the listening area will get wet" compared to the rest of the country, where it means "no chance of rain."