---
# System prepended metadata

title: Cahier des charges

---

# Cahier des charges

# BOIDS

## Synopsis

L’application finale représente une simulation de vol de groupe d’oiseaux.

## Contexte

Dans le cadre du deuxième semestre du cours Projet P2 de la filière développement logiciels et multimédias de la HE-Arc Ingénierie, un groupe de trois étudiants doit réaliser un projet codé en Java. Le choix du projet est libre et a été validé par les enseignants qui supervisent le travail. Les étudiants connaissent les bases du langage Java et assistent à un cours qui se déroule en parallèle du projet.

Le choix du projet s’est porté sur la réalisation d’une simulation de nuée d’oiseaux.

Une façon de simuler une nuée d’oiseaux est avec les boids. Les boids sont des objets se déplaçant selon 3 règles simples. C’est un exemple de comportement émergent, voir (https://fr.wikipedia.org/wiki/Boids).

Le programme permet à l’utilisateur d’interagir avec les boids par l’intermédiaire de la souris.

## Objectifs

### Principaux

Le projet a pour objectif d’afficher des boids sous forme de triangle qui se déplacent dans un environnement 2D. Leurs déplacements sont régis par 3 règles bien précises dépendantes des boids voisins.

> - la séparation : si les boids sont trop proches, ils s’éloignent
> - l’alignement : les boids s’alignent aux orientations des boids voisins
> - la cohésion : les boids se rapprochent les uns des autres pour former des groupes 

### Secondaires

Le clic de la souris permet d’ajouter des boids à la simulation. Avant d’exécuter la simulation, il est possible de modifier certains paramètres des boids comme leurs vitesses, le poids des différentes règles, etc.

Les paramètres peuvent être modifiés pendant la simulation grâce à des slider propre à chaque paramètre (vitesse, poids des 3 différentes règles).

Une option peut être sélectionnée pour que les boids suivent le curseur de la souris. Ainsi, le curseur agît comme un super-boid à la vue des boids. Le vecteur de cohésion lié au curseur à un coefficient prioritaire sur les vecteurs des boids.

Une musique de fond au piano est jouée tout au long de la simulation.

## Design

![](https://i.imgur.com/zqr147f.png)

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.

Les boids reçoivent un dégradé de deux couleurs aléatoires parmi une palette spécifique (pastel) lors de leur apparition dans la simulation. Puis, leurs couleurs s’adaptent au groupe qu’ils rejoignent. Le dégradé d’un groupe est défini en faisant la moyenne des dégradés des boids le constituant. 

La forme d’un boid est un fer de lance.

L’application se doit d’être le plus fluide possible (une moyenne de 60 images par seconde). 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.

## Exemple de rendu

- https://www.youtube.com/embed/fsfzaW2oBd8

## Besoins et contraintes

L’application doit être réalisée en Java.

Nous disposons en totalité de 180 heures de travail, soit 60 heures par personnes pour mener à bien ce projet. 

À la fin du projet, il est demandé de rendre une application fonctionnelle en jar, un rapport tenu sur l’ensemble de la durée du projet, un guide de l’utilisateur et un guide du développeur.

## Calendrier

- 09.03.2021 : cahier des charges intermédiaire
- 16.03.2021 : cahier des charges final
- 23.03.2021 : spécification et planning
- 30.03.2021 : conception (use case, séquence, classes)
- 14.06.2021 : présentation

## Points Chauds

- choix des bibliothèques
- détection des boids alentour
