On souhaite simuler le vol d'une nuée d'oiseaux et en particulier leur vol qui tend à devenir parallèle.
V ;x, y et une orientation angle ;Rmax, ce sont ses voisins ;
Attention, le dernier point nécessite des précautions. Considérons un oiseau b. Il parcourt tous ses voisins. Prenons un voisin v. On calcule donc l'écart v.angle - b.angle. Cet angle doit s'exprimer entre -180° et +180° (ou entre $-\pi$ et $\pi$ si vous êtes en radians)
Une fois la moyenne des écarts moy_ecart obtenue, on souhaite que b.angle augmente de moy_ecart , mais pas d'un coup. Une bonne façon de le faire est de se fixer un coefficient s et de faire le calcul b.angle += s*moy_ecart.
Pour s on choisit une valeur entre 0 et 1. Plus c'est proche de 1 plus c'est rapide. Il s'agit d'ajuster pour trouver une valeur qui produit un bon effet.
J'ai choisi Rmax = 30, V = 2, s = 0.3.
On doit bien sûr représenter plusieurs oiseaux. Dans l'exemple en image, j'en ai mis N = 200. Avec un langage rapide comme Processing, on peut sans problème en mettre 1000, ce qui fait très bel effet.
On place ces oiseaux aléatoirement sur la fenêtre et avec une orientation initiale aléatoire aussi.
J'ai dessiner chaque oiseau avec un cercle de 5 pixels de diamètre et un trait pour donner son orientation.
Solution possible avec Processing.