Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 357 fois - Téléchargée 65 fois
'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
Commentaires
C'est pour ça que j'ai fait un autre algorithme "Savoir si un point est dans un triangle (par l'algèbre linéaire)".
Je ne fais pas de la pub pour mon code, mais je trouve vraiment que ça méritait une amélioration.
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.