Rotation autour d'un axe [Résolu]

Guillamue06 150 Messages postés dimanche 18 avril 2004Date d'inscription 31 mars 2018 Dernière intervention - 7 juin 2013 à 23:57 - Dernière réponse : Guillamue06 150 Messages postés dimanche 18 avril 2004Date d'inscription 31 mars 2018 Dernière intervention
- 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.
Afficher la suite 

7 réponses

Répondre au sujet
Utilisateur anonyme - 8 juin 2013 à 02:10
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Guillamue06 150 Messages postés dimanche 18 avril 2004Date d'inscription 31 mars 2018 Dernière intervention - 8 juin 2013 à 02:26
0
Utile
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))
Commenter la réponse de Guillamue06
Utilisateur anonyme - 8 juin 2013 à 02:27
0
Utile
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
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 8 juin 2013 à 02:37
0
Utile
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.
Commenter la réponse de Utilisateur anonyme
Guillamue06 150 Messages postés dimanche 18 avril 2004Date d'inscription 31 mars 2018 Dernière intervention - 8 juin 2013 à 02:48
0
Utile
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 ?
Commenter la réponse de Guillamue06
Utilisateur anonyme - 8 juin 2013 à 03:05
0
Utile
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é.
Commenter la réponse de Utilisateur anonyme
Guillamue06 150 Messages postés dimanche 18 avril 2004Date d'inscription 31 mars 2018 Dernière intervention - 8 juin 2013 à 03:38
0
Utile
Ok, merci pour ton aide.
Commenter la réponse de Guillamue06

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.