Сортировка координат x и y

Итак, есть задача: отсортировать значения системы координат по уровню отдаленности от начальной точки — 0.

Предположим у нас есть система координат, ось x и ось y. Есть массив данных координат, в виде: Array( { "x":123, "y":123 }, { "x":234, "y":234 } ). Надо этот массив отсортировать по степени отдаленности проекции координат от начальной точки координат — 0.

Логика решения:

  1. Для начала, определим длинну от точки 0 до точки проекции координат, а это у нас будет гипотенуза прямоугольного треугольника, как известно из теоремы Пифагора, квадрат гипотенузы равен сумме квадратов катетов (катеты — координаты x и y). Формула: z = Math.sqrt( x * x + y * y ).
  2. Сравним значения гипотенузы.

Результат:

function sortingCoords (a, b) {
	var az = Math.sqrt(a.x * a.x + a.y * a.y);
	var bz = Math.sqrt(b.x * b.x + b.y * b.y);
	if(az == bz) return 0;
	return (az < bz) ? -1 : 1;
}
var myCoords = [ {x:44.00002, y:55.00003}, {x:55, y:45}, {x:12.1112, y:34.1142}, {x:13.01, y:35.02} ];
myCoords.sort(sortingCoords);

Добавить комментарий