Project 1 Resources
-------------------

Sample Programs
---------------
Project1.exe - Windows executable

This program has three features that are NOT in the requirements. (You
may implement them for extra credit.) First, for testing purposes, I
added a "target assist", which tells you where the next bubble will be
placed. Second, I implemented a feature that allows bubbles to reflect
off of walls. Third, I added an indicator in the bottom left of the
window to show the color of the next bubble, and the number of
unproductive bubble shots until the bubbles drop down one more level.

I don't show resizing the window (since Fraps aborts when I attempt it).

Note that my implementation is NOT necessarily correct. If you spot any
errors, don't feel obligated to replicate them in your program. ;-)

Screen capture
--------------
If you do not have a Windows machine from which you can execute this
program, I've created a screen capture and uploaded it to youtube:

  http://www.youtube.com/watch?v=_naWs9n_340&feature=youtu.be

parameters.txt
--------------
Lists a number of numeric quantities used in our implementation of the
program. You are allowed to copy these (without attribution), but you
are also encouraged to experiment with your own settings.

Vector2d
--------
Contains two files Vector2d.h and Vector2d.cpp. These provide
implementations of a simple 2-d affine geometry utility. It defines
the following types:

  Scalar - scalar type (aliased to double)
  Vector2d - 2-dimensional vector and various operators
  Point2d - 2-dimensional point (aliased to Vector2d)

Although the package is not a fully proper implementation of affine
geometry, it allows a user to build programs that have this flavor. For
example:

  Vector2d u, v, w;
  Point 2d p, q, r;
  ...
  w = r - p;        // set w to r-p
  p += v;           // set p to p+v
  v *= 2;           // double the length of vector v
  cout << p;        // print p
                    // u is the parallel projection of v onto w
  u = Vector2d::parProject(v, w);
