No to tworze sobie obiekt z bitmapy, zlozony z kwadratow (KAZDY KWADRAT TO JEDEN PIKSEL)
Ale jak np. zamienic kilka kwadratow na jakis wiekszy prostokat , zeby nie generować aż tylu kwadratów? :)
No to tworze sobie obiekt z bitmapy, zlozony z kwadratow (KAZDY KWADRAT TO JEDEN PIKSEL)
Ale jak np. zamienic kilka kwadratow na jakis wiekszy prostokat , zeby nie generować aż tylu kwadratów? :)
Puszczasz pętle po wzsystkich kwadratach i sprawdzasz czy dany kwadrat jest otoczony ze wszystkich stron kwadratami, jeżeli tak to je scalasz i zwikszasz licznik scalen. Petle wywolujesz do momentu w ktorym po jej pelnym przejsciu licznik pozostanie taki sam.
cyriel napisał(a)
Puszczasz pętle po wzsystkich kwadratach i sprawdzasz czy dany kwadrat jest otoczony ze wszystkich stron kwadratami...
Chyba niekoniecznie ze wszystkich, skoro dopuszczalne są prostokąty.
moze zbudowac quadtree podczas czytania pixeli bitmapy? (node=calyczarny/calybialy/zlozonyzdzieci) -> obrazek zlozony z duzo mniejszej ilosci kwadratow pokrywajacych.. ale nie minimalnej
a tak ogolniej - na bitmape przylozyc filtr wykrywajacy linie (krawedzie), w nich probowac znalezc zbiory tworzace prymitywy znane Twojemu silnikowi (tu: prostokat/rownoleglobok), zapamietac je i uzywac..
ew. mozna szukac tylko takich ktore nie zawieraja w sobie obszarow innego koloru, potem je wymazac z oryginalu obrazka, zobaczyc czy cos zostalo poza tlem, powtorzyc - w ten sposob otrzymalbys 'warstwy' (wiesz, ogry maja warstwy.. ]:>) od najwyzszej do najnizszej (tlo) --- czyli np. z trojkolorowego obrazka [CO] moze otrzymalbys: O, OO (nachodzace na siebie) i [ ] (czyli prostokat tla)
taka mysl.. ekspertem w tej dziedzinie nie jestem:)