Apres avoir réfléchi longtemp j'ai trouvé la formule, la voici
Source / Exemple :
'FONCTIONS ANNEXES
'longueur de l'hypoténuse d'un triangle rectangle
Function Distance(X1, Y1, X2, Y2)
Distance = Sqr(Abs(X1 - X2) ^ 2 + Abs(Y1 - Y2) ^ 2)
End Function
'cos -1
Public Function CosM(X) As Single
Pi = 3.14
For Ang = 0 To 2 * Pi Step Pi / 100
Aprox1 = Cos(Ang - Pi / 100)
Aprox2 = Cos(Ang + Pi / 100)
If Aprox1 > Aprox2 Then
temp = Aprox1
Aprox1 = Aprox2
Aprox2 = temp
End If
If X >= Aprox1 And X <= Aprox2 Then CosM = Ang * 57.29: Exit For
Next
End Function
'récupère la valeur de l'angle d'une droite
Function GetAngle(XOrigin, YOrigin, X2, Y2)
If XOrigin = X2 And YOrigin = Y2 Then GetAngle = 0: Exit Function
a = (X2 - XOrigin) / Distance(XOrigin, YOrigin, X2, Y2)
a = CosM(a)
If Y2 < YOrigin Then a = (180 - a) + 180
If Y2 = YOrigin And X2 < XOrigin Then a = a + 180
GetAngle = a
End Function
'FONCTION GENERALE'
'''''''''''''''''''
Function IsInTriangle(PointX, PointY, TriX1, TriY1, TriX2, TriY2, TriX3, TriY3) As Boolean
a1 = GetAngle(PointX, PointY, TriX1, TriY1)
a2 = GetAngle(PointX, PointY, TriX2, TriY2)
a1 = Abs(a1 - a2)
a2 = GetAngle(PointX, PointY, TriX1, TriY1)
a3 = GetAngle(PointX, PointY, TriX3, TriY3)
a2 = Abs(a2 - a3)
a3 = GetAngle(PointX, PointY, TriX2, TriY2)
a4 = GetAngle(PointX, PointY, TriX3, TriY3)
a3 = Abs(a3 - a4)
If a1 > 180 Then a1 = 360 - a1
If a2 > 180 Then a2 = 360 - a2
If a3 > 180 Then a3 = 360 - a3
If (a1 + a2 + a3) = 360 Then IsInTriangle = True Else IsInTriangle = False
End Function
Conclusion :
voila bonne prog
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.