Well depending on how you’re doing the noise you will have a function noise(x,y) which you can scale and offset with noise(x*scale+offsetX, y*scale+offsetY), or maybe you’re just setting random values to a 2d array.
Anyways let’s say for example you want a 2d grid with a point every 32 pixels. Just have a 2d array of z values.
You can get the nearest point’s z with
Z = Array.at(round(x/32), round(y/32))
Or if you want a linear interpolation between the points it would be:
Z = lerp(
lerp(array.at(int(x/32),int(y/32)), array.at(int(x/32)+1,int(y/32)), x/32-int(x/32)),
lerp(array.at(int(x/32),int(y/32)+1), array.at(int(x/32)+1,int(y/32)+1), x/32-int(x/32)),
Y/32-int(y/32))
Or something like that. Google bilinear interpolation for other explanations. You can also do bicubic interpolation but that’s more involved albeit gives curved interpolation. Or you could use cosp instead of lerp.
Anyways, it’s a bit harder to reason about 3d problems from descriptions.