Skocz do zawartości

Wyliczanie pozycji - kierunek pionowy


RaistlinBlackRobe

Rekomendowane odpowiedzi

Zastanawiałem się jak wyliczyć pozycję przesunięcia w trójwymiarze mając daną prędkość i kierunki: poziomy(dla oś x i y) oraz pionowy(dla osi z).

Doszedłem do nastepujących wniosków:

/*
hdir to kierunek poziomy
vdir to kierunek pionowy
speed to predkosc
*/
x+=cos(degtorad(hdir))*speed;
y+=sin(degtorad(hdir))*speed;
z+=sin(degtorad(vdir))*speed;

Noi tu zaczynają się schody. Może to zilustruję:

vdir.png

Zielony punkt to pozycja przesunięcia jaka powinna być, a czerwony, to taka jaka niestety jest. Idąc dalej doszedłem do wniosku, że trzeba działać na wartości speed przy powiększaniu x i y(tak aby były względne wobec zmiennej vdir). Czy mógłby ktoś powiedzieć czy istnieje jakiś sposób przeliczenia tego, a jeżeli tak, to czy mógłby go ktoś podać? Z góry dziękuję. :)

Odnośnik do komentarza
Udostępnij na innych stronach

GML
x+=cos(degtorad(hdir))*sin(degtorad(vdir))*speed;

y+=sin(degtorad(hdir))*sin(degtorad(vdir))*speed;

z+=sin(degtorad(vdir))*speed;

Chyba tak to szło.

Z tego co widzę to działa. Dzięki. :)

EDIT: Teraz to zauważyłem, że jednak trzeba użyć cos nie sin. xD (wcześniej testowałem na kącie 45 stopni, przy którym sin i cos mają tą samą wartość i dlatego nie zauważyłem)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...