Witam
Piszę program w którym kwadratowa kontrolka o pozycji powiedzmy x,y przyśpiesza do pewnej prędkości potem porusza się tą prędkością przez określony czas i hamuje tak aby trafić do punktu docelowego.
mam więc:
- x,y początkowe - pozycja kontrolki w momencie gdy ma predkosc 0
- x,y końcowe - pozycja kontrolki gdy dojedzie na miejsce
- czas w jakim kontrolka powinna to wszystko zrobić.
- czas jaki minął od początku animacji
Zapewne potrzebne są też jakieś inne parametry.
Jak bym nie próbował tego robić to mi nie wychodzi , nie potrafię połączyć tych trzech wzorów z fizyki aby mi to jakoś wyszło.
Jak by ktoś mógł to jakoś napisać był bym wdzięczny.
Animacja kontrolki w c# , przyśpieszenie , prędkość stała,h
-
- Użytkownik
- Posty: 10
- Rejestracja: 24 sty 2010, o 16:12
- Płeć: Mężczyzna
- Lokalizacja: Brak
- Podziękował: 1 raz
Animacja kontrolki w c# , przyśpieszenie , prędkość stała,h
Ostatnio zmieniony 1 cze 2010, o 19:35 przez miki999, łącznie zmieniany 1 raz.
Powód: Temat umieszczony w złym dziale.
Powód: Temat umieszczony w złym dziale.
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Animacja kontrolki w c# , przyśpieszenie , prędkość stała,h
A co chcesz wiedzieć? Jaką pozycję ma mieć ta kontrolka w danym momencie czy z jaką prędkością ma się poruszać? A może coś jeszcze innego?
-
- Użytkownik
- Posty: 10
- Rejestracja: 24 sty 2010, o 16:12
- Płeć: Mężczyzna
- Lokalizacja: Brak
- Podziękował: 1 raz
Animacja kontrolki w c# , przyśpieszenie , prędkość stała,h
a tak , no więc chcę widzieć jaką ma mieć pozycję w danym czasie .
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Animacja kontrolki w c# , przyśpieszenie , prędkość stała,h
Jeżeli przyspiesza tylko do określonej prędkości i dalej porusza się jednostajnie, to jeżeli masz dany czas \(\displaystyle{ t}\), to będziesz musiał zrobić warunek (if, czy coś takiego), by sprawdzić czy dana prędkośc została osiągnięta. Jeżeli nie, to po prostu dzielisz przedział czasowy na \(\displaystyle{ 2}\) i liczysz:
\(\displaystyle{ \begin{cases} x(t)=x_0+ \frac{a t^2}{2} \quad dla\ t< \frac{t_k}{2} \\ x(t)=\left[x_0+ \frac{a \left(\frac{t_k}{2}\right)^2}{2} + \frac{(t- \frac{t_k}{2}) a\cdot t_k} {2} \right]- \frac{a\left(t- \frac{t_k}{2}\right) ^2}{2} \quad dla\ t \in \langle \frac{t_k}{2}, t_k\rangle \end{cases}}\)
2. równość da się uprościć. Dla ygrek będzie analogicznie. Jeżeli ma przyspieszać do pewnej predkości, później jednostajnie i spowalniać to problem może tkwić w doborze przyspieszenia.
Trzeba wyliczyć przyspieszenie (jeżeli \(\displaystyle{ x_k}\) jest końcowe):
\(\displaystyle{ x(t_k)=x_0+ \frac{a t_k^2}{8}- \frac{a\left(t-\frac{t_k}{2}\right) ^2}{2}+ \frac{\left(t- \frac{t_k}{2}\right) t_k }{2} =x_k}\)
Po chwili wyliczeń otrzymujemy:
\(\displaystyle{ a= \frac{8(x_k-x_0)}{t_k ^2}}\)
Należy to podstawić do \(\displaystyle{ a}\) do wzorów w układzie równań.
Dla ygrek sytuacja jest analogiczna.
Myślę, że nie zrobiłem błędu. Jakby ktoś coś zauważył, to proszę krzyczeć.
Pozdrawiam.
\(\displaystyle{ \begin{cases} x(t)=x_0+ \frac{a t^2}{2} \quad dla\ t< \frac{t_k}{2} \\ x(t)=\left[x_0+ \frac{a \left(\frac{t_k}{2}\right)^2}{2} + \frac{(t- \frac{t_k}{2}) a\cdot t_k} {2} \right]- \frac{a\left(t- \frac{t_k}{2}\right) ^2}{2} \quad dla\ t \in \langle \frac{t_k}{2}, t_k\rangle \end{cases}}\)
2. równość da się uprościć. Dla ygrek będzie analogicznie. Jeżeli ma przyspieszać do pewnej predkości, później jednostajnie i spowalniać to problem może tkwić w doborze przyspieszenia.
Trzeba wyliczyć przyspieszenie (jeżeli \(\displaystyle{ x_k}\) jest końcowe):
\(\displaystyle{ x(t_k)=x_0+ \frac{a t_k^2}{8}- \frac{a\left(t-\frac{t_k}{2}\right) ^2}{2}+ \frac{\left(t- \frac{t_k}{2}\right) t_k }{2} =x_k}\)
Po chwili wyliczeń otrzymujemy:
\(\displaystyle{ a= \frac{8(x_k-x_0)}{t_k ^2}}\)
Należy to podstawić do \(\displaystyle{ a}\) do wzorów w układzie równań.
Dla ygrek sytuacja jest analogiczna.
Myślę, że nie zrobiłem błędu. Jakby ktoś coś zauważył, to proszę krzyczeć.
Pozdrawiam.