#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. Я привел их к числам, и все хорошо.