2017-02-07 5 views
-1

Je souhaite mesurer la distance de déplacement de la souris pour un projet favori. Donc, je veux mettre en place une expérience: disons à quel point je peux obtenir la distance de voyage en 1m.Comment mesurer la distance de déplacement de la souris?

J'ai essayé d'écrire un programme de test mais j'ai eu quelques difficultés: Bordure de l'écran. J'utilise la classe Robot pour définir la position de la souris quand elle est sur le point d'atteindre le bord, mais je ne suis pas sûr que ce soit correct. Connaissez-vous une technique permettant de délier l'écran ou toute autre solution qui fonctionnerait?

Voici mon code de test:

public class App { 
    public static void main(String[] args) throws AWTException { 
     Toolkit toolkit = new WToolkit(); 
     int screenResolution = toolkit.getScreenResolution(); 
     Robot robot = new Robot(); 
     List<Point> list = new ArrayList<Point>(); 
     int distance = 0; 
     while (true) { 
      if(MouseInfo.getPointerInfo().getLocation().y <= 50) 
      { 
       robot.mouseMove(910, 1080); 
      } 
      list.add(MouseInfo.getPointerInfo().getLocation().getLocation()); 
      if(list.size() >= 2) { 
       Point p2 = list.get(list.size()-1); 
       Point p1 = list.get(list.size()-2); 
       if(p2.getY() <= p1.getY()) { 
        distance += (int) Math.sqrt(0 + Math.pow(p2.y - p1.y, 2)); // sqrt(pow(x2-x1) + pow(y2-y1)) sqrt(pow(x2-x1) = 0 for just measure on Y 
        System.out.println(distance/screenResolution * 0.0254); 
       } 
      } 
      try { 
       Thread.sleep(200); 
      } catch (Exception e) { 
       System.out.println("something"); 
      } 
     } 
    } 
} 
+0

oui je voudrais utiliser la souris de capteur optique pour un robot. Avec le capteur, je veux mesurer la distance parcourue par le robot. C'est pourquoi je veux savoir si c'est possible avec un capteur de souris. – Poko

+0

Je ne pense pas que vous pouvez le faire en Java. Un 'MouseInfo' peut seulement vous donner l'emplacement actuel du pointeur de la souris - il ne peut pas mesurer au-delà des bords du' GraphicsDevice' que vous êtes sur. (Oups, j'ai tapé ça dans la mauvaise case au début). –

+0

Pourquoi êtes-vous au carré puis à l'éradication carrée 'p2.y - p1.y'? –

Répondre

1

Dans cette solution, vous seriez constamment mise à jour des points P1 et P2 pour trouver la distance parcourue globale entre les mises à jour

//I think this code should work for what you are doing 
double distance = Math.sqrt(Math.pow(p1.getX()-p2.getX(),2)+Math.pow(p1.getY()-p2.getY(),2));