Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zderzanie się obiektów w 2D
sweter
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam,
chciałem napisać aplikację, która będzie symulowała zachowanie się różnych obiektów (prostokątów, kwadratów, kół) podczas zderzania. Miała by działać ona w następujący sposób: domyślnie w oknie będzie ustawionych kilka prostokątnych klocków. User będzie miał możliwość wystrzelenia w dowolnym kierunku piłki. Przy zderzeniu się piłki z klockiem lub klocka z klockiem ma dojść do interakcji pomiędzy przedmiotami.
Nad częścią fizyczną sobie poradzę, ale zupełnie nie mam pojęcia jak sprawdzić, czy obiekty stykają/zderzają się.
Jak rozwiązać to algorytmicznie?
Pozdrawiam smile.gif


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Naprawdę jest tego sporo w sieci, więc wróć z czymś konkretnym.
http://www.google.com/search?hl=en&saf...ons&spell=1
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Czy się stykają sprawdzasz zależnie od figury:
- okrąg - okrąg - sprawdzasz czy odległość między środkami okręgów jest mniejsza lub równa od r1+r2
Figury wielokątne budujesz z odcinków:
- okrąg - odcinek - sprawdzasz odległość punktu od odcinka (jeżeli mniej mniej lub równe "r" to boom)
- odcinek - odcinek - robisz warunek na przecinanie się odcinków i sprawdzasz czy któryś się nie przecina.
Go to the top of the page
+Quote Post
KeeL
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 3
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Dokładnie tak jak napisał @hwao
Przykładowa klasa detekcji kolizji Tutaj masz w SFML, ale na jej podstawie powinieneś wiedzieć już co i jak.
Go to the top of the page
+Quote Post
KKH
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 1
Dołączył: 11.02.2011

Ostrzeżenie: (0%)
-----


Cytat(sweter @ 9.02.2011, 19:06:39 ) *
zupełnie nie mam pojęcia jak sprawdzić, czy obiekty stykają/zderzają się.
Jak rozwiązać to algorytmicznie?
Pozdrawiam smile.gif


A umiesz rozwiązać zadania typu:
Oceń czy dane 2 punkty leża po tej samej stronie prostej danej równaniem parametrycznym.
Jaka jest odległość między 2 punktami
Obliczyć część wspólną dwóch odcinków leżacych na jednej prostej
Obliczyć odległość punktu od prostej

?

To są przeważnie krótkie wzorki. Tutaj kryje się know-how i z tego sobie wyprowadzisz algorytmy stwierdzania przecieć bardziej złożnych obiektów. Poza tym kolizje prostokątów radykalnie się upraszają gdy założysz ich prostpadłość. Wtedy przecinać się muszą ich rzuty na osie układu.

Ja sobie kiedyś pisałem taki engine. Obiekt poruszał się z pewnym skokiem zależnym od liczby klatek na sekundę i szybkości obiektu. Jeśli w następnym ruchu dochodziło do kolizji, to długość "skoku" była przycinana do krawędzi kolegi wywołującego kolizję ,odpalało się odpowiednie wydarzenie (niszczenie, zmiana "pędu") itp. a koledze w danej iteracji już skoku nie liczono.

Poprawniej byłoby zapewne całkować równania ruchu i rzucać co jakiś czas do renderera, ale to już jest większe pr0 wink.gif

Ten post edytował KKH 11.02.2011, 18:01:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:46