# Spécifications détaillées
## Boids
### Principal
Chaque boid possède des caractéristiques propres : une position, une orientation, une vitesse et une accélération. De même, un boid a un différent coefficient pour chaque règle de déplacement.
Les déplacements des boids sont donc définis par trois règles. L’application des règles génère un vecteur accélération. Ce vecteur est ensuite intégré afin de changer la position du boids.
Les trois règles sont la séparation, l’alignement et la cohésion.
Les boids s’éloignent des boids voisins trop proches.
Les boids alignent leur orientation à celle de leurs
voisins. Enfin, les boids cherchent à se regrouper.
Les boids sont mis à jour à chaque delta temps.
### Secondaires
Avant et pendant la simulation il est possible de modifier les paramètres des boids :
- la vitesse
- le poids des règles :
- la cohésion
- l’alignement
- la séparation
- distance de détection
Ces derniers sont modifiables grâce à un curseur glissant.
Grâce à un clic de la souris, on peut ajouter un boid à la simulation.
Les boids ont une 4ème règle de base: la couleur. Un boid apparaît avec une couleur pastel aléatoire. Puis, à chaque rafraichissement, le boid met sa couleur à jour en fonction des boids qu’il détecte aux alentours en faisant la moyenne de ces derniers.
La forme d’un boid est un fer de lance.

## Design
L’application possède un thème sombre et un thème clair. Elle comporte un menu de démarrage, un menu de réglage, un menu de paramétrage de simulation ainsi qu’un menu pause.
L’utilisateur peut choisir entre un mode plein écran ou fenêtré.
Lors de la simulation, un bouton sera disponible dans un coin de l’application. Il ouvre un petit menu qui permet de modifier les poids des règles régissant les boids, leur vitesse et la distance de détection.

### Menu
- Menu principal :
- comporte les boutons suivants :
- Start :
amène sur le menu de paramètre de simulation
- Settings :
permet de gérer les paramètres de volume, fenêtré/plein écran
- Quit :
quitte le programme
- Menu de paramétrage présimulation :
- comporte les boutons suivants :
- Start :
Lance la simulation
- back :
renvoie au menu principal
- comporte les options suivantes :
- la vitesse des boids
- la taille des boids
- le poids des règles qui régissent les boids
- Menu de paramétrage pendant la simulation :
- comporte les options suivantes :
- la vitesse des boids
- la taille des boids
- le poids des règles qui régissent les boids
- Menu de pause :
- comporte les boutons suivants :
- Resume: retourne en jeu
- Settings: permet de gérer les paramètres de volume, fenêtré/plein écran
- Home: renvoie au menu principal
## Interaction
### Principal
Dans la simulation, lorsque l’utilisateur clique avec la souris, un boid est généré avec une direction, un sens aléatoire et un dégradé de deux couleurs aléatoires sélectionnées dans une palette pastelle.
### Secondaire
L’application propose un design clair et minimaliste, il doit être facile de distinguer les boids les uns des autres. La navigation doit être la plus simple et instinctive.
L’application peut être mise en pause. L’utilisateur peut modifier les paramètres des boids en temps réel grâce à un menu caché par défaut.
## Points Chauds
- choix des bibliothèques :
libGDX ou javaFX
- détection des boids alentours :
force brute ou dans une grille
- évitement des murs