Table à 2 axes

bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 - 22 févr. 2005 à 14:47
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 22 févr. 2005 à 23:30
Table à 2 axes


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Bonjour,





J’aurais voulu avoir vos avis !





J’ai une table XY. Le but de mon programme est d’enregistrer les coordonnées de la souris et de les redessinées sur ma table.





Le but et de tracer le chemin le plus court entre 2 points.. Normal..





Pour mon algo :


<OL style="MARGIN-TOP: 0cm" type=1>
<LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">Si les points sont sur la même ligne ou même colonne pas de problème :</LI></OL>



Ex : p1.X=5 p1.Y=23 p2.X=15 p2.Y=23





Dans ce cas je me déplace vers de 15-5=10 pour arriver au point… jusque là pas de problème.





<OL style="MARGIN-TOP: 0cm" type=1 start=2>
<LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">Si les points ne sont pas sur la même ligne ni la colonne</LI></OL>



Ex : p1.X=4 p1.Y=4 p2.X=8 p2.Y=8





Pour le chemin le plus court : 8-4 =4 8-4=4 donc 4/4=1


Dans se cas je descends tout les 1.. ça forme un escalier régulié de près.. pas de problème ici.





Ca se complique si :


Ex : p1.X=4 p1.Y=4 p2.X=13 p2.Y=9





13-4=11 9-4=5 11/5=2.2 Mon problème c’est que ma table ne peut faire qu’un pas. Je ne peux pas faire de 0.2.





Que me conseillez-vous ?


J’avais comme ID de faire un algo qui arrondi les nombres de sorte que le quotient de mes divisions soit entier !


Ou d’arrondir ma division ex 2.2 je l’arrondit à 2 puis le chemin qui reste à faire je le fait à la fin de mon trait, je m’explique si je dois descendre de 4 : 4*0.2=0.8 je l’arrondi à 1 et je fais un pas pour compenser se qu’il manque.








Ou avez-vous une autre solution ?


Que me conseillez-vous ?

5 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
22 févr. 2005 à 15:21
J'avais eu le même problème avec la rotation d'une image lorsque que tu veux tourner de 15° par exemple.



Le mieux est comme tu pense faire. Tu prend l'équation de la droite
y=mx+p et tu arrondi à chaque point. Ca te donnera un bon truc. Moi ca
marchait impeccable pour une rotation donc je pense que pour toi ca
sera cool.

Billou_13
Bask En Force
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
22 févr. 2005 à 15:45
le problème avec l'arrondi est que si je tombe sur un nombre 1er.. ca bloque !
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
22 févr. 2005 à 16:12
Non... je dis n'importe quoi...

Je vais prendre cette solution d'arrondi !
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
22 févr. 2005 à 23:24
Désolé pour ma réponse si j'ai pas été tout a fait net tout a l'heure. Si je me penche un peu plus sur a question.

Pour ta droite passant par les points X1=4, Y1=4 et X2=13,Y2=9

tu cherche l'équation Y=mX+p de la droite passant par ces deux points.

| 4=m4+p
|9=m13+p

qui te donne m=(9-4)/(13-4)=5/11 et p=4-4*(5/11)=(44-20)/11=24/11

a partir de la, tu calcule tout tes points en arrondissant :
pour X=1 -> Y=(5/11)*1+(24/11)=29/11=2,6363 , tu arrondi a 3

etc... pour X=2,3,4
bien sur pour X=4 -> Y=(5/11)*4+(24/11)=44/11=4
et X=13 donnera Y=9

voila plus qu'a placer tes points. Normalement, si tu met un (int) au resultat , il devrait t'arrondir tout seul

Bonne programmationn, @+

Billou_13
Bask En Force
0

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

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
22 févr. 2005 à 23:30
Désolé, je me suius tromper dans mes calculs :

m=5/9 et donc p=16/9 (et oui 13-4=9, je suis un boulet)

on m'excusera car il est tard. Mais bon, le raisonnement est bon ! LOL

Tchao,

Billou_13
Bask En Force
0
Rejoignez-nous