Biorąc pod uwagę zestaw punktów 2D lub 3D:
Jak znaleźć środek geometrii obiektu?
Zgodnie z poniższym rysunkiem środek geometrii różni się od środka masy, jeżeli jest obliczany w najprostszej postaci, tj. Jednorodnej gęstości masy. Problem pojawia się w obliczeniach tych. Często jednym podejściem jest uśrednianie współrzędnych X i Y oddzielnie, tj. Znalezienie średniej pozycji dla danych punktów (tutaj w 2D). Może to być użyte jako środek ciężkości dla zbioru punktów reprezentujących obiekt. Jak pokazano, ze względu na dodatkowy wierzchołek wzdłuż dolnej krawędzi, dla prostego prostokąta powstały środek ciężkości wynosi (0,5,0,4), a prawidłowa odpowiedź to (0,5,0,5) .
Zauważ, że podany przykład jest zbyt prosty. Problem dotyczy jednak złożonych kształtów w 2D i obiektów w 3D, dla których dostępne są tylko współrzędne wierzchołków.
BTW, interesujący jest wydajny sposób obliczeniowy.
Wystarczy wspomnieć, że sprawdziłem niektóre łącza internetowe, takie jak Wikipedia, jednak moim obecnym problemem jest to, że istnieje grupa punktów 2D i 3D, które chcą znaleźć punkt jako reprezentatywny dla nich. W ten sposób centroid stał się interesujący. Punkty są podane bez żadnych informacji topologicznych. Możesz uznać je za chmurę punktów. Przedstawiona tutaj demonstracja ma na celu wyjaśnienie, że powszechnie znane uśrednianie współrzędnych (patrz na przykład niniejsze pytania dotyczące przepełnienia stosu ) może być niepoprawne, jak pokazano w przykładzie.
Oto kilka implementacji do porównania:
- aa = zaakceptowana odpowiedź poniżej
- chull = wypukły kadłub punktów, tj. złoty wielokąt
- cent = centroid zaproponowany w Wikipedii i omawiany w aa jako centroid wielokąta
- centl = centroid polilinii, jak wyjaśniono w aa
Wizualnie centl
wygląda lepiej reprezentatywnie dla podanej geometrii w porównaniu do cent
. Dwa inne wyglądają tutaj obiecująco, ale zwykle są zbyt stronnicze, jeśli rozproszenie punktów było niejednorodne, jak to zwykle bywa.
Weź również pod uwagę, że chociaż wypukły kadłub sprawia, że problem jest znacznie prostszy, może jednak generować zbyt długie i zbyt krótkie krawędzie bez jakiegokolwiek symetrycznego pozycjonowania w przestrzeni, to znaczy, świadomość jest konieczna, jeśli wykonujesz proste uśrednianie (tj. Bez ważenia) w obu przypadkach : całe punkty (zielone) lub wypukłe wierzchołki wielokąta (niebieskie).
Jedną aplikację można znaleźć w Znajdowanie prostokąta o minimalnej powierzchni dla danych punktów? .