Biblioteka do wyznaczania odleglosci i kolizji 2D


#1

Szukam biblioteki.
Mam kilka obiektow 2d. Wektorowych . Chcialbym wiedziec czy sie przecinają.
Przydala by sie tez obwiednia (czy np. odleglosc jest wieksza niz n)

Może jakiś przykład?
Powiedzmy kilka obrysów, trójkątów odbijających się w prostokącie.


#2

Szczerze? Wykrywanie kolizji w 2D jest banalną sprawą i jeśli potrafisz programować na elementarnym poziomie, to powinieneś sam ogarnąć to po przeczytaniu artykułu na Wiki.

Wszystko też zależy od tego jak skonstruowana w kodzie jest plansza. Np. w szachach możesz planszę zrobić w tablicy char[8][8] i wtedy wykrywanie kolizji oparte na colliderach mija się z celem :wink:

A, powtórzę coś, co Ci kiedyś @damoch powiedział. Wywal tego SDLa, to nie będziesz miał takich problemów.


#3

@Cadogan kolizje do kształtów, dowolnych kształtów.

Mam kształt z otworami o dośc skomplikowanej formie (bardziej skomplikowane niż litery) i musze znaleźć odległość od nich.

Zrobienie obrysu nie jest trywialne. Zrobienie odległości od figur to kolizja do obrysu. To jest problem porównywalny z operacjami boolowskimi na kształtach.

P.S. Widzę, że faktycznie wiele osób tu traktuje innych lekceważąco, ale co stoi na przeszkodzie pokazać jakies rozwiązanie zamiast pisać jakie to łatwe lub niepotrzebne?


#4

Jeśli masz kształt o skomplikowanej formie, to nic nie stoi na przeszkodzie zrobić dla niego kilka hitboxów, na tej zasadzie jak liczyło się pola skomplikowanych figur w podstawówce.


#5

@Cadogan jest wiele algorytmow. Ale jak napisałem w art. szukam jakiegos przykladu.


#6

To jest forum o gamedevie, gdzie przebywają w dużej mierze osoby związane z IT. Nie wiem jakie jest Twoje doświadczenie w kontakcie z takimi osobami, ale na tym forum traktujemy się IMO dosyć łagodnie :smiley:
To jest niewątpliwa zaleta IT - nawet jeżeli siedzi się w korpo, to ma się ludzi którzy nie są nadętymi bufonami, rozumieją ironię i mają poczucie humoru. Z takimi ludźmi łatwiej przesiedzieć 8 godzin w pracy, nawet jeżeli ich poziom umiejętności nie jest zbyt wysoki (jak na przykład u mnie, początkujący programista hier).

Wracając do tematu…
Wspominałem coś kiedyś, ze zadawanie pytań to też sztuka. I jak do tej pory każde Twoje pytanie można streścić następująco

Właśnie dlatego otrzymujesz takie a nie inne odpowiedzi :slight_smile:

Jeżeli chcesz otrzymać dobrą odpowiedź, zadaj dobre pytanie. Pokaż jakiś kod, daj screena, cokolwiek.


#7

Bez obrazy ale… https://cse.google.pl/cse?cx=partner-pub-8205630395356620%3A3080483059&ie=UTF-8&q=Collision+detection+algorithms&sa=Szukaj+w+Google#gsc.tab=0&gsc.q=Collision%20detection%20algorithms&gsc.page=1

Jeśli szukasz algorytmu, to to forum powinno być ostatnim miejscem, by zapytać o to…
To już było dawno omawiane na Wikipedii, stackexchange, stackoverflow itd.
To nie jest pierwszy raz kiedy ja lub ktoś inny upomina Cię za zadawanie pytań, na które odpowiedzi można znaleźć w minutę za pomocą Google’a. Jeśli nie potrafisz sam sobie tego napisać, bo jesteś początkujący itd. to napisz to wprost, a nie pytasz się o biblioteki, których chyba nawet nie ma/ są mało znane, nie wspominając o tym, że na takich bibliotekach się już w zasadzie nie operuje. To nie jest czas takich gier jak Carmageddon, gdzie WSZYSTKO klepało się od 0 :stuck_out_tongue: (no,chyba, że już się samemu wcześniej to napisało i leciał code reusage :smile: )


#8

Dokładnie poszukaj w internecie jest masa przykładów.
Są setki rozwiązań, zainteresuj się geometria analityczną. Jest to bardzo prosta dziedzina matematyki, przynajmniej banalne jest to co jest Ci potrzebne. Jeśli masz dwie “krzywe” i znasz ich wzór to wystarczy że porównasz ich np równania, potem wycałkujesz, ale prostszym rozwiazaniem bedzie aproksymacja krzywych prostymi i sprawdzanie kolizji… Jest mlion rozwiązań, programista powinien umieć szukać.


#9

nie jestes pomocny.

nie chodzi o szybki algorytm ale o dokladny
specjalnie dla @Cogan, zaden nie jest linkiem do biblioteki, ani nie jest przykladem.

Stwierdzam, ze nikt tego z was nigdy nie robil. Moze sie znajdzie ktos, kto zna temat.

Odpowiem na Waszym poziomie, nie warto pisac jak nie wiecie i nie umiecie pokazac chocby podobnego przykladu. Nie wywolania funkcji, ale jak to po prostu policzyc. Kolizje byly jako przyklad. Ale widze, że nawet sie nie wysilil by rozwazac odleglosci. No po prostu sie nie da :wink:

Dobranoc

.


#10

Stary, mam wrażenie, że piszesz głupie posty, by nas ośmieszyć.
Fakt, nie robiłem tego jak bawiłem się SDLem, bo nie było mi potrzebne (tetris - mapa jako tablica - sprawdzasz po prostu odpowiednie pola w tablicy - UWAGA, W PYTHONIE STRASZNIE NIEEFEKTYWNE!!). Jednakże nie znaczy to, że ja lub ktokolwiek inny nie zna żadnego algorytmu. Po prostu NIKT nie poda Ci go na forum, jeśli znalezienie tego w necie to kwestia dziesięciu sekund z Google… Nikt się po prostu nie kwapi do tłumaczenia tak elementarnych rzeczy komuś kto nie potrafi poszukać. To tak jakbyś poszedł do wykładowcy akademickiego, żeby nauczył Cię mnożyć…


#11

Ja po kilku dniach i przebadaniu kilkunastu bibliotek znalazlem tylko dwie. Jedna potraf tez dzielic.
Wiec mowienie, ze po sekundach cos sie znajdzie jest raczej nieprawdziwe.
Ale jak pisalem, jesli nie przedstawisz jakiegos konkretu to chyba rozmowa jest bezprzedmiotowa.

Po prostu KAZDY post mozna w ten sposob zbyc. No “Przeciez na pewno , ktos o tym napisal na internecie”.

Jak dla mnie EOT. Bo nie piszesz merytorycznie.


#12

Chwała Ci :slight_smile: