VB6 besoin d'aide pour calculer un angle

Résolu
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013 - 17 déc. 2011 à 17:56
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013 - 18 déc. 2011 à 15:53
Bonjours a tous ,
j'ai besoin ,pour un ti prog en cours de confection , de calculer l'angle que forme un point par rapport à un autre .
En fouillant sur le net , et en particulier sur ce site , j'ai pu trouver ceci :
Angle = Int(Atn(Y / X)).
Sa marche mais cette formule n'est pas complète , le point d'origine étant supposé être (0,0).
Quelqu'un pourrait-il me donner la formule complète ou je pourrais donner entrer un point d'origine non nul?
Je précise qu'en prog je me débrouille mais en math , je suis NUL DE CHEZ NUL !!
C'est pourquoi je me tourne vers ce forum , ésperant trouver mon bonheur .
Merci d'avoir pris le temps de me lire .

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
17 déc. 2011 à 18:44
Bon... on m'attend ailleurs ...
Pour résumer, il sembler que tu t'intéresses à l'angle "interne" que forment deux segments (segment AB et segment AC)
Les coordonnées du point A sont à considérer comme un "centre" et tu les connais
Tu connais également les coordonnées du point B
te manque à définir celles d'un point C dont l'ordonnée est celle de A et dont l'abscisse (sur ton horizontale, donc) sera celle de ton choix (à gauche ou à droite du pont A ?)
Une fois les coordonnées de ces TROIS points établies ===>>
Tu trouveras là comment faire



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
17 déc. 2011 à 18:00
Bonjour,

Il va te falloir être plus précis sur les tenants de ton problème.
Car
l'angle que forme un point par rapport à un autre
ne signifie pas grand chose pour moi !
Pour une droite, il faut déjà au moins DEUX points
Pour un angle, il en faut au moins TROIS

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013
17 déc. 2011 à 18:18
Bonjours Ucfoutu et merci pour ton interet .
J'explique :
J'ai deux points , dont les coordonnées sont par exemple (250,620) et (125,310).
Je voudrais connaitre l'angle que forme le point (250,620) par rapport au point (125,310)et a une droite horizontale imaginaire qui passe par ce deuxieme point (125,310).
La formule "Angle = Int(Atn(Y / X))" me permet de le faire mais l'angle est toujours par rapport au coin superieur gauche du picturebox au lieu du point qui m'interresse ( (125,310) ).
Voila , j'espére avoir été plus clair et encore merci .
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
17 déc. 2011 à 18:29
Bonjour,
C'est déjà moins imprécis, mais toujours insuffisamment précis.
On a cette fois-ci bien deux droites :
l'une passant par le point A et horizontale (ce qui équivaut à deux points)
l'autre passant par le point A et le point B
Ces deux droites se rencontrent et forment deux angles (dont la somme est toujours 180 °) différents et dépendant de la position d'un troisième point C imaginaire sur ton horizontale.
Comment sais-tu distinguer, de ces deux angles alpha et beta (ou alpha + beta = 180 °) celui qui t'intéresse ? Lequel considères-tu ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

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

Posez votre question
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013
17 déc. 2011 à 18:51
RE ,
Comme je n'y comprends pas grand chose en math et que j'ai du mal à m'exprimer avec les bons termes,je t'ai concocté vite fait un petit schéma .

A
\
\
C_____\B

je connais les coordonnées de chaque points et je voudrais connaitre la valeur de l'angle B .
Voila j'espere avoir été plus clair cette foi lol .
0
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013
17 déc. 2011 à 18:52
too sa a pas marché !!! en fait la droite relie B et C
0
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013
17 déc. 2011 à 19:04
Merci Ucfoutu pour ta patience je vais decortiquer tt sa et tâcher de m'en sortire .
A+
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
17 déc. 2011 à 19:16
Bonsoir

  A (125,310)
         .
          \
           \
            \
             \
              \    
    D _________\________________ C 
               0
                 (250,620)



quel angle AOC ou AOD veux tu calculer ?
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
17 déc. 2011 à 22:22
Bonsoir,
Tu tombe bien, je viens juste d'adapter cette fonction en Vb.Net (tu l'adaptera en VB6 et la testera) qui renvoi en radians l'angle formé entre 2 vecteurs, elle devrait s'adapter a ta situation, même si il y surement mieux et moins complex dans ton cas ...

   Function AngleBetween(ByVal a As Point, ByVal b As Point) As Single
        Dim dotProd As Single, lenProd As Single, divOperation As Single
        dotProd =(a.x * b.x) + (a.y * b.y) ' Fonction Dot 
        'Fonction Length(a):  math.sqrt(a.X * a.X + a.Y  *a.Y)
        lenProd = math.sqrt(a.X * a.X + a.Y * a.Y) * math.sqrt(b.X * b.X + b.Y * b.Y)
        divOperation = dotProd / lenProd
        Dim Res As Double = Math.Acos(divOperation)
        If (b.Y - a.Y) < 0 Then Res = Math.Pi + Math.Pi - Res
        Return Convert.ToSingle(Res)
    End Function


Je rappelle a et b sont des vecteurs ...
En attendant tes précisions sur le schéma donné par ShayW pour composer une solution plus simple.
CGSI3
0
cs_epson1 Messages postés 89 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 29 mars 2013
18 déc. 2011 à 15:53
bonjours et merci à Shayw et Cgsi3 ,
j'ai trouvé mon bonheur , j'avais les bonnes formules mais , en fait , je ne savais pas les utiliser .
Aprés de nombreuses recherches j'ai fini par comprendre et je m'en suis sortis .
Si j'avais sus , j'aurais bossé à l'école ... HIHI .
Encore merci .
0