Problème intéressant avec line1

Résolu
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 28 avril 2006 à 13:44
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 28 avril 2006 à 14:35
Bonjour,

J'aurais besoin de faire un truc un peu spécial.

J'ai une ligne sur une image qui représente une boussole.

Les coordonnée X1 et Y1 de la ligne sont au centre de la boussole et lorsque je me déplace sur l'image je souhaite que les coordonnée X2 et Y2 suivent ma souris. Mais que la ligne ait toujours la même longueur de manière a ce qu'elle suivent le contour de la boussole.

Pour faire suivre la ligne pas de pb:

private sub image1_mousemove
   line1.x2=x
   line1.y2=y
endsub

Mais pour que la ligne conserve sa longueur je ne vois pas comment faire.

Quelqu'un aurait une idée?

PS: il est possible de connaitre la longueur de la ligne a tout moment en utilisant cette formule.

longueur=sqr((line1.X1-line1.x2)²+(line1.y1-line.y2)²)

Merci mes cours de seconde :p

mais bon le pb c'est qu'il n'est pas possible d'affecter directement une longueur a la ligne ;)

7 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
28 avril 2006 à 14:10
Salut,


Dim Lr   As Single

Dim X0   As Single

Dim Y0   As Single


Private Sub Form_Load()

    Dim Zx  As Single

    Dim Zy  As Single

   

    X0 = Line1.X1

    Y0 = Line1.Y1

    Zx = Line1.X2 - X0

    Zy = Line1.Y2 - Y0

    Lr = Sqr(Zy * Zy + Zx * Zx)

End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim Zx  As Single

    Dim Zy  As Single

    Dim Lg  As Single


    If Button = 1 Then

       Zx = X - Line1.X1

       Zy = Y - Line1.Y1

       Lg = Sqr(Zy * Zy + Zx * Zx)

       Line1.X2 = X0 + (Zx * Lr) / Lg

       Line1.Y2 = Y0 + (Zy * Lr) / Lg

       End If


End Sub

Daniel
3
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
28 avril 2006 à 14:01
Il dois être possible que tu trouve en utilisant les cos et sin de l'angle construit avec ta ligne
Ensuite tu fait "rayon * cos(angle) pour la coordonée en x et "rayon * sin(angle)" pour y.
Ca dois être quelque chose comme ça.

D'oh! Nuts!
Mmmmm...
 DONUTS
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
28 avril 2006 à 14:06
Salut,


Soit X0 et Y0 les coordonnées du point central.

L'autre extrémité du controle Line aura toujours, pour un angle donné,  les coordonnées suivantes :

X0+rayon*cos(angle), Y0+rayon*sin(angle)






X0, Y0 et rayon étant des constantes, et angle variant.

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
28 avril 2006 à 14:10
OUI c'est ca (trop bien ton avatar econs) et pour avoir les cos et sin :
cos = abs(y2 - y1) / sqr((line1.X1-line1.x2)²+(line1.y1-line.y2)²)
sin = abs (x2 - x1) / sqr((line1.X1-line1.x2)²+(line1.y1-line.y2)²)

D'oh! Nuts!
Mmmmm...
 DONUTS
0

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

Posez votre question
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
28 avril 2006 à 14:11
Mais je n'ai pas la valeur de cet angle. j'ai juste la valeur de X0, Y0, le rayon et les coordonnées de la souris.
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
28 avril 2006 à 14:34
Si ça marche
pense à valider la(les) rèpoce(s) qui t'on permit de résoudre ton problème.





D'oh! Nuts!
Mmmmm...
 DONUTS
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
28 avril 2006 à 14:35
Merci Gobillot ton code fonctionne impécablement.

C'est exactement ce que je voulais faire.
0
Rejoignez-nous