Jak policzyć prędkość myszki? jej przyśpieszenie , przemieszczenie ... po czasie np 400ms? Dodatkowo żeby za myszką rysował się czarną linią tor ruchu myszki... a po tych 400ms znikał pojawiał się powiedzmy messagebox z danymi i po kliknieciu ok znowu tak samo? ... ktoś ma jakiś pomysł? z góry dzięki ...
Użyj np. TTimer...
złap pozycję kursora i zapisz do zmiennej (ych). [X1]
uruchom Timer z Intervałą na 400ms.
W timerze jeszcze raz łapiesz pozycję myszy. [X2]
Teraz tak:
[ gdyby się ktoś nie domyślił, to /\ - delta (zmiana wartośći) :) ]
/\X = X2-X1 (może być ujemne, więc wartość bezwzględna)
/\Y = Y2-Y1 (-------------||-------------)
prędkość v = /\s / t;
t = 400ms
s = droga (/\X lub /\Y)
a przyśpieszenie a = /\v / t^2 [ale żeby to policzyć, trzeba też zapisywać prędkość do zmiennej]
wzory słownie:
prędkość = przemieszczenie [droga] / czas w którym to przemieszczenie nastąpiło
przyśpieszenie: = zmiana prędkości / czas w którym ta zamiana nastąpiła
PS> chyba troche namiezzałem, ale moze dojdziesz
Czas lepiej liczyć za pomocą gettickcount, bo timer nie zawsze jest dokładny.
W sumie tak, ale można zapisywać za każdym odpalniem OnTimer aktualny czas w zmiennej i sprawdzać prawdziwą różnicę czasu.
Właśnie to miałem na myśli, bo z samym gettickcount byłoby trudno :).
Sorki, że się wtrącę, ale się uczyłem przed chwilą fizyki i muszę coś napisać bo "tutaj ty mi jakieś brednie brzęczysz!" [mój fizyk]. A wielu już u mnie w klasie za pomyłki jednyki dostało to jestem wyczulony :)
Chodzi o to, że we wzorach podanych powyżej nie występuje prędkość, a szybkość. Za to się kołki sypały. Prędkość to wektor, a szybkość to wartość tego wektora (co wynika z pewnego dowodu), czyli to co nas w tej chwili interesuje.
Prawidłowy wzór V=/\S / /\t oznacza, że szybkość (średnia) to stosunek drogi przebytej przez ciało do czasu w którym ta droga zostala przebyta.
Koniec dygresji.
TTimer będzie dobrym rozwiążaniem tylko odpalony w oddzielnym wątku, aby ten czas w miarę liczony był dokładnie. A pobranie pozycji kursora masz chyba w FAQ.
Czas lepiej liczyć za pomocą gettickcount, bo timer nie zawsze jest dokładny.
W sumie tak, ale można zapisywać za każdym odpalniem OnTimer aktualny czas w zmiennej i sprawdzać prawdziwą różnicę czasu.