найти центральную точку многоугольника в JS - PullRequest
6 голосов
/ 27 января 2011

Я нашел хороший пример , как найти центральную точку многоугольника ( и здесь в JS ):

-> См. thisjsfiddle пример

Итак, с этим многоугольником

var polygon = [
     {'x':770, 'y':400},
     {'x':529, 'y':643},
     {'x':320, 'y':494},
     {'x':424, 'y':381},
     {'x':459, 'y':369}
];

я должен найти центральную точку следующим образом:

var con = new Contour();
    con.pts = polygon;
    document.write(con.centroid)

Но con.centroid равно undefined.

Что я делаю не так?Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 27 января 2011

Вот исправленная версия: jsfiddle

Вы допустили несколько ошибок - прежде всего вы объявили Contour и Point после их вызова - таким образом, вы не смогли использовать его,- вы назвали centroid как если бы это было свойство и это была функция, поэтому вы пропустили скобки () после centroid - в возвращаемом значении функции centroid вы передали x и y как объект, где точка функции принимает x и y как отдельные значения

3 голосов
/ 27 января 2011

Прежде всего вы должны определить все перед созданием вашего "нового Контура". Более того, centroid - это функция, поэтому вы должны вызывать ее, используя con.centroid(). Очевидно, вы хотите, чтобы эта функция возвращала «точку», но я не думаю, что это правильный путь. Взгляните на это http://jsfiddle.net/SsCux/3/

PS: я думаю, что что-то не так в расчете площади

2 голосов
/ 27 января 2011

Вы вызываете путь конструктора Contour до определения прототипа Contour. В упомянутом jsfiddle переместите document.write в конец, и все пойдет ... лучше.

Кроме того, вам нужно вызвать определенную вами функцию centroid:

var c = con.centroid();
document.write( c.x );
document.write( c.y );
...