Applying a polygonal (hexagonal) grid to a surface

I'm playing around with an idea about applying a hexagonal grid to an (as yet undefined) irregular geometry. I want to be able to easily adjust the density of the polygonal grid, within a range.

The grid is an array of circles, but I'm representing them here as hexagons. My poor little laptop can't cope otherwise!

Presently I'm using Sverchok, but happy to explore other node-based solutions.

The key parameters are as follows:

• The circles are uniform and can range in Radius from 1 unit to 4.5
• The space between circles must be no less than 1 unit (currently I've defined a minimum size ('Centers') of 5 but really the minimum size should be 1 unit larger than the Radius - couldn't figure out how to do this either!)
• While the circles cannot change radius (other than by manual input), and the spaces between them cannot be less than 1 unit, they can be further apart, in order to make as even arrangement as possible on the irregular surface.
• The finished part should be printable.

So, question one is how might I apply this polygonal grid to a surface, and scale it within the rules specified?

(and is this a sensible way to construct a polygonal grid?)

By way of analogy, if I was doing this along a line, I might look at using Sverchok's Duplicate Objects Along Edge node, but I can't think how to make this work across a surface (regular or otherwise).