Consider finite piece of lattice i.e. points of the form m*h1 + n*h2, for `0<m,n<N`

h1, h2 -some vectors. Consider some point "P" on the plane. How to find (m,n) such that m*h1 + n*h2 is closest to "P" ?
I mean what is the simplest method ? Of course we can use brute force search since finite set of points, but may be there is elegant solution ?

The problem is that "lattice reduction" may bring us out the finite set of points...

The problem may be also reformulated like: minimize in int "k" f(k)= (x - (k*b mod a))^2 + (y-k*h)^2 , for given a,b,h,x,y (which may be assumed integers)

the first term is jumping in "k" because of mod a and this a problem...