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

Przeszukanie obszaru wokół punktu

Object Storage Arubacloud
0 głosów
160 wizyt
pytanie zadane 27 września 2017 w Algorytmy przez Pscoolka Nowicjusz (240 p.)
Zagadnienie: Jak najefektowniej przeszukać obszar w okół danego punktu, aby sprawdzić kolizje lub znaleźć wszystkie obiekty znajdujące się w pobliżu.

Przykład: Projekt gry 2D, kilka obiektów na mapie, gracz, kilka przedmiotów, kilka przeciwników czy inne. Potrzebuję sprawdzić czy nie występuje kolizja z przeciwnikami, oraz czy przedmioty są na tyle blisko gracza, aby mógł je podnieść. Mamy tablice, gdzie umieszczone są wszystkie obiekty.

Istnieje opcja przeszukania wszystkich elementów w tablicy i sprawdzanie dla każdego obiektu pozycji i porównanie jej z pozycją gracza.

Inną opcją jest utworzenie tablicy(dwuwymiarowej), gdzie indeksami będą współrzędne mapy, a obiekty przypisane zgodnie z ich miejscem na mapie. Z naszej głównej tablicy pobieramy współrzędne gracza i w drugiej tablicy sprawdzamy czy "sąsiadujące" indeksy posiadają obiekty, a jeżeli tak to wtedy możemy wykonać odpowiednie operacje na nich.

W pierwszym sposobie minusem jest fakt, iż przeszukujemy całą tablice, nawet jeżeli dany przedmiot czy wróg jest na drugim końcu mapy, a w drugim natomiast musimy poświęcić miejsce na drugą tablice, którą dodatkowe trzeba będzie uaktualniać za każdym przemieszczeniem się gracza czy wrogów (czy przedmiotów, nieistotne).

Zakładam, iż w przypadku jeżeli na mapie jest tylko kilka przedmiotów to pierwsza opcja jest lepsza. Ale co w przypadku jeżeli mamy różne obiekty rzędu 100, 1000, 1000000? Kiedy sposób 1 czy 2 jest lepszy? Może to nie ma znaczenia i lepiej zawsze stosować drugi? Może istnieją o wiele lepsze rozwiązania? Co lepiej jeżeli mapa jest, a co jak bardzo duża? Co jeżeli musimy przeszukać mały obszar w okół gracza, a co jeżeli duży? Co jeżeli obliczamy kolizje za pomocą promienia? Wyszukujemy obiektów w promieniu (załóżmy) 10 jednostek, a obiekt, z którym miałaby wystąpić kolizja znajduje się 11 jednostek dalej, ale jest tak duży promień, że koliduje z pierwszym obiektem?

Problemów i pytań pewnie jest więcej, nie ma sensu się rozdrabniać. Proszę o ogólne porady/opinie/doświadczenia, sposoby na rozwiązanie problemu, link do materiałów, które mogą okazać się przydatne, lub zagadnienia pod którym mogę szukać informacji

Podobne pytania

0 głosów
0 odpowiedzi 217 wizyt
pytanie zadane 28 listopada 2020 w C i C++ przez Mateusz1223 Bywalec (2,440 p.)
0 głosów
1 odpowiedź 952 wizyt
pytanie zadane 22 października 2019 w C# przez niezalogowany
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 19 grudnia 2018 w C i C++ przez Patryk_04 Nowicjusz (230 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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!

...