Dispersion physique des arrêts co-localisés (force-directed) #4
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
CyrilLeblanc/gresit#4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dispersion physique des arrêts co-localisés (force-directed)
Contexte
Plusieurs poteaux d'arrêt peuvent partager exactement la même position GPS (même cluster physique). Actuellement, l'affichage place un point central et dispose les arrêts en cercle uniforme autour du premier. Cette approche montre ses limites quand le cluster contient beaucoup d'arrêts : les marqueurs se chevauchent, l'espacement est arbitraire et le rendu n'est pas naturel.
L'objectif est de remplacer cette logique par une simulation de forces physiques qui calcule dynamiquement une position d'affichage optimale pour chaque arrêt en fonction du niveau de zoom.
Feature
Implémenter un système de dispersion basé sur un algorithme force-directed pour les clusters d'arrêts co-localisés sur la carte MapLibre.
Comportement attendu
< seuil) → les marqueurs sont masqués (inutiles à petite échelle)Résultat visuel
Chaque arrêt est contraint dans un rayon maximum autour de son ancre GPS, radius proportionnel au zoom. La simulation converge vers un état d'équilibre où aucun marqueur ne se chevauche.
Contraintes techniques
Plateforme
geoJsonSource.setGeoJson(...))Simulation
LatLngpour mettre à jour MapLibre à chaque framePerformance
HandlerThread) pour ne pas bloquer l'UIZoom
maxSpread) est une fonction continue du zoom, ex :OnCameraChangeListenersiΔzoom > 0.1Design de l'algorithme
Forces appliquées
velocity *= 0.85à chaque tick pour convergermaxSpreadpx autour de son ancreRépulsion inter-clusters — détail
Les clusters sont des entités indépendantes qui peuvent partager la même zone à l'écran. Sans répulsion inter-clusters, un groupe d'arrêts peut passer sous un autre groupe après dispersion.
Pas de force de lien (ressort entre nœuds) — inutile ici, pas de topologie de graphe.
Architecture suggérée
État actuel (à remplacer)
Critères d'acceptance
Références