Finding the closest grid coordinate to the mouse position with javascript/jQuery

Acorn picture Acorn · Apr 26, 2010 · Viewed 7.3k times · Source

What I'm trying to do is make a grid of invisible coordinates on the page equally spaced. I then want a <div> to be placed at whatever grid coordinate is closest to the pointer when onclick is triggered. Here's the rough idea:

alt text

I have the tracking of the mouse coordinates and the placing of the <div> worked out fine. What I'm stuck with is how to approach the problem of the grid of coordinates.

First of all, should I have all my coordinates in an array which I then compare my onclick coordinate to?

Or seeing as my grid coordinates follow a rule, could I do something like finding out which coordinate that is a multiple of whatever my spacing is is closest to the onclick coordinate?

And then, where do I start with working out which grid point coordinate is closest? What's the best way of going about it?

Thanks!

Answer

Jeriko picture Jeriko · Apr 26, 2010

In terms of working out which grid point is closest - say, for example, each block is 10x10 pixels - to get the grid index you would just divide them out -

  1. Click at [ 237 ; 112 ]
  2. Blocks of 10x10
  3. Grid index = [ 237/10 ; 112/10 ] = [ 23.7 ; 11.2 ]
  4. Round them to get the "closest"
  5. Block indices are 24;11

If you need to store the data, you could push the grid co-ordinates to an array on click, to reference later.