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:
I have seen that a reference point is possible, but not for the interactive part ? https://github.com/d3/d3-zoom/pull/184/commits/fbd16edc312c85c2841b0880f3d1d210ee229d45