Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Référence de la classe PCCLayout

Calculateur de positions logiques X/Y du PCCGraph. Plus de détails...

#include <PCCLayout.h>

Graphe de collaboration de PCCLayout:

Classes

struct  BFSItem
 Contexte BFS d'un nœud en file d'attente. Plus de détails...
 

Fonctions membres publiques

 PCCLayout ()=delete
 Interdit l'instanciation — classe utilitaire statique.
 

Fonctions membres publiques statiques

static void compute (PCCGraph &graph, Logger &logger)
 Calcule et assigne les positions logiques à tous les nœuds.
 

Fonctions membres privées statiques

static std::vector< PCCNode * > findTermini (const PCCGraph &graph, Logger &logger)
 Détecte les nœuds terminus (points de départ du schéma).
 
static int runBFS (PCCGraph &graph, PCCNode *start, std::unordered_set< PCCNode * > &visited, int offsetX, Logger &logger)
 Lance un BFS linéaire depuis start et assigne les positions X/Y.
 
static void fixCollapsedBranches (PCCGraph &graph, Logger &logger)
 Corrige les branches convergentes de longueurs inégales (post-BFS).
 

Description détaillée

Calculateur de positions logiques X/Y du PCCGraph.

Documentation des constructeurs et destructeur

◆ PCCLayout()

PCCLayout::PCCLayout ( )
delete

Interdit l'instanciation — classe utilitaire statique.

Documentation des fonctions membres

◆ compute()

void PCCLayout::compute ( PCCGraph graph,
Logger logger 
)
static

Calcule et assigne les positions logiques à tous les nœuds.

Enchaîne : findTermini → runBFS (multi-sources) → fixCollapsedBranches.

Paramètres
graphGraphe dont les positions seront calculées. Modifié en place.
loggerRéférence au logger HMI fourni par PCCPanel.

◆ findTermini()

std::vector< PCCNode * > PCCLayout::findTermini ( const PCCGraph graph,
Logger logger 
)
staticprivate

Détecte les nœuds terminus (points de départ du schéma).

Paramètres
graphGraphe à analyser.
loggerRéférence au logger HMI.
Renvoie
Liste des nœuds terminus. Jamais vide si le graphe est non vide.

◆ fixCollapsedBranches()

void PCCLayout::fixCollapsedBranches ( PCCGraph graph,
Logger logger 
)
staticprivate

Corrige les branches convergentes de longueurs inégales (post-BFS).

Détecte tout switch dont une branche DEVIATION ou NORMAL atterrit au même X que lui-même mais à un Y différent (branche visuellement nulle). Décale ce switch et tout son sous-graphe aval (via ROOT) de +1 cellule. Itère jusqu'à convergence pour traiter les corrections en chaîne.

Exemple
sw/A[32,0] ─── sw/3[33,0] ─── s/5[34,0] ─── sw/B[35,0] (1 bloc normal)
\ /
s/10[33,-1] ─── s/21[34,-1] ─── s/6[35,-1] (3 blocs déviation)
→ s/6 et sw/B sont au même X=35 → sw/B décalé à [36,0], s/4_0 etc. suivent.
Paramètres
graphGraphe à corriger. Modifié en place.
loggerRéférence au logger HMI.

◆ runBFS()

int PCCLayout::runBFS ( PCCGraph graph,
PCCNode start,
std::unordered_set< PCCNode * > &  visited,
int  offsetX,
Logger logger 
)
staticprivate

Lance un BFS linéaire depuis start et assigne les positions X/Y.

Paramètres
graphGraphe dont les positions sont calculées.
startNœud de départ du BFS.
visitedEnsemble des nœuds déjà traités. Modifié en place.
offsetXDécalage X de la composante.
loggerRéférence au logger HMI.
Renvoie
Le X maximal atteint.

La documentation de cette classe a été générée à partir des fichiers suivants :