none
Demande aide sur calcul trigonométrique ? RRS feed

  • Question

  • Bonjour,

     

    J'ai un problème de trigonométrie, j'ai besoin d'un calcul que j'ai déjà vu jadis, je sais que ça peut se faire, mais je ne sais absolument pas le faire, voici l'énoncé du problème à partir du dessin d'origine, sous-cité, la suite après :

     

    Donc le but est de faire tourner le label (qui contient le texte "0" sur l'image), afin qu'il se positionne à l'endroit de l'angle qui lui est donné, voici mon code, je poursuis après :

     

    Sub cercle()
        Dim r As Long = 150
        Dim ox As Long = PictureBox1.Left + PictureBox1.Width / 2
        Dim oy As Long = PictureBox1.Top + PictureBox1.Height / 2
        Dim ar As Double ' radian
        Dim i As Double = angle
        Dim sinus As Double
        Dim cosinus As Double
        Dim x As Long
        Dim y As Long
        ar = i * 3.14 / 180
        cosinus = Math.Cos(ar)
        sinus = Math.Sin(ar)
        x = r * cosinus + ox
        y = oy - r * sinus
        '
        x = x + (Label7.Width / 2)
        y = y - (Label7.Height / 2)
        '
        Label7.Left = x ' label7 = 44 x 26
        Label7.Top = y
        Label7.Text = i
      End Sub
    

     

    Je pense que vous avez déjà compris mon problème à ce stade…

    Alors il y a plusieurs façons de manipuler le point xy (x, y) du label, soit on le prend en son centre (x/2, y/2), soit on le prend en coin d'origine (top, left), soit en coin opposé à l'origine (top+height et top+width), bref, le tout est que le coin qui se trouve le plus près vers le centre imaginaire du cercle qui sert au calcul, demeure sur cette ligne de cercle, et seulement sur cette ligne.

     

    Voici ce que fait en réalité le positionnement du label (ligne rouge), ce qui n'est évidemment pas bon, il fait une sorte d'ellipse excentrée, je poursuis après l'image :

     

     

    Le morceau de code qui pose problème est celui-ci :

     

    Label7.Left = x ' label7 = 44 x 26
    
    Label7.Top = y
    
    


     

    Car vous l'avez compris, il faudrait que je fasse varier mon point d'encrage x, y selon l'angle du cercle (qui tourne dans le sens trigonométrique), en effet, s'il est à 0 en degrés, c'est-à-dire à l'Est, je peux prendre top et left du label, mais s'il est à 90° (au Nord), je dois pendre la moitié de sa largeur et remonter de toute sa hauteur, le point d'encrage change, plus les position intermédiaires, et cætera, et je ne vais pas faire une position par degré…

     

    Donc je ne peux pas utiliser des constantes comme je le fais, mais des variables issues du calcul que je cherche et qui va modifier le point d'encrage x,y en fonction de sa position angulaire, et ça c'est un calcul que je ne sais pas faire…

     

    A toute fin utile, si vous aviez besoin de tester, je joins sous-cité le lien hypertexte du programme zipé :

     

    http://cjoint.com/?0LzpQdKuovf

     

    En vous remerciant de votre savoir mathématique.

     

    Cordialement.

     

     

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire



    • Modifié EhJoe dimanche 25 décembre 2011 15:09
    dimanche 25 décembre 2011 14:57

Réponses

  • Bonsoir,

    RESOLU J AI TROUVE

    J'ai fait une maquette à l'échelle dans Excel, en fait c'est le rayon qu'il faut bouger, à l'aide d'un pas entre la position que l'on veut entre deux quarts ; dans mon cas, le 1/4 reste en rayon de base, le secong augmente, le 3/4 diminue de la même proportion, donc 1/4=3/4, puis le 4/4 reprend la taille de base (4/4=1/4 au départ)...

    Je n'ai pas trouvé la vraie formule, mais ça marche ainsi avec des quarts et un select case, c'est bon comme ça.

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe dimanche 25 décembre 2011 22:03
    dimanche 25 décembre 2011 22:03