Итак, есть задача: отсортировать значения системы координат по уровню отдаленности от начальной точки – 0.
Предположим у нас есть система координат, ось x и ось y. Есть массив данных координат, в виде: Array( { "x":123, "y":123 }, { "x":234, "y":234 } ). Надо этот массив отсортировать по степени отдаленности проекции координат от начальной точки координат – 0.
Логика решения:
- Для начала, определим длинну от точки 0 до точки проекции координат, а это у нас будет гипотенуза прямоугольного треугольника, как известно из теоремы Пифагора, квадрат гипотенузы равен сумме квадратов катетов (катеты – координаты x и y). Формула: z = Math.sqrt( x * x + y * y ).
- Сравним значения гипотенузы.
Результат:
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);