|
Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
|
Implémentation de la phase 6 — extraction des blocs ferroviaires. Plus de détails...
Implémentation de la phase 6 — extraction des blocs ferroviaires.
Bug 1 — Crossover : même straight pour normal et deviation Cause : la déduplication par pairKey(startNode, endNode) empêchait la création d'un second straight entre deux switches reliés par deux voies parallèles (crossover). De plus, straightByDirectedPair stockait une valeur unique par clé, la seconde insertion écrasant la première.
Correction :
extractStraights utilise désormais un ensemble usedEdges (indices d'arêtes) pour la déduplication. L'arête de départ (startEdgeIdx) et l'arête d'arrivée (prevEdge) sont marquées après chaque création de straight. Cela empêche la traversal inverse (B→A) mais autorise plusieurs straights entre la même paire de frontières.straightByDirectedPair est désormais multi-valué (unordered_map<size_t, vector<StraightBlock*>>).extractSwitches maintient un ensemble usedStraights par switch pour attribuer des straights distincts à chaque branche.Bug 2 — Subdivision : voisins null sur les sous-blocs internes Ce bug est corrigé dans Phase8_RepositoryTransfer::resolveStraight : la résolution ne s'applique qu'aux endpoints dont neighbourId est non vide, préservant ainsi les pointeurs de chaîne posés par registerStraight.