Regular hex grid on parallelogram surface

I have a surface on which I would like to generate a regularly sized hex grid of a specific width. My current approach is to divide the surface dimensions based on my desired hex width. I am currently using the Hex Cells component from the Lunchbox plugin for convenience in getting the grid onto a surface.

The approach works well for “right-angled” surfaces but fails on anything with a slope between the two surface axes, as shown by the overlapping circles.

I’m trying to find a robust way of adjusting the number of divisions, perhaps by factoring in the slope, but have come up short. I’d prefer not to overlap the surface with a rectangular grid and cull the hexagons outside the surface, as I will be working with widths that will result in >10000 hexagons and the boolean tests will be extremely expensive.

Edit: Ideally, the hex grid edges should line up with the surface edges as well, instead of what is shown in my screenshots where the hex centers line up with the surface edges. I am currently getting around that by doing the hex grid generation on a scaled down version of the surface so that the resulting hex edges roughly line up with the surface edges, but I am open to hearing if anyone has a better method for this as well!

hex_grid_question.gh (15.3 KB)