URGENT: Do not use the Point class, it stores x and y as int and thus cannot be used for unit vectors.  I wrote a small Vector2D class which stores them as doubles, and has convenient functions like getUnitVector() and getMagnitude() to clean up the other code.  I am pretty sure I changed every Point to a Vector2D but I may have missed a few.  The constructors are the same so there are no logic differences, just variable declaration.