A couple issues that I thought I should bring up:
a) When either line.a or line.b is (0, 0), line.getTheta() always returns PI/2; I feel like it should return NaN or something along those lines. I spent the last thirty minutes scratching my head at "1.5707964" before I realized the issue.
b) You should document that getTheta() returns the angle between the vectors defined by its two points; I was under the impression that it returned the line's angle with respect to the positive X-axis (that is, treating the line like a Vec2D "starting" at line.a and "ending" at line.b)
c) Again, documenting that Vec2D.getNormal() returns a Vec2D with zero as the dot product; I thought it returned a vector with equal angle and a magnitude of one.
Sorry if this is sounding a little nit-picky, just trying to help improve the library :)