In d3 v3 there used to be a zoom.center() to adjust the target point while zooming via mousewheel / touch. Basically you could define a (center) target and when the user does a zoom input the zoom would steer in that direction. This was useful to avoid zooming into dead space of a scatter plot.
I was trying to recreate that behaviour with no luck. Got the nearest neighbour implemented via a quadtree (voronoi can be used here too) but the “steering” part is missing: