Calcul des angles d'un triangle

Bonsoir , j'ai elaboré un programme qui tourne pour calculer les angles aux sommets d'un triangle mais c'etait un peu laborieux

Option Base 1

Sub calcul_angles_triangle()

a = Array(1, 2) '1ier vecteur
b = Array(2, 6) '2 ieme vecteur
c = Array(0, 1) '3 ieme vecteur
Point = Array(a, b, c)

For i = 1 To 3
  For j = 1 To 3
    If i <> j Then
       x = x & " " & i & j
     End If
  Next
 Next

s = Split(x, " ")
For i = 1 To UBound(s)
 If i Mod 2 <> 0 Then
  w = w & " " & s(i) & s(i + 1)
 End If
Next

 e = Split(w, " ")

  For j = 1 To UBound(e)
    ps = (Point(Val(Mid(e(j), 2, 1)))(1) - Point(Val(Mid(e(j), 1, 1)))(1)) * (Point(Val(Mid(e(j), 4, 1)))(1) - Point(Val(Mid(e(j), 3, 1)))(1)) + (Point(Val(Mid(e(j), 2, 1)))(2) - Point(Val(Mid(e(j), 1, 1)))(2)) * (Point(Val(Mid(e(j), 4, 1)))(2) - Point(Val(Mid(e(j), 3, 1)))(2))
    norme_vecteur1 = Sqr((Point(Val(Mid(e(j), 2, 1)))(1) - Point(Val(Mid(e(j), 1, 1)))(1)) ^ 2 + (Point(Val(Mid(e(j), 2, 1)))(2) - Point(Val(Mid(e(j), 1, 1)))(2)) ^ 2)
    norme_vecteur2 = Sqr((Point(Val(Mid(e(j), 4, 1)))(1) - Point(Val(Mid(e(j), 3, 1)))(1)) ^ 2 + (Point(Val(Mid(e(j), 4, 1)))(2) - Point(Val(Mid(e(j), 3, 1)))(2)) ^ 2)

  MsgBox Round((Application.WorksheetFunction.Acos(ps / (norme_vecteur1 * norme_vecteur2))) * 180 / 3.14, 2) 'retourne les angles aux sommets
  Next

End Sub

Il marche puisque la somme des angles obtenus fait 180° environ , peut on faire plus court ?...tel quel ca me semble etre mal pensé ou trop lourd ? Merci

Bonjour

Un vieux document, retrouvé dans mes archives...

Si cela t'intéresse...

Bye !

bonjour, quelques suggestions:

1° ajouter

option explicit

en début de module

2° utiliser des noms de variables qui aident à comprendre à quoi sert chaque variable

3° ajouter quelques commentaires. au minimum, expliquer comment tu représentes ton triangle. peut-être aussi, pourquoi pas, expliquer quelle technique mathématique tu utilises pour réaliser ce travail.

ceci me semble plus clair:

Option Explicit
Option Base 0
Sub calcul_angles_triangle()
Dim Point(), s0, s1, S2, ps, norme_vecteur1, norme_vecteur2, angle

Point = Array(Array(1, 2), Array(2, 6), Array(0, 1))
  For s0 = 0 To UBound(Point)
    s1 = (s0 + 1) Mod 3
    S2 = (s1 + 1) Mod 3
    ps = (Point(s1)(0) - Point(s0)(0)) _
        * (Point(S2)(0) - Point(s0)(0)) _
        + (Point(s1)(1) - Point(s0)(1)) _
        * (Point(S2)(1) - Point(s0)(1))
    norme_vecteur1 = Sqr((Point(s1)(0) - Point(s0)(0)) ^ 2 + (Point(s1)(1) - Point(s0)(1)) ^ 2)
    norme_vecteur2 = Sqr((Point(S2)(0) - Point(s0)(0)) ^ 2 + (Point(S2)(1) - Point(s0)(1)) ^ 2)
    angle = Round((Application.WorksheetFunction.Acos(ps / (norme_vecteur1 * norme_vecteur2))) * 180 / WorksheetFunction.Pi(), 2)
  MsgBox angle
  'Debug.Print angle 'retourne les angles aux sommets
  Next

End Sub

Merci gmb et yg_be je vais voir de près vos suggestions, un grand merci

Rechercher des sujets similaires à "calcul angles triangle"