2011-01-27 14 views
6

Znalazłem ładne example jak znaleźć punkt środkowy wielokąta (and here in JS):znaleźć punkt środkowy wielokąta w JS

-> patrz this jsfiddle przykład

Więc z tego wielokąta

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

powinny znaleźć punkt środkowy tak:

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

Ale con.centroid jest jest undefined.

Co robię źle? Z góry dziękuję!

Odpowiedz

2

Wywołujesz konstruktor Contour zanim zdefiniujesz prototyp Contour. W powyższym jsfiddle przenieś na koniec swój document.write, a wszystko pójdzie ... lepiej.

Ponadto, trzeba rzeczywiście wywołać funkcję centroid zdefiniowano:

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

errm .. tak .. I naprawdę trzeba zrobić więcej tego prototypu rzeczy. Dziękuję Ci. – koko

5

Oto poprawiona wersja: jsfiddle

Zrobiłeś kilka błędów - przede wszystkim już ogłoszony i Contour Punkt po wywołaniu ich - w ten sposób nie mogłeś z niego skorzystać. - nazwawałeś centrum tak, jakby to była własność, a to była funkcja, więc brakowało ci nawiasów() po centroidzie - w wartości zwracanej przez funkcję środka ciężkości przekazałeś xiy jako Obiekt, w którym punkt funkcyjny przyjmuje xiy jako oddzielne wartości

3

Przede wszystkim należy zdefiniować wszystko przed utworzeniem "nowego konturu". Co więcej, centroid jest funkcją, więc powinieneś wywołać ją używając con.centroid(). Wygląda na to, że chcesz, aby funkcja zwracała "punkt", ale nie sądzę, że jest to poprawna metoda. Spójrz na tego http://jsfiddle.net/SsCux/3/

PS: Myślę, że coś jest nie tak w obliczaniu powierzchni

Powiązane problemy