Reference images added.
Fixed left hand side
General intersection line routine has been added.

intersectionTime will determine when a line intersects with
a moving particle. intersectionPoint will return where it happens.
Currently, the time seems to be always negative, so I think my velocity
is pointing backwards somewhere. Probably next up is to wrap the wall
into it's own object. Also, defining velocity(particle) as a convenience
function would probably be a good idea.
Resolved negative time bug.

I had passed in particle.pos rather than particle.lastPos into
intersectionPoint, which resulted in the time of collision happening
in the past.
Made velocity calculation mutable.

Was getting GC hangs, so I made the velocity calculation a fixed
allocation.