• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obliczenie pola powierzchni figur

Object Storage Arubacloud
+2 głosów
840 wizyt
pytanie zadane 22 czerwca 2017 w C i C++ przez Dawid115 Nowicjusz (190 p.)

Witam, po kilku przekształceniach otrzymałem taki obraz bmp.



W programie cały plik przechowuje w tablicy struktur.
Mam zadanie, aby policzyć dla każdej figury osobno pole powierzchni i środek ciężkości, jednak nie przychodzi mi do głowy żadne konkretne rozwiązanie.
Bardzo prosiłbym o sugestie jak mógłbym to zrobić.
Z góry dzięki :)

2 odpowiedzi

+3 głosów
odpowiedź 23 czerwca 2017 przez obl Maniak (51,280 p.)

Ja to widzę tak:

  1. znajdujesz pierwszy piksel na bitmapie, który jest czarny
  2. wykorzystując algorytm przeszukiwania wszerz znajdujesz wszystkie piksele, które są z sobą połączone, równocześnie w algorytmie musisz zawrzeć tworzenie tablicy pikseli, które zostały zaklasyfikowane jako część figury oraz zamalowywać już załączone punkty kolorem białym
  3. powtarzasz krok 1 -> 2 dopóki na bitmapie już nie będzie czarnych pikseli
  4. na wyjściu powinieneś mieć tablicę obiektów zawierających współrzędne pikseli danej figury płaskiej
  5. wewnątrz danego obiektu znajdującego się w tablicy powinny znaleźć się metody obliczające: pole powierzchni i środek ciężkości figury płaskiej

Innymi słowy poszukaj informacji na temat algorytmu przeszukiwania w szerz, ja stosowałem ten algorytm jako sposób na znajdowanie najkrótszej ścieżki przemieszczania od punku A do B w grze więc ten algorytm ma całkiem ciekawe i przydatne zastosowanie praktyczne.

komentarz 23 czerwca 2017 przez criss Mędrzec (172,590 p.)

algorytm przeszukiwania wszerz

Chodzi ci o BFS? 

komentarz 23 czerwca 2017 przez obl Maniak (51,280 p.)
Chyba tak, ale ja zawsze po swojemu ten algorytm robiłem więc nie znam profesjonalnego nazewnictwa. W tym przypadku nawet wiem jak uprościć do minimum algorytm przeszukiwania dostosowując go do potrzeb omawianego tutaj problemu choć ciężko by było to mi tutaj wytłumaczyć.
+2 głosów
odpowiedź 23 czerwca 2017 przez CzikaCarry Szeryf (75,340 p.)
No to tak: liczysz ilość czarnych pikseli w jednej figurze i masz pole. Co do środka ciężkości, to w uproszczeniu bierzesz skrajne punkty figury, a następnie przeciągasz przekątne między nimi i w punkcie przecięcia masz środek ciężkości. Oczywiście w przypadku kształtów nieregularnych to nie zadziała, więc dobrze jak skorzystasz z wzoru na Wiki. Teraz tylko pomyśl jak to zaimplementować... :)

Podobne pytania

0 głosów
0 odpowiedzi 1,534 wizyt
pytanie zadane 3 listopada 2019 w C i C++ przez michalMonster Początkujący (390 p.)
+1 głos
1 odpowiedź 645 wizyt
pytanie zadane 6 grudnia 2020 w C i C++ przez KumberTwo Dyskutant (8,270 p.)
0 głosów
1 odpowiedź 293 wizyt
pytanie zadane 2 lutego 2019 w C i C++ przez Padoski Użytkownik (990 p.)

92,555 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...