Calculate distance between two x/y coordinates?

Ropstah picture Ropstah · Jan 23, 2010 · Viewed 11.2k times · Source

I would like to calculate the distance between two x/y coordinates on the surface of a torus. So, this is a normal grid that has the property that its corners and sides are 'connected'. For example, on a grid of 500x500, the point at (499, 499) is adjacent to (0, 0) and the distance between e.g. (0,0) and (0,495) should then be 5.

Is there any good mathematical way of calculating this?

Answer

ezod picture ezod · Jan 23, 2010

So you are looking for the Euclidean distance on the two-dimensional surface of a torus, I gather.

sqrt(min(|x1 - x2|, w - |x1 - x2|)^2 + min(|y1 - y2|, h - |y1 - y2|)^2)

where w and h are the width (x) and height (y) of the grid, respectively.