Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
887 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Comparaison avec drawLine ?!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comparaison avec drawLine ?!

n°2161735
monster-mu​nch
Miam
Posté le 28-10-2012 à 16:27:17  profilanswer
 

Bonjour,
 
Je souhaite pouvoir comparer le trait que je fais avec ma souris avec drawLine.
 
Je m'explique : Je récupère les coordonnées du trait que je trace avec ma souris. Ensuite, je voudrai savoir si ce que j'ai tracé correspond à un trait vertical, horizontal, ou en diagonal. Puis, je veux déterminer le sens.
J'ai pensé qu'en utilisant drawLine, en traçant la droite parfaite en passant la 1ère coordonnée et la dernière, je pourrai comparer avec le trait que j'ai tracé.
Sauf que, je ne vois pas comment faire après...
 
Je ne sais pas si c'est très clair...  :pt1cable:  
 
Merci de votre aide !

mood
Publicité
Posté le 28-10-2012 à 16:27:17  profilanswer
 

n°2161741
Farian
Posté le 28-10-2012 à 18:38:09  profilanswer
 

Je confirme, votre description n'est pas claire :D
 
Si votre but est de déterminer la direction et le sens des mouvements effectués avec la souris, pourquoi dessiner le trait, au lieu de faire les calculs sur les coordonnées ?

n°2161743
monster-mu​nch
Miam
Posté le 28-10-2012 à 18:50:05  profilanswer
 

Je pensait qu'en faisant les dessins, je pourrai avec une méthode pour comparer; a priori non...
Si je fais les calculs, je peux trouver quand je fais, par exemple, un trait vertical, mais il faut que le trait soit parfait. Je voudrai introduction un pourcentage d'erreur.
En gros, si le trait est à peut près vertical, je le valide comme un trait vertical.

n°2161745
Farian
Posté le 28-10-2012 à 18:55:27  profilanswer
 

Dans ce cas-là, à partir des coordonnées et de la fonction atan2, vous récupérez l'angle et définissez des seuils (du genre entre -5° et 5 ° c'est horizontal).
Note : la fonction renvoie l'angle en radians, entre -pi et pi


Message édité par Farian le 28-10-2012 à 18:57:32
n°2161748
monster-mu​nch
Miam
Posté le 28-10-2012 à 19:06:29  profilanswer
 

Je ne comprend pas comment utiliser cette fonction !
Je récupère les coordonnées du trajet de ma souris (les x et les y). Ensuite, je compare chaque x avec chaque y ??? Et ça me retourne un angle ?

n°2161749
Farian
Posté le 28-10-2012 à 19:29:11  profilanswer
 

si vous avez P1 (x1,y1) et P2 (x2,y2), vous utilisez atan2(y2-y1, x2-x1) qui vous renvoie l'angle du segment de P1 vers P2

n°2161756
monster-mu​nch
Miam
Posté le 28-10-2012 à 21:50:43  profilanswer
 

Je ne comprend pas.
Voici ce que j'ai fait :

Code :
  1. public Boolean HorizontalLineToLeft(List<Integer> lx, List<Integer> ly) {
  2.         int size = 0;
  3.  double x1;
  4.  double x2;
  5.  double y1;
  6.  double y2;
  7.  for (int i = 0; i <= lx.size() - 2; i++) {
  8.   x1 = lx.get(i);
  9.   x2 = lx.get(i + 1);
  10.   y1 = ly.get(i);
  11.   y2 = ly.get(i + 1);
  12.   System.out.println(Math.atan2(y2 - y1, x2 - x1));
  13.   if (Math.atan2(y2 - y1, x2 - x1) <= 0.02) {
  14.    size++;
  15.   }
  16.  }
  17.  if (size == lx.size()) {
  18.   return true;
  19.  }
  20.  return false;
  21. }
  22. }


 
Et le j'ai comme résultat :
(Dans mon main, j'ai un println qui affiche les coordonnées.)

Code :
  1. La liste des X est : [79, 80, 81, 83, 88, 95, 104, 112, 119, 126, 132, 135, 137, 139, 140, 142, 143, 144, 145, 146, 148, 149, 150, 151, 152, 152]
  2. La liste des Y est : [78, 78, 79, 79, 79, 79, 81, 83, 84, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86]
  3. 0.7853981633974483
  4. 0.7853981633974483
  5. 0.7853981633974483
  6. 0.7853981633974483
  7. 0.7853981633974483
  8. 0.7853981633974483
  9. 0.7853981633974483
  10. 0.7853981633974483
  11. 0.7853981633974483
  12. 0.7853981633974483
  13. 0.7853981633974483
  14. 0.7853981633974483
  15. 0.7853981633974483
  16. 0.7853981633974483
  17. 0.7853981633974483
  18. 0.7853981633974483
  19. 0.7853981633974483
  20. 0.7853981633974483
  21. 0.7853981633974483
  22. 0.7853981633974483
  23. 0.7853981633974483
  24. 0.7853981633974483
  25. 0.7853981633974483
  26. 0.7853981633974483
  27. 0.0


 
Pourquoi ça affiche toujours le même résultat ?

n°2161889
willy le k​id
Posté le 29-10-2012 à 16:42:25  profilanswer
 

Je ne sais pas, il n'y a rien dans ton code qui indique une possibilité de "même résultat". Mais il y a quelques fantaisies dans ton code...
A) Pourquoi convertir des Integer en double (donc réel long)?
B) tu as 26 points donc 13 couples Pdepart(x1,y1) et PArrivée(x2,y2),  
je suppose que tu souhaites faire 13 calcul de direction : P1 et P2, P3 et P4, ... P23 et P24, P25 et P26  
... tu as codé 25 calculs de direction soit P1 et P2, P2 et P3, p3 et P4 ... P24 et P25, P25 et P26
C) seule possibilité pour un même résultat : tu t'es trompé à la déclaration / instanciation de lx et ly


Message édité par willy le kid le 29-10-2012 à 16:45:02
n°2161918
Farian
Posté le 29-10-2012 à 23:07:15  profilanswer
 

Après réflexion, 0,7853...., cela donne exactement 45 degrés, ce qui correspond à x = y (et x > 0) ...
 
Par le plus grand des hasards, n'auriez vous pas passé deux fois X (si c'était 2 fois Y, il y aurait eu des résultats incohérents si (x1=x2) et (y1=y2) ) ? (ce qui correspondrait à l'appel de "HorizontalLineToLeft(X, X)"  )  
 
A priori, je sens bien une erreur du même niveau, le truc bête sur lequel on passe sans le voir et qui va tout régler d'un coup, le code ayant l'air propre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Comparaison avec drawLine ?!

 

Sujets relatifs
Comparaison et calculs sur deux fichiers à la foisComparaison de couleur de cellules
Help comparaison de deux fichier perl[Resolu] probleme en C : comparaison de chaine de caractere
comparaison et copie de cellules excel avec macrocomparaison et creation de repertoire
comparaison de fichiersOptimiser une macro de comparaison de feuilles Excel
Comparaison date de format DD-MM-YYYY avec une date de format TIMESTAM[VBA] comparaison entre 2 lignes successives
Plus de sujets relatifs à : Comparaison avec drawLine ?!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR