Fonctions trigonométriques

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 470 fois - Téléchargée 77 fois

Contenu du snippet

Visual Basic est dénué de certaines fonctions trigonométriques de base. Voici cinq fonctions, la première renvoie la mesure principale d'un angle, la seconde calcule l'hypothénuse d'un triangle rectangle, la troisème l'inverse d'un cosinus, la quatrième l'inverse d'un sinus et la dernière un angle en radian entre une droite définie par deux points (X, Y),(Cx, Cy) et une horizontale passant par (Cx, Cy). La mesure de cette angle est calculée par rapport au sens trigonométrique direct (sens inverse des aiguilles d'une montre). Il est compris dans [-Pi;Pi] et peut donc être négatif.

Source / Exemple :


Public Function MesurePrincipale(Angle) As Single
 Pi = 3.14
 While Angle > Pi
  Angle = Angle - 2 * Pi
 Wend
 While Angle < -Pi
  Angle = Angle + 2 * Pi
 Wend
 MesurePrincipale = Angle
End Function

Public Function Hyp(X1, Y1, X2, Y2)
 Hyp = Sqr((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
End Function

Public Function InvCos(X) As Single
 Pi = 3.14
 For Ang = 0 To 2 * Pi Step Pi / 100
  Aprox1 = Cos(Ang - Pi / 200)
  Aprox2 = Cos(Ang + Pi / 200)
  If Aprox1 > Aprox2 Then
   Temp = Aprox1
   Aprox1 = Aprox2
   Aprox2 = Temp
  End If
  If X >= Aprox1 And X <= Aprox2 Then InvCos =  Ang: Exit For
 Next
End Function

Public Function InvSin(X) As Single
 Pi = 3.14
 For Ang = 0 To 2 * Pi Step Pi / 100
  Aprox1 = Sin(Ang - Pi / 200)
  Aprox2 = Sin(Ang + Pi / 200)
  If Aprox1 > Aprox2 Then
   Temp = Aprox1
   Aprox1 = Aprox2
   Aprox2 = Temp
  End If
  If X >= Aprox1 And X <= Aprox2 Then
   InvSin =  Ang: Exit For
  End If
 Next
End Function

Public Function AngleTrigo(X, Y, Cx, Cy)
 Pi = 3.14
 Xd = X - Cx
 Yd = Y - Cy
 Larg = Sqr(Xd ^ 2 + Yd ^ 2)
 A = Xd / Larg
 B = Yd / Larg

 Poss1 = MesurePrincipale(InvCos(A))
 Poss2 = MesurePrincipale(2 * Pi - Poss1)
 Poss3 = MesurePrincipale(InvSin(B))
 Poss4 = MesurePrincipale(Pi - Poss3)

 A1 = Abs(Poss1 - Poss3)
 A2 = Abs(Poss1 - Poss4)
 A3 = Abs(Poss2 - Poss3)
 A4 = Abs(Poss2 - Poss4) 

 If A1 <= A2 And A1 <= A3 And A1 <= A4 Then AngleTrigo = (Poss1 + Poss3) / 2
 If A2 <= A1 And A2 <= A3 And A2 <= A4 Then AngleTrigo = (Poss1 + Poss4) / 2
 If A3 <= A2 And A3 <= A1 And A3 <= A4 Then AngleTrigo = (Poss2 + Poss3) / 2
 If A4 <= A2 And A4 <= A3 And A4 <= A1 Then AngleTrigo = (Poss2 + Poss4) / 2
End Function

Conclusion :


Note : les fonctions InvCos et InvSin calculent les angles à 1/100e de Pi près. Il est possible cepandant d'affiner le réglage en diminuant la taille du bond dans les boucles for et en conservant un interval d'approximation défini par les variables Aprox1 et Aprox2 toujours égal à Ang (+ ou -) Bond / 2.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
dimanche 14 octobre 2007
Statut
Membre
Dernière intervention
10 juin 2010

SI arctan = atn, je veux savoir le symbol de arccos et arcsin sous vb svp
et Merci
Messages postés
125
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
14 juillet 2008

arctan=atn
Messages postés
51
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
7 juillet 2006

nan nan arctan c'est pas cotan!
Messages postés
192
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
31 janvier 2007

une "tan-1 = 1/tan" !!!!
Messages postés
5
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2003

Ce qui serait bien par contre c'est une fonction permettant d'obtenir une tangente -1 (inversée)
Afficher les 7 commentaires

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.