a ben oui ok je vien de piger t'a 2emem formule
j'ai rectifier
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub
hum il me semble que là encore ça ne marchera pas : il faut inverser les ordres dans un des deux cas ... essaye de faire un dessin avec plusieurs situation avec ton algorithme il me semble que c'est pas bon ... selon moi la bonne solution est :
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
ou bien
Sub visercible()
Dim deltaRoBot As Integer = Math.Abs(Polaire(centre, direction))
Dim deltaCible As Integer = Math.Abs(Polaire(centre, coordonnéeViser))
Dim ecart1 As Integer = 0
ecart1 = (deltaCible - deltaRoBot)
If Math.Abs(ecart1) < 180 Then
If ecart1 < 0 Then
droite(ecart1)
ElseIf ecart1 > 0 Then
gauche(Math.Abs(ecart1))
End If
ElseIf Math.Abs(ecart1) >= 180 Then
If ecart1 > 0 Then
droite(ecart1)
ElseIf ecart1 < 0 Then
gauche(Math.Abs(ecart1))
End If
End If
End Sub[/code]
dans un cas il prendra toujours le chemin le plus long dans l'autre le chemin le plus court ... tout dépend du sens que tu as considéré "positif "