![]() |
![]() |
![]() ![]()
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 ![]() -------------------- |
|
|
![]() |
![]()
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 |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 11.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
zupełnie nie mam pojęcia jak sprawdzić, czy obiekty stykają/zderzają się. Jak rozwiązać to algorytmicznie? Pozdrawiam ![]() 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 ![]() Ten post edytował KKH 11.02.2011, 18:01:04 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:46 |