Just took a quick skim through your code,... are you accounting for a size at the points at all?
I didn't see anything, and since the collision only happens at the points, then things will fall through easily.
I didn't see anything, and since the collision only happens at the points, then things will fall through easily.