macie Panowie pomysl na jakis algorytm, aby zaiplementowac licznik dla myszki, ktory pokazuje jej predkosc przy przeciaganiu?

- Rejestracja:około 20 lat
- Ostatnio:około 2 godziny
Hm, trzymać kolejkę pozycji myszki z ostatniej sekundy, tzn przy mouseDragged najpierw wywalamy stare ruchy, potem dodajemy nowe, a potem liczymy całkowitą drogę kursora. Zamiast liczenia od nowa można trzymać długość drogi kursora w osobnej zmiennej, zmniejszać ją przy wywalaniu starych ruchów i zwiększać przy dodawaniu nowych. Jest to jakoś związane z tym co chcesz osiągnąć?

- Rejestracja:około 20 lat
- Ostatnio:około 2 godziny
No ale wtedy miałbyś kosmiczne skoki prędkości, raz myszka skoczy o 10 pikseli, raz o 5 px, raz 20 px i już kiszka wychodzi. Buforowanie ruchów z ostatniej sekundy wygładzi ten licznik, ale i tak przecież będzie bardzo dynamiczny - prawie, że tak samo dynamiczny, ale dużo łatwiej będzie odczytać prędkość. Natomiast jeśli bardzo chcesz mieć natychmiastowo prędkość to zamiast kolejki zapisuj ostatnie położenie kursora wraz z czasem pomiaru (np System.getCurrentTimeMIllis()), a z tego już możesz prosto wyliczyć prędkość.
- Rejestracja:ponad 14 lat
- Ostatnio:prawie 11 lat
Co sekundę:
init:
long dystansX=0, dystansY;
long czas=System.getCurrentTimeMIllis();
float predkosc=0;
int posX, posY;
event mousePressed:
posX=e.getX();
posY=e.getY();
event drag:
dystansX+=Math.abs(e.getX()-posX);
dystansY+=Math.abs(e.getY()-posY);
posX=e.getX();
posY=e.getY();
if(System.getCurrentTimeMIllis()-czas>1000){
czas=System.getCurrentTimeMIllis();
predkosc=Math.sqrt(dystansX*dystansX + dystansY*dystansY);
dystansX=0;
dystansY=0;
}
Przy czym e
to obiekt eventu.
Na bieŻąco (Boże, widzisz takie błędy i nie grzmisz):
init:
long dystansX=0, dystansY;
float predkosc=0;
int posX, posY;
event mousePressed:
posX=e.getX();
posY=e.getY();
event drag:
dystansX=Math.abs(e.getX()-posX);
dystansY=Math.abs(e.getY()-posY);
posX=e.getX();
posY=e.getY();
predkosc=Math.sqrt(dystansX*dystansX + dystansY*dystansY);
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.