MouseMotionListener dans un camembert

cs_Nabel Messages postés 53 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 19 août 2002 - 23 mai 2002 à 10:45
achamsou Messages postés 12 Date d'inscription vendredi 19 mars 2010 Statut Membre Dernière intervention 4 avril 2011 - 4 avril 2011 à 16:33
Bonjour à toutes et à tous,
J'ai créé une petite applet java permettant de dessiner un camembert selon les valeurs d'une base de données.
Ce que je voudrais faire, pour la rendre plus dynamique, c'est colorier une part (en rouge par exemple) lorsque l'utilisateur passe la souris sur la part en question.
Cependant, je ne sais pas comment faire, car il faut mesurer les coordonnées de la souris par rapport à un angle.
Si quelqu'un peut m'aider, ce serait chouette :)

Merci d'avance.

Ann@bel

5 réponses

Aldee Messages postés 47 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 3 mai 2003
23 mai 2002 à 22:45
Je ne suis pas sûre d'avoir compris exactement ce que tu voulais mais bon,
J'ai peut-etre une solution mais elle passe par les math.

Si tu as un point de reference (O soit x0,y0).
Si tu as l'angle que fait l'horizontale passant par ce point et le point de ta souris (soit A dans le sens inverse au sens horaire).
Il te faut aussi la distance (soit R) entre ces deux points (utilise Pytagore Rcarré=Differencedesxaucarré+Differencedesyaucarré.)
Par rapport a ce point de reference les coordonnées sont :
xM=cosA * R
yM=sinA * R.
Pour avoir les coordonnées dans le repère de l'écran, il te faudra additionner x0etxM, et y0etyM (quelque soit leurs signes <0 ou >0).

J'espère que je réponds à ta question.
Si tu veux que je sois plus précise ou que tu n'as rien compris à ce que je viens de raconter, n'hésites pas à me redemander, j'adore les maths!

Bye
0
cs_Nabel Messages postés 53 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 19 août 2002
24 mai 2002 à 10:46
Merci bien pour ta réponse. Je pense que ta solution pourrait me convenir parfaitement, mais j'ai décroché à la deuxième ligne !
Disons que j'ai un camembert avec 3 parts et que l'angle de la part 1 vaut 100°, l'angle de la part 2 vaut 70°, et le dernier vaut 190°. J'aimerais que quand l'utilisateur passe la souris dans une part, elle se colorie d'une autre couleur. Pour cela, il faut que je calcule si les coordonnées de la souris sont dans une part et si oui, quelle part. Les données que j'ai sont : les angles de chaque part, les coordonnées du centre du cercle, et les coordonnées de la souris.

Si tu as l'angle que fait l'horizontale passant par ce point x0 Y0 et le point de ta souris (soit A dans le sens inverse au sens horaire) C'est cette phrase que je ne comprends pas. Je calcule l'angle entre l'horizontale et quelle autre droite ?

En fait, j'aimerai un peu pus de précision sur ta solution, je ne suis pas très forte en math, mais je me soigne !

Ann@bel
0
Aldee Messages postés 47 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 3 mai 2003
27 mai 2002 à 15:37
OK.
Pour l'angle je voulais savoir si l'angle que tu considérais était celui réél de ta part ou l'angle entre l'horizontale et l'extremité de ta part de camenbert?

Bref, je continue.
Les coordonnées de ta souris sont S(xs,ys).
Les coordonnées du centre O(x0,y0).
Et ton angle A.

Bon.

Tu vérifies si le click de souris a lieu dans un rayon inférieur au rayon du cercle par Pytagore.
Cette distance = à la racine carré de la somme de (xs-x0) au carré et de (ys-y0) au carré.

Ensuite, tu calcules l'angle entre l'horizontale passant par O et la droite passant par OS. Et tu vérifies que cet angle est inférieur à l'angle de ta part de camembert.
L'angle de ton click de souris, tu fais l'inverse cos (noté cos-1) de la différence des abscisses xs et x0, divisé par l'hypothénuse c'est-a-dire la relation de Pytagore que tu as calculé avant.

Je n'ai pas trop le temps là, mais j'essaie de t'envoyer un croquis pour completer l'explication.

Courage.
Bye
0
cs_Nabel Messages postés 53 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 19 août 2002
29 mai 2002 à 14:02
Ok, je veux bien un croquis, bien que ton explication me paraît un peu plus clair.
Je vais essayer cette soluce dès que possible.
Je te file mon e-mail : c_clair@caramail.com
Merci bcp :)

Ann@bel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
achamsou Messages postés 12 Date d'inscription vendredi 19 mars 2010 Statut Membre Dernière intervention 4 avril 2011
4 avril 2011 à 16:33


0
Rejoignez-nous