|
Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
|
#include <StraightBlock.h>
Classes | |
| struct | StraightNeighbours |
| Voisins topologiques résolus (pointeurs non-propriétaires). Plus de détails... | |
Fonctions membres publiques | |
| StraightBlock ()=default | |
| Constructeur par défaut. | |
| std::string | getId () const override |
| Retourne l'identifiant unique de l'élément (ex. "sw/3", "s/12"). | |
| ElementType | getType () const override |
| Retourne le type de l'élément. | |
| ShuntingState | getState () const override |
| Retourne l'état opérationnel courant de l'élément. | |
| void | setState (ShuntingState state) |
| const std::vector< CoordinateLatLon > & | getPointsWGS84 () const |
| Polyligne WGS-84 ordonnée. Premier point = extrémité A. Dernier point = extrémité B. | |
| const std::vector< CoordinateXY > & | getPointsUTM () const |
| Polyligne projetée en UTM (x = est, y = nord, mètres). Même taille et même index que getPointsWGS84(). Vide si non renseigné par le pipeline v2. | |
| std::vector< CoordinateXY > & | getPointsUTMRef () |
| Référence modifiable sur la polyligne UTM. Utilisée par Phase7_SwitchProcessor::trimStraightOverlaps(). | |
| double | getLengthMeters () const |
| Longueur géodésique Haversine en mètres (depuis pointsWGS84). Mise à jour par setPointsWGS84(). | |
| double | getLengthUTM () const |
| Longueur euclidienne en mètres depuis les coordonnées UTM. Retourne 0 si pointsUTM est vide ou contient moins de 2 points. | |
| const std::vector< std::string > & | getNeighbourIds () const |
| Identifiants des blocs adjacents (StraightBlock ou SwitchBlock). Triés lexicographiquement — addNeighbourId() maintient l'ordre. | |
| const StraightNeighbours & | getNeighbours () const |
| Retourne les voisins résolus. nullptr si non encore initialisé. | |
| std::string | toString () const |
| Représentation textuelle pour le débogage. | |
| void | setId (std::string id) |
| Assigne l'identifiant du bloc. Appelé par Phase6_BlockExtractor lors de la création du bloc. | |
| void | setPointsWGS84 (std::vector< CoordinateLatLon > points) |
| Remplace la polyligne WGS84 et recalcule la longueur géodésique. | |
| void | setPointsUTM (std::vector< CoordinateXY > points) |
| Assigne la polyligne UTM. | |
| void | addNeighbourId (const std::string &id) |
| Ajoute un voisin en maintenant l'ordre lexicographique. Pas de doublon. | |
| void | replaceNeighbourId (const std::string &oldId, const std::string &newId) |
| Remplace un ID de voisin par un autre. Utilisé lors de l'absorption du segment de liaison double switch. | |
| void | setNeighbourPrev (ShuntingElement *elem) |
| Assigne le voisin côté extrémité A. | |
| void | setNeighbourNext (ShuntingElement *elem) |
| Assigne le voisin côté extrémité B. | |
| void | setNeighbourPointers (StraightNeighbours neighbours) |
| Enregistre les pointeurs prev/next en une seule opération. | |
Fonctions membres publiques hérités de ShuntingElement | |
| ShuntingElement ()=default | |
| virtual | ~ShuntingElement ()=default |
| ShuntingElement (ShuntingElement &&)=default | |
| ShuntingElement & | operator= (ShuntingElement &&)=default |
| bool | isFree () const |
| Retourne true si l'élément est libre. | |
| bool | isOccupied () const |
| Retourne true si l'élément est occupé. | |
| bool | isInactive () const |
| Retourne true si l'élément est hors service. | |
Fonctions membres publiques hérités de Element | |
| Element ()=default | |
| virtual | ~Element ()=default |
| Element (const Element &)=delete | |
| Interdit la copie — risque de slicing. | |
| Element & | operator= (const Element &)=delete |
| Element (Element &&)=default | |
| Déplacement autorisé — requis par le pipeline de construction. | |
| Element & | operator= (Element &&)=default |
Fonctions membres privées | |
| double | computeGeodesicLength () const |
| Calcule la longueur géodésique totale depuis m_pointsWGS84. Somme des distances Haversine entre chaque paire de points consécutifs. | |
Attributs privés | |
| std::vector< CoordinateLatLon > | m_pointsWGS84 |
| std::vector< CoordinateXY > | m_pointsUTM |
| std::vector< std::string > | m_neighbourIds |
| StraightNeighbours | m_neighbours |
| double | m_lengthMeters = 0.0 |
| ShuntingState | m_state = ShuntingState::FREE |
Membres hérités additionnels | |
Attributs protégés hérités de ShuntingElement | |
| ShuntingState | m_state = ShuntingState::FREE |
Attributs protégés hérités de Element | |
| std::string | m_id |
| id de l'element | |
Attributs protégés statiques hérités de Element | |
| static Logger | m_logger |
| Logger statique partagé par TOUS les éléments interactifs. | |
|
default |
Constructeur par défaut.
Le pipeline v2 (Phase6_BlockExtractor) crée les blocs via ce constructeur puis renseigne la géométrie et la topologie via les setters dédiés. Le constructeur paramétré v1 a été supprimé — il n'est plus appelé.
| void StraightBlock::addNeighbourId | ( | const std::string & | id | ) |
Ajoute un voisin en maintenant l'ordre lexicographique. Pas de doublon.
|
private |
Calcule la longueur géodésique totale depuis m_pointsWGS84. Somme des distances Haversine entre chaque paire de points consécutifs.
|
inlineoverridevirtual |
Retourne l'identifiant unique de l'élément (ex. "sw/3", "s/12").
Implémente Element.
|
inline |
Longueur géodésique Haversine en mètres (depuis pointsWGS84). Mise à jour par setPointsWGS84().
| double StraightBlock::getLengthUTM | ( | ) | const |
Longueur euclidienne en mètres depuis les coordonnées UTM. Retourne 0 si pointsUTM est vide ou contient moins de 2 points.
|
inline |
Identifiants des blocs adjacents (StraightBlock ou SwitchBlock). Triés lexicographiquement — addNeighbourId() maintient l'ordre.
|
inline |
Retourne les voisins résolus. nullptr si non encore initialisé.
|
inline |
Polyligne projetée en UTM (x = est, y = nord, mètres). Même taille et même index que getPointsWGS84(). Vide si non renseigné par le pipeline v2.
|
inline |
Référence modifiable sur la polyligne UTM. Utilisée par Phase7_SwitchProcessor::trimStraightOverlaps().
|
inline |
Polyligne WGS-84 ordonnée. Premier point = extrémité A. Dernier point = extrémité B.
|
inlineoverridevirtual |
Retourne l'état opérationnel courant de l'élément.
Implémente ShuntingElement.
|
inlineoverridevirtual |
Retourne le type de l'élément.
Implémente Element.
| void StraightBlock::replaceNeighbourId | ( | const std::string & | oldId, |
| const std::string & | newId | ||
| ) |
Remplace un ID de voisin par un autre. Utilisé lors de l'absorption du segment de liaison double switch.
|
inline |
Assigne l'identifiant du bloc. Appelé par Phase6_BlockExtractor lors de la création du bloc.
| id | Identifiant unique (ex. "s/0"). |
|
inline |
Assigne le voisin côté extrémité B.
| elem | Pointeur non-propriétaire. nullptr si terminus. |
| void StraightBlock::setNeighbourPointers | ( | StraightNeighbours | neighbours | ) |
Enregistre les pointeurs prev/next en une seule opération.
| neighbours | Struct contenant les deux extrémités résolues. |
|
inline |
Assigne le voisin côté extrémité A.
| elem | Pointeur non-propriétaire. nullptr si terminus. |
|
inline |
Assigne la polyligne UTM.
| points | Points projetés en UTM (même taille que pointsWGS84). |
| void StraightBlock::setPointsWGS84 | ( | std::vector< CoordinateLatLon > | points | ) |
Remplace la polyligne WGS84 et recalcule la longueur géodésique.
| points | Polyligne WGS-84 ordonnée (≥ 2 points). |
|
inline |
| std::string StraightBlock::toString | ( | ) | const |
Représentation textuelle pour le débogage.
|
private |
Longueur géodésique totale en mètres (Haversine sur m_pointsWGS84). Mise à jour automatiquement par setPointsWGS84().
|
private |
IDs des blocs adjacents (StraightBlock ou SwitchBlock). Trié lexicographiquement — addNeighbourId() maintient l'invariant.
|
private |
Pointeurs non-propriétaires vers les blocs adjacents. Renseignés par Phase9_RepositoryTransfer::resolve(). Propriété de TopologyRepository — ne pas delete.
|
private |
Polyligne UTM (x = est, y = nord, mètres). Même taille et même index que m_pointsWGS84. Renseigné par le pipeline v2 (Phase6_BlockExtractor).
|
private |
Polyligne WGS-84 ordonnée (latitude, longitude). Premier point = extrémité A. Dernier point = extrémité B. Modifiable via setPointsWGS84() — recalcule automatiquement m_lengthMeters.
|
private |
État opérationnel courant.