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 |
|
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) void Pocisk::SetByFunc() { fy =( fx * fx ) +( fx * b ) + c; SetPosition( fx, fy ) fx++; }
I tak powolutku będzie leciał zgodnie ze wzorem. |
|
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 |
|
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 |
|
akwes |
» 2011-07-27 23:23:45 Ale przecież zmieniam Ci pozycje statku ! 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. void Statek::SetByFunc() { fy =( fx * fx ) +( fx * b ) + c; statek.SetPosition( fx, fy ) fx++; }
void Statek::SetByFunc() { 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 |
|
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 :) |
|
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 |
|
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 |
|
| 1 « 2 » 3 |