I'd probably prefer to call this `inBounds`, since it doesn't reflect "visible" so much as "intersects the current viewport"