Warsztat - Programowanie gier

Lipiec 30, 2010, 17:31:52 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Poruszanie się obiektu pod odpowiednim kątem w lini prostej  (Przeczytany 422 razy)
skinny99
Newbie
*

wiadomości: 19


Zobacz profil
« : Styczeń 30, 2010, 22:12:12 »

Witam Wszystkich!

Mój problem nie jest zapewne jakimś wyzwaniem, lecz nie mogłem znaleźć żadnych informacji, bo chodzi mi konkretnie o strzał z jakiegoś miejsca na mapie pod kątem != 45,90... itd. Wybrałem ten dział, ponieważ wydaje mi się, że ma to jakiś związek z trygnometrią (nie jestem pewien). Nie podaję jęz. progr. i biblioteki graficznej, ponieważ nie chce gotowego kodu. Proszę, aby ktoś wytłumaczył mi w przystępny sposób to zagadnienie.

Pozdrawiam!
Zapisane
ShadowDancer
Hero Member
*****

wiadomości: 788


e-kozak


Zobacz profil
« Odpowiedz #1 : Styczeń 30, 2010, 22:16:25 »

Musisz znaleźć punkt w polarnym układzie współrzędnych i przekonwertować na kartezjański.
Zapisane

ONLY ROCK'N'ROLL
No co się gapisz? Fajnej sygnatury nie widziałeś?
Piszę poprawnie po polsku.

Używasz Dev-C++? Przeczytaj!
Ogniok
Full Member
***

wiadomości: 150


Zobacz profil WWW
« Odpowiedz #2 : Styczeń 30, 2010, 22:17:15 »

Chodzi ci o coś takiego:

Kod:
nowex = starex + sin(kąt) * odległość
nowey = starey + cos(kąt) * odległość

I ewentualnie trzeba pamiętać o przeliczeniu na radiany.
Zapisane

Java
SuperHero Member
******

wiadomości: 1908


Kwaternion zagłady


Zobacz profil
« Odpowiedz #3 : Styczeń 30, 2010, 22:53:07 »

http://pl.wikipedia.org/wiki/Układ_współrzędnych_biegunowych
Zapisane
skinny99
Newbie
*

wiadomości: 19


Zobacz profil
« Odpowiedz #4 : Luty 01, 2010, 21:28:28 »

doszedlem do czegos takiego

double tsin[360];
double tcos[360];

void laduj_sin_cos()
{
     for(int i=0; i < 360; i ++)
     {
        tsin = sin((M_PI*(i))/180);
        tcos = cos((M_PI*(i))/180);
     } 
}

Int main()
{
    laduj_sin_cos();
    ...
    kat=37;
    bsin=tsin[kat];
    bcos=tcos[kat];
    while(petla)
    {
        if (bsin>=1) {x++;bsin=tsin[kat];}
        if (bsin<=-1) {x--;bsin=tsin[kat];}
        if (bcos>=1) {y++;bcos=tcos[kat];}
        if (bcos<=-1) {y--;bcos=tcos[kat];}
        bsin+=bsin;
        bcos+=bcos;
    }
    ...
}

zapis moze byc nie do końca zgodny z matematyką, ale działa jak należy. Dzięki za wskazówki!
Zapisane
Nargil
Sr. Member
****

wiadomości: 260



Zobacz profil WWW
« Odpowiedz #5 : Luty 01, 2010, 22:31:05 »

Schowaj ten kod nim ktoś zobaczy ;/
Zapisane

Vipa
Gość
« Odpowiedz #6 : Luty 01, 2010, 22:45:32 »

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=10
Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC