Центроид полигонального скрипта

#javascript #centroid

#javascript #центроид

Вопрос:

Я читал здесь другие примеры поиска центроида полигона, я не вижу, где я ошибаюсь, почему мой центроид так далек. Если бы кто-нибудь мог, пожалуйста, объяснить мне, где мои вычисления отключены.

Уравнение центроида

Я придумал это решение:

 function getCentroid() {
  var coords = getCoords();
  var signedArea = 0;
  var x = 0;
  var y = 0;
  
  for (var i = 0; i < coords.length - 1; i  ) {
    var temp = (coords[i].x * coords[i   1].y) - (coords[i   1].x * coords[i].y);
    
    signedArea  = temp;
    x  = (coords[i].x   coords[i   1].x) * temp;
    y  = (coords[i].y   coords[i   1].y) * temp;
  }
  
  signedArea *= 0.5;
  x /= 6 * signedArea;
  y /= 6 * signedArea;
  
  return ""   Math.round(x)   ","   Math.round(y);
}
 

getCoords() возвращает массив JSON в таком виде:

 [
   {
      "x":"600",
      "y":"124"
   },
   {
      "x":"560",
      "y":"396"
   },
   {
      "x":"994",
      "y":"370"
   },
   {
      "x":"918",
      "y":"121"
   },
   {
      "x":"600",
      "y":"124"
   }
]
 

Функция getCentroid() возвращает центроид (или, по крайней мере, должен) полигона в виде разделенной запятыми строки в форме: x,y

Однако то, что он возвращает, так далеко от центра.

возвращает: 312239,219226

Кто-нибудь может указать мне правильное направление?

Ответ №1:

Глупый я, я не понимал, что значения координат хранятся в виде строк в массиве json. Я привел их к числам, и все хорошо.