2012-12-12 7 views
5

Powiel możliwe:
Rasterizing a 2D polygonCzy istnieje skuteczny algorytm standardowy rastrowe wielokąt tym jego wewnętrznej powierzchni

muszę rastrowe wielokąt tym jego wewnętrznej powierzchni (określić wszystkie płytki z siatka leżąca wewnątrz wielokąta). Obecnie wyznaczam płytki graniczne za pomocą prostego Bresenhama, ale nie mam do tej pory skutecznej metody rastowania "wnętrza" wielokąta (który również może być wklęsły). Dotychczasowe podejście polega na ograniczeniu zakresu kafelków do prostokąta, w tym wieloboku, a następnie określeniu dla każdego centrum płytki, czy leży on wewnątrz, czy na zewnątrz, za pomocą algorytmu uzwojenia wielokąta. Jest to nieefektywne, ponieważ wymaga sprawdzenia każdego segmentu granicy wielokąta dla każdego pola. Od pierwszego widoku zdecydowanie powinno być szybsze podejście, np. sth. jak nawijanie za pomocą rastrowanej granicy. Czy istnieje standardowy algorytm, który rozwiązuje ten problem, a może nawet implementacja biblioteki w C++?

+1

Istnieje kilka zasobów w sieci. Oto dwie pierwsze znalezione za pomocą wyszukiwarki Google: http://alienryderflex.com/polygon_fill/ i http://ezekiel.vancouver.wsu.edu/~cs442/lectures/raster/polyfill/poly.pdf – NPE

+0

@Potatoswatter : Dzięki za link. Jak już powiedziałem, potrzebuję również wnętrzności i znam zasady kręcenia, więc myślę, że to nie jest duplikat, ale triangulizacja i raster trójkątów może być drogą do zrobienia. – Martin

+0

@NPE: Fajnie, pierwsze łącze jest dokładnie tym, czego szukałem. Jeśli odpowiesz, mogę to zaakceptować od razu – Martin

Odpowiedz

6

Istnieje sporo zasobów w sieci, na przykład:

+0

Algorytm ten nie działa z niektórymi wielokątami, które mają krawędzie równoległe do osi z całymi współrzędnymi (współrzędna y, jeśli linia skanowania jest pozioma, współrzędna x, jeśli linia skanowania jest pionowy). Na przykład nie powiedzie się to w przypadku wielokąta segmentów równoległych do osi, które ograniczają literę T lub П. – gvlasov

Powiązane problemy