Autor Wątek: wykrywanie i odp. kolizji w kwadracie  (Przeczytany 2978 razy)

Offline Spider100

  • Moderator
    • Strona domowa

# Grudzień 06, 2008, 20:26:22
counterClockWise twoja metoda jest mało optymalna. w dodatku gdy jeden prostokąt jest wewnątrz drugiego nic nie wykryje.

Tak jak wcześniej wspominano SAT albo ostatecznie GJK jeśli ktoś się nudzi :P Jak dla mnie koniec tematu.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline counterClockWise

  • Użytkownik

# Grudzień 07, 2008, 00:17:56
counterClockWise twoja metoda jest mało optymalna. w dodatku gdy jeden prostokąt jest wewnątrz drugiego nic nie wykryje.

Jeśli kwadrat (jak w temacie) to jak najbardziej wykryje :) Kula wpisana będzie w kuli wpisanej większego.

Jeśli jest w środku to nie ma kolizji :) No chyba, że traktujemy wnętrze kwadratu jako coś solidnego.

« Ostatnia zmiana: Grudzień 07, 2008, 00:19:33 wysłana przez counterClockWise »

poopa

  • Gość
# Grudzień 07, 2008, 06:50:54
Ale test z okręgami wymaga nie taniego pierwiastkowania, generowania na żywo czy tez wcześniej tych okręgów, kółek (mianowicie środka i promienia). W tym wypadku to niepotrzebny narzut. A SAT-em możesz sobie ładnie to pogrupować... A i bardziej przewidywalne to jest.


PS. Kula w dwóch wymiarach? To jakaś nowość, najwiekszym jeszcze to nie wyszło. ;P Of kors żartuje, pewnie chochliki ci coś popsuły. ;)

« Ostatnia zmiana: Grudzień 07, 2008, 06:52:42 wysłana przez poopa »

Offline Spider100

  • Moderator
    • Strona domowa

# Grudzień 07, 2008, 11:39:00
Aby sprawdzić czy okręgi się nakładają nie potrzebujemy liczyć pierwiastków można przechowywać kwadraty długości promienia i kwadrat odległości miedzy nimi liczyć.

Test okręgów jest jak najbardziej na miejscu przed przejściem do SAT. Co do podziału kolizji na test ogólny i szczegółowy to już pisałem i zapraszam do lektury:
http://forum.warsztat.gd/index.php/topic,6155.0.html :)


Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Grudzień 07, 2008, 15:30:35
counterClockWise: To to ja wiem, tylko kwestia czy wcześniej ustaliliśmy że mówimy o kolizji między prostokątami axis-aligned (ja tak sądziłem), czy oriented :P

Cytat: cruelmatt
nie rozumiem, jestem poczatkujacy i poprostu chcialem sobie napisac mini-ponga, a tak wyglada u mnie rysowanie kwadratu:
To w takim razie tym co czeka Cię teraz do nauki jest pojęcie, że rysowanie nie ma nic wspólnego z liczeniem kolizji. Masz w swojej głowie, a także w pamięci gdzieś w jakiejś strukturze danych (tablicy, wektorach, zmiennych, polach klasy) dane tego prostokąta i osobny kod go rysuje, a osobny liczy jego kolizję z innym prostokątem. OpenGL kolizji nie policzy ani też z liczeniem kolizji nie ma nic wspólnego, czy do rysowania używasz OpenGL czy np. DirectX.

Offline cruelmatt

  • Użytkownik

# Grudzień 07, 2008, 16:15:13
wiem, ale wlasnie mowie ze mam dane tylko X i Y dla kazdego wierzcholka... Jak je wykorzystac to wykrycia kolizji?

Offline counterClockWise

  • Użytkownik

# Grudzień 07, 2008, 18:28:29
Ale test z okręgami wymaga nie taniego pierwiastkowania, generowania na żywo czy tez wcześniej tych okręgów, kółek (mianowicie środka i promienia). W tym wypadku to niepotrzebny narzut.

Można wygenerować raz przy utworzeniu prostokąta i przechowywać. Jeśli gra ma 60 fps, to nawet tego nie zauważy, a złożoność pamięciowa w tak małych problemach w dzisiejszych czasach w ogóle nie jest brana pod uwagę :)


PS. Kula w dwóch wymiarach? To jakaś nowość, najwiekszym jeszcze to nie wyszło. ;P Of kors żartuje, pewnie chochliki ci coś popsuły. ;)

Ja używam określeń kula, kostka oraz sympleks do nazwania dowolnego n-wymiarowego kształtu, który w dwóch wymiarach jest odpowiednio kołem, kwadratem i trójkątem.
To powszechne użycie, mogę Ci podać źródła w literaturze, w których jest odniesienie do dwuwymiarowej kuli.

Kula w przestrzeni metrycznej jest zbiorem elementów tej przestrzeni, których odległość (metryka) od pewnego wyróżnionego punktu zwanego środkiem jest niewiększa od promienia.
Czy R^2 nie jest przestrzenią metryczną? Jak najbardziej istnieje 2-wymiarowa kula. Zauważ, że definicja działa dla n-wymiarów i wszystkie chochliki o tym wiedzą.
« Ostatnia zmiana: Grudzień 07, 2008, 18:32:20 wysłana przez counterClockWise »

Offline cruelmatt

  • Użytkownik

# Grudzień 07, 2008, 21:16:47
wasze klotnie mi nie pomagaja... Nadal nie wiem jak wykryc kolizje maja tylko dane o wierzcholkach prostokatu!!!

poopa

  • Gość
# Grudzień 07, 2008, 22:54:19
Zostało już to napisane... kartka papieru i/lub twoje IDE. Ew. google, podręcznik od matematyki...

Baa nawet masz tutaj kod... a masz głowę? Więc nią rusz. :P

Taki kod to nie tylko klepanie w klawiaturę... To ta najprostsza część. ZRozpisz testy i lecisz. Nie ma drogi na skróty jeśli jej szukasz.

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Grudzień 08, 2008, 03:02:02
przechowuj sobie prostokąt jako srodek plus cztery punkty, potem obtaczasz jeden prostokat drugim (to jest cos jak suma minkowskiego...) i robisz test punkt + wektor przesuniecia * prostokat wiekszy.. jak zczaisz o co biega, to jest to bardzo wydajna metoda