Rotation autour d'un axe

Résolu
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 7 juin 2013 à 23:57
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 8 juin 2013 à 03:38
Bonjour j'essai de faire tourner une Picturebox autour de l'axe de son Formulaire :

ballon correspond au Picturebox
les labels 1 et 2 son placés pour me permettre de voir l'axe du Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Location = New Point(0, Panel1.Height / 2)
        Label1.Width = Panel1.Width
        Label1.Height = 1

        Label2.Location = New Point(Panel1.Width / 2, 0)
        Label2.Height = Panel1.Height
        Label2.Width = 1

        Dim x = Panel1.Width / 2
        Dim y = Panel1.Width / 2

        Dim angle = 90
        ' 50 = entraxe du Form1 au picturebox
        Balle.Location = New Point(x + 50 * Math.Cos(angle), y + 50 * Math.Sin(angle))
    End Sub


Le problème est que le picturebox ne tourne pas correctement autour de l'axe du formulaire suivant l'angle que je lui donne.

Merci d'avance.

7 réponses

Utilisateur anonyme
8 juin 2013 à 02:10
Bonjour,

Pour commencer, quel angle veux-tu envoyer à ton programme. Parce que, si toi tu penses 50 degrés, ton programme lui pense 50 radians. Si tu penses 50 degrés, tu dois les convertir en radian.

50 * Pi / 180 = 0,872664626 rd

1 radian 180/pi degrés 57,29577951 degrés
1 degré pi/180 radian 0,054831136 radian
3
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
8 juin 2013 à 02:26
Bonjour,

Merci pour ta réponse. Alors dans l'exemple donnée j'ai mis un angle de 90 degrés et 50 correspond à l'axe de la Form plus 50 pixels (pour placer ma Picturebox).

J'ai essayé ton calcule mais je n'ai pas du comprendre :

        Dim angle = 90 * Math.PI / 180
        ' 50 = entraxe du Form1 au picturebox
        Balle.Location = New Point(x + 50 * Math.Cos(angle), y + 50 * Math.Sin(angle))
0
Utilisateur anonyme
8 juin 2013 à 02:27
Bonjour,

Tu dois faire le même exercice pour ton 90 degrés

90 degrés = Pi/2 radians
180 degrés = Pi radians
360 degrés = 2 Pi radians
45 degrés = pi/4 radian
0
Utilisateur anonyme
8 juin 2013 à 02:37
Bonjour,

Donc, si j'ai bien compris, ton 50 représente des pixels et non des degrés. Alors, c'est juste ton 90 qui est concerné par la mesure d'angle. Donc, en principe, le calcul d'angle me semble correct.
0

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

Posez votre question
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
8 juin 2013 à 02:48
Merci, ça à l'aire de fonctionner :

 
angle = 90
Balle.Location = New Point(x + 50 * Math.Cos(Math.PI * angle / 180) - Balle.Width, y + 50 * Math.Sin(Math.PI * angle / 180) - Balle.Height)

Du moins quand je change l'angle le picturebox se place correctement.

Par contre pourquoi il faut changer les degrés en radian ?
0
Utilisateur anonyme
8 juin 2013 à 03:05
Bonjour,

Microsoft a toujours imposé le radian comme seule unité d'angle dans tous ses BASIC. Sauf horreur de ma part c'est la même chose dans la majorité des langages de programmation, incluant le FORTRAN. Au moment de son invention le BASIC était vu comme un logiciel pédagogique, une sorte d'étape préliminaire à l'apprentissage du FORTRAN. Cela me surprendrait que Microsoft change cette politique, ne serait-ce que pour préserver la compatibilité.
0
Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 4
8 juin 2013 à 03:38
Ok, merci pour ton aide.
0
Rejoignez-nous