Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ruch po okręgu - poruszanie w każdej sekundzie o jakąś odległość

Ostatnio zmodyfikowano 2015-04-20 23:11
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Ruch po okręgu - poruszanie w każdej sekundzie o jakąś odległość
» 2015-04-20 20:31:35
Witam was serdecznie, nie piszę może bezpośrednio gry, ale temat dość związany z grami. Mam do napisania program, w którym muszę zrealizować ruch po okręgu. Sprawa wygląda tak: użytkownik podaje wielkość okręgu i czas, w jakim obiekt ruszając się po zadanym okręgu ma pokonać jego obwód. Tutaj sprawa wygląda dość prosto, liczę sobie obwód okręgu(oczywiście w przybliżeniu, używam zmiennej M_PI z biblioteki cmath). Potem wzór na prędkość, czyli obwód dzielone na czas i mam prędkość, czyli wiem jaką drogę mój obiekt pokona w jedną sekundę. Odległości liczę w pikselach. Teraz rysuje wszystko, najpierw koło, potem obiekt stawiam na początku koła i muszę w każdej sekundzie(wiem, że ruch będzie skokowy, ale narazie chcę go aktualizować co sekundę) muszę poruszyć obiekt o x pikseli tak, by jechał on po tym okręgu. I tutaj się zatrzymałem, bo kompletnie nie mogę pojąć, jak ja mam co sekundę przesuwać obiekt o jakąś wartość? Chciałbym, aby też ruch nigdy się nie skończył, czyli trwał dopóki użytkownik nie wyłączy programu, lub nie poda nowych wartości, więc dotarcie do punktu końcowego ma nie kończyć ruchu. Proszę więc o jak najdokładniejsze i najłatwiejsze wytłumaczenie mi tego jak prostemu człowiekowi. Nie musi być kod, wystarczy proste wytłumaczenie.

Edit:
Z tego co sam zdązyłem już poczytać, to muszę policzyć prędkość kątową. Wzór wygląda tak:
C/C++
predkosc_kat = 2 * M_PI / czas;

Wzór działa dobrze z tego co widzę, bo dla okręgu o promieniu 200 i czasowi obiegu o wielkości 1 sekundy otrzymuję prędkość kątową 6.28, co w przybliżeniu daje 360 stopni, czyli kąt pełny.

Po tym otrzymuję prędkość kątową w radianach na sekundę. Współrzędne punktu na okręgu wyliczam tak:
C/C++
poz_x = cos( kat ) * promien + srodek_x;
poz_y = sin( kat ) * promien + srodek_y;

Jak ja mam poruszać ten obiekt? Trochę to obcy dla mnie temat jest jeszcze.
P-131230
OSA_PL
» 2015-04-20 22:22:09
No jak to jak, masz prędkość kątową to co klatkę wyliczasz nowy kąt (kat += predkosc_katowa * dt) i z wzorów które podałeś wyliczasz pozycję obiektu.
P-131233
bingo009
Temat założony przez niniejszego użytkownika
» 2015-04-20 23:11:22
No i pięknie się porusza po okręgu. Dzięki za pomoc, choć sam się już domyślałem w czym rzecz. Temat do zamknięcia, dzięki za odpowiedź.
P-131235
« 1 »
  Strona 1 z 1