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

[SFML, C++] Poruszanie się obiektu po torze

Ostatnio zmodyfikowano 2011-07-28 01:48
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 23:08:32
No właśnie bo chciałbym tylko raz się pomęczyć a potem jak będę chciał wyznaczyć tor obiektu to powołam wcześniej stworzoną do tego klasę czy funkcje i pójdzie jak z automatu :D


@akwes nom fajny pomysł tylko jak to zrobić w programie jak obiekt ma się poruszać po tej paraboli
P-37395
akwes
» 2011-07-27 23:11:29
No to można faktycznie pisać detekcję kolizji z linią, którą widzi tylko obiekt się poruszający, albo zrobić sobie edytor tras, ładować do pliku i z pliku wczytywać. Tylko mówię Ci, to są rozwiązania dla każdej możliwej trasy, uniwersalne wręcz, jeżeli chodzi o coś prostego to dodałem o paraboli w poprzednim poście.

Mogę dodać że takich funkcji (tych na płaszczyźnie)  można sobie napisać multum, i patrzeć jak wygląda "trasa" w układzie współrzędnych :) Np. na linuksie jest fajny program do tego KmPlot. Chociaż mam też sentyment do Wolphram alpha.



Wybierasz od jakiego punktu ma zacząć (to się liczy, narazie załóżmy że od 0,0)
C/C++
// w konstruktorze
fx = 1;
C/C++
void Pocisk::SetByFunc()
{
    // są to zmienne, które posiada obiekt, czyli nie definiowane w jego metodzie.
    // Jeżeli masz "b" i "c". Skąd wziąć b i c? Otóż
    // wymyślasz sobie i patrzysz w czymś co rysuje funkcje
    // jak wygląda ta "trasa"
    fy =( fx * fx ) +( fx * b ) + c;
    SetPosition( fx, fy )
    fx++;
}

I tak powolutku będzie leciał zgodnie ze wzorem.
P-37396
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 23:17:17
Właśnie samo narysowanie trasy to jeszcze pikuś ale jak zrobić żeby obiekt się po niej poruszał. Jak widziałeś u mnie te statki spadały dzięki wykorzystaniu funkcji trygonometrycznych, ale robiłem to metodą prób i błędów, zwiększałem, zmiejszałem PI no i wyszło. Natomiast obiekt wracał po linii prostej której współrzędne liczyłem z pitagorasa ;p
P-37397
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 23:21:48
@akwes jesteś mistrzem znowu mnie zmotywowałeś i przypomniałeś mate :D teraz dopiero serio to załapałem :) A jak bede chciał poruszać się po krzywych to wystarczy np równanie 3 stopnia :D Tzn. narazie wydaje mi się to proste zobaczymy jutro w praniu
P-37398
akwes
» 2011-07-27 23:23:45
Ale przecież zmieniam Ci pozycje statku !

C/C++
void Statek::SetByFunc()
{
    fy =( fx * fx ) +( fx * b ) + c;
    statek.SetPosition( fx, fy )
    fx++;
}

Pocisk było przypadkiem, miało być statek.
I teraz!
dla x>0, trasa prowadzi w prawo (prawe ramie paraboli)
zaś dla x zmniejszającego się, prowadzi w lewo (lewe ramie paraboli)

Ze wzorów zapewne wiesz że bx oraz c przesuwają wykres na osi względem początku układu, a "a*(x*x)" decyduje o jej rozwarciu.

C/C++
// w konstruktorze
fx = 0;

C/C++
void Statek::SetByFunc()
{
    // w prawo.
    fy =( fx * fx ) +( fx * b ) + c;
    statek.SetPosition( fx, fy )
    fx++;
}

C/C++
void Statek::SetByFunc()
{
    // w lewo.
    fy = -( fx * fx ) +( fx * b ) + c;
    statek.SetPosition( fx, fy )
    fx--;
}


Nie musisz tej linii rysować, wystarczy że zamiast "Rysujpunkt w X,Y" zrobisz "Przesuń statek w X,Y"


//edit

Jak wygląda trasa zawsze można sprawdzić, jest mnóstwo programów, które liczą f(x) i rysują to ładnie. Zamiast paraboli można nawet użyć sinusów, asinósów itd
P-37399
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 23:25:51
Wiem wiem po prostu spóźniłem się ze swoją wcześniejsza wiadomościa :)
P-37401
akwes
» 2011-07-27 23:26:58
No ^^ Liczę że pomogłem :P Tutaj ciężko będzie zrobić jazdę w kółko, ale samo odjeżdżanie statków za ekran da się :D
P-37402
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 23:32:18
A przypomnij mi jeszcze jak możesz za co był odpowiedzialny współczynnik b ? Takie elementarne rzeczy a kurcze zapomniałem ;p

P.S z resztą olej na Wolframie patrze :) dzięki za pomoc :D
P-37403
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona