Opis zachowania się samochodu

0

Pytanie nie dotyczy żadnego konkretnego języka.

Natrafiłem w sieci na grę:
http://www.pepere.org/gra-flash_8_x/parkowanie-rownolegle_1.html

i wpadłem na głupi pomysł, żeby coś podobnego napisać sobie w C+ (Allegro).

Problem:
"Samochód" jest reprezentowany na ekranie przez prostokąt o wierzchołkach w jakichś współrzędnych. W pamięci naturalnie odpowiada mu jakiś obiekt. Jakie wartości powinienem zapamiętać w klasie tego obiektu, żeby prostokąt na ekranie zachowywał się +- tak, jak rzeczywisty samochód ze skrętnymi przednimi kołami i jakie zależności w czasie powinny dotyczyć tych wartości? (Wystarczy, jeżeli "samochód" ma tylko jedną możliwą prędkość (jedzie, albo nie) do przodu i do tyłu)

Mam nadzieję, że pytanie zadałem w miarę jasno... Jeżeli nie wiadomo, o co mi chodzi, to proszę to zaznaczyć, postaram się opisać problem inaczej.

0

Kurde fajne, fajne :)

Swego czasu kiedyś też chciałem zrobić taką gierkę :) Tylko trochę bardziej realistyczną, z wgniataniem się samochodu i ewentualnym wylotem przez kierownicę :D

a propoS książki, jestem pewien, że rok temu widziałem w antykwariacie w Gdyni, w regale informatycznym (hmm a może fizycznym,mechanicznym?) książkę z wzorami na zachowanie się samochodu. Jednym słowem kupa różnych wzorów: na siły odśrodkowe, przyspieszenie, hamowanie, staczanie się z górki itd. Nie pamiętam teraz tytułu, ale jak sobie przypomnę to napiszę :)

0

no, fajne ;]
zaparkowałem w 6min 14 sekund, 34 zderzenia - niezły ze mnie kierowca :-D

0

8.05s ;)

A odpowiadajac na pytanie:
Wystarczy brac pod uwage srodek samochodu, np. srodek prostokata, kat obrotu oraz predkosc (+ przod, - tyl). Z tego wszystkiego da sie wyliczyc wspolrzedne 'zewnetrzne' samochodu.

0
johny_bravo napisał(a)

8.05s ;)

A odpowiadajac na pytanie:
Wystarczy brac pod uwage srodek samochodu, np. srodek prostokata, kat obrotu oraz predkosc (+ przod, - tyl). Z tego wszystkiego da sie wyliczyc wspolrzedne 'zewnetrzne' samochodu.

No właśnie niebardzo. Zwróć uwagę, że samochód inaczej skręca przodem, niż tyłem.

Wzory na przyspieszenia, siły i tak dalej - robiłem sobie ostatnio symulację kulki która przyspieszała w jakimś kierunku - w grę wchodzi elementarna fizyka, całość niemalże trywialna :). A tutaj nawet nie wiem, jak się za to zabrać.

0

trzeba przyznać, że fizyka samochodu bardzo dobrze zrobiona i na pewno nie jest to łatwe

@Johny: jakby zrobił tak jak napisałeś, to niedało by się zaparkować...

0

Właśnie wydaje mi się, że to wcale takie skomplikowane nie jest...

Gdyby tak przechowywać:

  • współrzędne środka przedniej i tylnej osi

Gdy samochód jedzie/skręca do przodu/do tyłu, to punkt przedniej osi przesuwamy o jakiś wektor, a punkt tylnej osi JAKOŚ wyliczamy - mamy dwie niewiadome (x,y), więc musimy wymyślić 2 warunki - znamy jego odległość od pierwszego punktu (czyli jeden warunek już jest), ale jakoś drugi mi nie przychodzi do głowy...

0

Marudzicie ;) Jedyne czym sie rozni ten samochod od mojego pomyslu, to to, ze ma inna os obrotu. Najlatwiej przyjac srodek prostokata, ale w przypadku prawdziwego samochodu jest sporo inaczej. Zreszta wystarczy wziac pierwszy lepszy katalog samochodowy, zeby sie dowiedziec jaki promien skretu (czyli tez promien obrotu) maja konkretne modele samochodu. Jak masz srodek skretu, to + te rzeczy, ktore wymienilem powinno wystarczyc. Jedyne co pozostaje zaimplementowac to tak naprawde obrot prostokata wokol tego srodka obrotu + przyspieszanie/hamowanie pojazdu (no i wykrywanie kolizji).

0

4:06.

0
yakhub napisał(a)

Gdy samochód jedzie/skręca do przodu/do tyłu, to punkt przedniej osi przesuwamy o jakiś wektor, a punkt tylnej osi JAKOŚ wyliczamy - mamy dwie niewiadome (x,y), więc musimy wymyślić 2 warunki - znamy jego odległość od pierwszego punktu (czyli jeden warunek już jest), ale jakoś drugi mi nie przychodzi do głowy...

Ale po co? Skoro wystarczy rozważyć obrót samochodu wokół tylko jednego punktu. Kiedyś takie coś napisałem i mój samochódł mógł skręcać tylko przednie koła więc punkt obrotu umieściłem w samym środku tylniej osi samochodu. Gdyby można skręcać tylko tylnimi kołami to umieściłbym go w przedniej osi. Gdy wszystkimi kołami - równomiernie to w punkcie środkowym pomiędzy obiema osiami.

0

Ja zaś natrafiłem na problem z oporem powietrza... Chciałem, aby moc silnika, masa pojazdu i czas w jaki przyspiesza do 100 km/h były podawane przez użytkownika, a z tego byłaby liczona prędkość maksymalna. No i myślałem, że łatwo będzie policzyć przyspieszenie a, ale zapomniałem, że opór rośnie wraz ze wzrostem szybkości. Ok, znalazłem wzór na wiki, no i już chciałem zaimplementować, ale jedna zmienna jest dziwna... Współczynnik siły oporu... Czy mylę się, czy on też jest zależny od szybkości, a w dodatku od typu samochodu (oscyluje pomiędzy 0,25 - 0,45 bodajże)? No i nie wiem co zrobić dalej... Potem jeszcze poczytam, ale jak macie jakieś uwagi to pisać - być może po prostu coś przeoczyłem, bo nie miałem czasu na skupienie.

Pozdrawiam.

0

Oczywiscie musi istniec jakis wspolczynnik zalezny od ksztaltu pojazdu i zapewne jest to wlasnie to o czym mowisz.

0

Tak, i nawet da sie go obliczyć. Chociaż przy bardziej skomplikowanych kształtach robi się testy aerodynamiczne.

0

Ale jak go obliczyć? Chyba nie chodzi Ci o obliczenie doświadczalne? :>
Nie chcę dawać żadnych przybliżeń na oko, tylko coś bliskie prawom fizyki (dlatego pierw próbuję to zrozumieć), a przecież jeśli będę chciał wykonać edytor wozów, to nie dam możliwości wpisania tego współczynnika użytkownikowi, bo to się minie z celem. A co do kształtu samochodu, to zbyt wygórowanych możliwości nie będzie, tymbardziej, że chodzi o dwu wymiarowy widok z góry.

Pozdrawiam.

0

Skoro tak trudno go obliczyć to można podać na oko bo kto będzie zadawał sobie tyle trudu żeby to sprawdzić, tymbardziej że jak się domyślałem, a potwierdziłeś mój domysl, gra ma być 2D dlatego rzeczywisty kształt samochodu nie jest znany. A co jeśli zamiast szyby będzie spadochron? :D
A po drugie najpie najpierw w ogóle spróbowałbym to zrobić bez uwzględniania oporu powietrza, który przy małych prędkościach ma bardzo małe znaczenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1