Skip to content

Superviseur — Frontend v1.0.0


Superviseur — Frontend / features/map/MapGeometryUtils / MapGeometryUtils

Classe: MapGeometryUtils ​

Défini dans: features/map/MapGeometryUtils.ts:19

Utilitaire TypeScript pur pour la géométrie des cartes et les conversions de coordonnées.

Constructeurs ​

Constructeur ​

ts
new MapGeometryUtils(): MapGeometryUtils;

Retourne ​

MapGeometryUtils

Méthodes ​

distance() ​

ts
static distance(p1, p2): number;

Défini dans: features/map/MapGeometryUtils.ts:26

Calcule la distance euclidienne entre deux points.

Paramètres ​

ParamètreTypeDescription
p1{ x: number; y: number; }Premier point.
p1.xnumber-
p1.ynumber-
p2{ x: number; y: number; }Deuxième point.
p2.xnumber-
p2.ynumber-

Retourne ​

number

La distance euclidienne.


polygonSignature() ​

ts
static polygonSignature(poly): number;

Défini dans: features/map/MapGeometryUtils.ts:39

Empreinte numérique bon marché d'un polygone, sensible à la position de chaque sommet (hash FNV-1a sur les coordonnées arrondies au millième de pourcent, sous-pixel). Sert à détecter en O(sommets) qu'un polygone est inchangé et à réutiliser un résultat mémoïsé coûteux (ancre de pôle d'inaccessibilité, boîte englobante) sans le recalculer. Deux géométries distinctes ont une probabilité négligeable de collision aux échelles en jeu.

Paramètres ​

ParamètreTypeDescription
polyobject[] | undefinedSommets du polygone (undefined ou vide → 0).

Retourne ​

number

Un entier 32 bits identifiant la géométrie courante.


distanceToSegment() ​

ts
static distanceToSegment(
   p, 
   a, 
   b): number;

Défini dans: features/map/MapGeometryUtils.ts:56

Calcule la distance la plus courte entre un point P et un segment de droite AB.

Paramètres ​

ParamètreTypeDescription
p{ x: number; y: number; }Le point P.
p.xnumber-
p.ynumber-
a{ x: number; y: number; }L'extrémité A du segment.
a.xnumber-
a.ynumber-
b{ x: number; y: number; }L'extrémité B du segment.
b.xnumber-
b.ynumber-

Retourne ​

number

La distance la plus courte.


isPointInPolygon() ​

ts
static isPointInPolygon(pt, poly): boolean;

Défini dans: features/map/MapGeometryUtils.ts:74

Vérifie si un point se trouve à l'intérieur d'un polygone à l'aide de l'algorithme de lancer de rayons (Ray Casting).

Paramètres ​

ParamètreTypeDescription
pt{ x: number; y: number; }Le point à tester.
pt.xnumber-
pt.ynumber-
polyobject[]Les sommets du polygone.

Retourne ​

boolean

Vrai si le point est à l'intérieur, faux sinon.


toPxX() ​

ts
static toPxX(percent, width): number;

Défini dans: features/map/MapGeometryUtils.ts:93

Convertit un pourcentage X relatif en valeur pixel en fonction de la largeur.

Paramètres ​

ParamètreTypeDescription
percentnumberLe pourcentage.
widthnumberLa largeur en pixels.

Retourne ​

number

La valeur en pixels.


toPxY() ​

ts
static toPxY(percent, height): number;

Défini dans: features/map/MapGeometryUtils.ts:103

Convertit un pourcentage Y relatif en valeur pixel en fonction de la hauteur.

Paramètres ​

ParamètreTypeDescription
percentnumberLe pourcentage.
heightnumberLa hauteur en pixels.

Retourne ​

number

La valeur en pixels.


getPolygonPath() ​

ts
static getPolygonPath(
   poly, 
   width, 
   height): string;

Défini dans: features/map/MapGeometryUtils.ts:115

Génère la chaîne de caractères de l'attribut SVG Path 'd' pour un polygone. Convertit les coordonnées en pourcentage en pixels en utilisant les dimensions fournies.

Paramètres ​

ParamètreTypeDescription
polyobject[] | undefinedSommets du polygone.
widthnumberLargeur de référence.
heightnumberHauteur de référence.

Retourne ​

string

La valeur de l'attribut path.


closestPointOnPolygonBorder() ​

ts
static closestPointOnPolygonBorder(
   p, 
   poly, 
   width, 
   height): object;

Défini dans: features/map/MapGeometryUtils.ts:141

Trouve le point le plus proche sur le bord du polygone par rapport à un point donné. Retourne la coordonnée dans la même unité que l'entrée (pixels).

Paramètres ​

ParamètreTypeDescription
p{ x: number; y: number; }Le point de départ.
p.xnumber-
p.ynumber-
polyobject[]Le polygone.
widthnumberLargeur pour la conversion en pixels.
heightnumberHauteur pour la conversion en pixels.

Retourne ​

object

Le point le plus proche en pixels.

NomTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:146
ynumberfeatures/map/MapGeometryUtils.ts:146

outlineContours() ​

ts
static outlineContours(
   polygons, 
   points, 
   pointRadius, 
   marginPx, 
   smoothingPx?): object[][];

Défini dans: features/map/MapGeometryUtils.ts:183

Calcule le(s) contour(s) englobant un ensemble de polygones et de points, à marginPx de distance, avec une fermeture morphologique de rayon smoothingPx qui supprime les changements de direction courts (renfoncements/protubérances étroits) et arrondit les coins, sans jamais entrer dans les formes (la fermeture est extensive : le résultat contient toujours les formes dilatées de la marge). Rastérisation + morphologie + suivi de frontière sur grille.

Paramètres ​

ParamètreTypeValeur par défautDescription
polygonsobject[][]undefinedPolygones pleins (sommets en pixels).
pointsobject[]undefinedPoints isolés (pixels) traités comme des disques de rayon pointRadius.
pointRadiusnumberundefinedRayon des disques associés aux points isolés (pixels).
marginPxnumberundefinedMarge entre les formes et le contour (pixels).
smoothingPxnumber0Rayon de fermeture : seuil de la « durée » minimale d'un virage (pixels).

Retourne ​

object[][]

Un ou plusieurs anneaux fermés (pixels), lissés. Vide si aucune forme.


simplifyClosed() ​

ts
static simplifyClosed(poly, tolerance): object[];

Défini dans: features/map/MapGeometryUtils.ts:248

Simplifie un contour fermé en ne retenant que les sommets qui s'écartent de la corde de plus de

(Ramer-Douglas-Peucker).

Appliqué à un contour suivi sur une grille, cela remplace les escaliers par les obliques qu'ils approchaient : le tracé cesse de ne se déplacer qu'en x et en y.

Paramètres ​

ParamètreType
polyobject[]
tolerancenumber

Retourne ​

object[]


farthestPair() ​

ts
private static farthestPair(poly): [number, number];

Défini dans: features/map/MapGeometryUtils.ts:268

Indices des deux sommets les plus éloignés, servant de points d'ancrage à la simplification.

Paramètres ​

ParamètreType
polyobject[]

Retourne ​

[number, number]


douglasPeucker() ​

ts
private static douglasPeucker(path, tolerance): object[];

Défini dans: features/map/MapGeometryUtils.ts:287

Ramer-Douglas-Peucker sur un chemin ouvert.

Paramètres ​

ParamètreType
pathobject[]
tolerancenumber

Retourne ​

object[]


roundedClosedPath() ​

ts
static roundedClosedPath(poly, radius): string;

Défini dans: features/map/MapGeometryUtils.ts:326

Chemin SVG fermé dont chaque angle est remplacé par un congé.

Le tracé rejoint chaque sommet en ligne droite, puis tourne par un arc de rayon

avant de repartir : les virages deviennent de vrais arrondis, là où un

chemin segment à segment enchaîne des angles vifs.

Le rayon est borné par la moitié de chaque arête adjacente, si bien qu'un congé n'empiète jamais sur le suivant — c'est ce qui distingue ce lissage d'une interpolation par tangentes, qui déborde dès que deux sommets se rapprochent et referme alors une boucle parasite sur le contour.

Paramètres ​

ParamètreType
polyobject[]
radiusnumber

Retourne ​

string


unitVector() ​

ts
private static unitVector(from, to): 
  | {
  x: number;
  y: number;
}
  | null;

Défini dans: features/map/MapGeometryUtils.ts:363

Vecteur unitaire de vers , ou null s'ils coïncident.

Paramètres ​

ParamètreType
from{ x: number; y: number; }
from.xnumber
from.ynumber
to{ x: number; y: number; }
to.xnumber
to.ynumber

Retourne ​

| { x: number; y: number; } | null


computeOutlineBounds() ​

ts
private static computeOutlineBounds(
   polygons, 
   points, 
   pointRadius): OutlineBounds | null;

Défini dans: features/map/MapGeometryUtils.ts:374

Boîte englobante de toutes les formes (polygones + disques des points). Null si rien.

Paramètres ​

ParamètreType
polygonsobject[][]
pointsobject[]
pointRadiusnumber

Retourne ​

OutlineBounds | null


gridIdx() ​

ts
private static gridIdx(
   r, 
   c, 
   cols): number;

Défini dans: features/map/MapGeometryUtils.ts:399

Indice plat d'une cellule de grille.

Paramètres ​

ParamètreType
rnumber
cnumber
colsnumber

Retourne ​

number


gridIn() ​

ts
private static gridIn(
   r, 
   c, 
   rows, 
   cols): boolean;

Défini dans: features/map/MapGeometryUtils.ts:404

Vrai si (r,c) est dans les bornes de la grille.

Paramètres ​

ParamètreType
rnumber
cnumber
rowsnumber
colsnumber

Retourne ​

boolean


rasterizeShapes() ​

ts
private static rasterizeShapes(
   polygons, 
   points, 
   pointRadius, 
   bounds, 
   cell, 
   rows, 
   cols): Uint8Array;

Défini dans: features/map/MapGeometryUtils.ts:409

Rastérise les formes : cellule pleine si son centre tombe dans un polygone ou un disque.

Paramètres ​

ParamètreType
polygonsobject[][]
pointsobject[]
pointRadiusnumber
boundsOutlineBounds
cellnumber
rowsnumber
colsnumber

Retourne ​

Uint8Array


isCellInsideShapes() ​

ts
private static isCellInsideShapes(
   x, 
   y, 
   polygons, 
   points, 
   r2): boolean;

Défini dans: features/map/MapGeometryUtils.ts:433

Teste l'appartenance d'un point à au moins un polygone ou un disque de point.

Paramètres ​

ParamètreType
xnumber
ynumber
polygonsobject[][]
pointsobject[]
r2number

Retourne ​

boolean


disk() ​

ts
private static disk(rad): number[];

Défini dans: features/map/MapGeometryUtils.ts:452

Disque structurant (offsets de cellules dans un rayon donné).

Paramètres ​

ParamètreType
radnumber

Retourne ​

number[]


dilate() ​

ts
private static dilate(
   src, 
   rows, 
   cols, 
   rad): Uint8Array;

Défini dans: features/map/MapGeometryUtils.ts:460

Dilatation morphologique au disque de rayon rad (cellules).

Paramètres ​

ParamètreType
srcUint8Array
rowsnumber
colsnumber
radnumber

Retourne ​

Uint8Array


erode() ​

ts
private static erode(
   src, 
   rows, 
   cols, 
   rad): Uint8Array;

Défini dans: features/map/MapGeometryUtils.ts:478

Érosion morphologique au disque de rayon rad (cellules).

Paramètres ​

ParamètreType
srcUint8Array
rowsnumber
colsnumber
radnumber

Retourne ​

Uint8Array


diskFullyInside() ​

ts
private static diskFullyInside(
   src, 
   r, 
   c, 
   o, 
   rows, 
   cols): boolean;

Défini dans: features/map/MapGeometryUtils.ts:495

Vrai si toutes les cellules du disque centré en (r,c) sont pleines et dans les bornes.

Paramètres ​

ParamètreType
srcUint8Array
rnumber
cnumber
onumber[]
rowsnumber
colsnumber

Retourne ​

boolean


isFilled() ​

ts
private static isFilled(
   filled, 
   rows, 
   cols, 
   r, 
   c): boolean;

Défini dans: features/map/MapGeometryUtils.ts:517

Vrai si la cellule (r,c) est pleine (et dans les bornes).

Paramètres ​

ParamètreType
filledUint8Array
rowsnumber
colsnumber
rnumber
cnumber

Retourne ​

boolean


traceBoundaryEdges() ​

ts
private static traceBoundaryEdges(
   filled, 
   rows, 
cols): Map<string, [number, number]>;

Défini dans: features/map/MapGeometryUtils.ts:531

Suivi de frontière : arêtes dirigées (cellule pleine du même côté) le long des bords.

Paramètres ​

ParamètreType
filledUint8Array
rowsnumber
colsnumber

Retourne ​

Map<string, [number, number]>


collectCellEdges() ​

ts
private static collectCellEdges(
   filled, 
   rows, 
   cols, 
   r, 
   c, 
   edges): void;

Défini dans: features/map/MapGeometryUtils.ts:548

Émet les arêtes de bord d'une cellule pleine (côtés adjacents à du vide).

Paramètres ​

ParamètreType
filledUint8Array
rowsnumber
colsnumber
rnumber
cnumber
edgesMap<string, [number, number]>

Retourne ​

void


stitchEdgeLoops() ​

ts
private static stitchEdgeLoops(
   edges, 
   minX, 
   minY, 
   cell): object[][];

Défini dans: features/map/MapGeometryUtils.ts:565

Recolle les arêtes dirigées en boucles fermées (en coordonnées pixel).

Paramètres ​

ParamètreType
edgesMap<string, [number, number]>
minXnumber
minYnumber
cellnumber

Retourne ​

object[][]


convexHull() ​

ts
static convexHull(points): object[];

Défini dans: features/map/MapGeometryUtils.ts:598

Enveloppe convexe d'un nuage de points (parcours monotone d'Andrew), sommets rendus dans le sens horaire du repère écran.

Appliquée au contour issu de la morphologie, elle en retire les arrondis que la dilatation au disque a posés sur chaque coin et les creux qu'elle a laissés entre deux formes voisines : il reste les seuls sommets qui portent l'étendue, joints par des segments droits. Le tracé épouse alors les bords extérieurs de l'implantation au lieu d'onduler autour.

Paramètres ​

ParamètreType
pointsobject[]

Retourne ​

object[]


dropCollinear() ​

ts
private static dropCollinear(poly): object[];

Défini dans: features/map/MapGeometryUtils.ts:624

Supprime les sommets colinéaires d'un polygone fermé (réduit fortement le nombre de points).

Paramètres ​

ParamètreType
polyobject[]

Retourne ​

object[]


chaikin() ​

ts
static chaikin(poly): object[];

Défini dans: features/map/MapGeometryUtils.ts:642

Lissage de Chaikin (un passage) sur un polygone fermé : arrondit les marches d'escalier du suivi de grille en remplaçant chaque sommet par deux points aux quarts de chaque arête.

Paramètres ​

ParamètreType
polyobject[]

Retourne ​

object[]


closestPointOnSegment() ​

ts
static closestPointOnSegment(
   p, 
   a, 
   b): object;

Défini dans: features/map/MapGeometryUtils.ts:664

Fonction utilitaire : trouve le point le plus proche du point P sur le segment AB.

Paramètres ​

ParamètreTypeDescription
p{ x: number; y: number; }Le point P.
p.xnumber-
p.ynumber-
a{ x: number; y: number; }L'extrémité A du segment.
a.xnumber-
a.ynumber-
b{ x: number; y: number; }L'extrémité B du segment.
b.xnumber-
b.ynumber-

Retourne ​

object

Le point le plus proche sur le segment AB.

NomTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:668
ynumberfeatures/map/MapGeometryUtils.ts:668

polygonCentroid() ​

ts
static polygonCentroid(poly): object;

Défini dans: features/map/MapGeometryUtils.ts:682

Calcule le centroïde (centre de masse) d'un polygone fermé via la formule de Shoelace. Replie sur la moyenne des sommets si l'aire est dégénérée (polygone plat).

Paramètres ​

ParamètreTypeDescription
polyobject[]Sommets du polygone.

Retourne ​

object

Le centroïde, dans la même unité que l'entrée.

NomTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:682
ynumberfeatures/map/MapGeometryUtils.ts:682

signedDistToPolygon() ​

ts
private static signedDistToPolygon(pt, poly): number;

Défini dans: features/map/MapGeometryUtils.ts:713

Distance signée d'un point au polygone : positive à l'intérieur, négative à l'extérieur ; en valeur absolue, la distance au bord le plus proche.

Paramètres ​

ParamètreType
pt{ x: number; y: number; }
pt.xnumber
pt.ynumber
polyobject[]

Retourne ​

number


labelAnchor() ​

ts
static labelAnchor(
   poly, 
   planW?, 
   planH?, 
   precision?): object;

Défini dans: features/map/MapGeometryUtils.ts:734

Point d'ancrage optimal pour une étiquette : le « pôle d'inaccessibilité » du polygone, c'est-à-dire le point intérieur le plus éloigné de tous les bords, calculé par subdivision en quadrants (algorithme polylabel simplifié). Pour un carré/cercle il coïncide avec le centre ; pour une forme concave ou allongée (L, U, couloir) il reste BIEN À L'INTÉRIEUR et dégagé, là où le simple centroïde déborderait. Unités identiques à l'entrée (pourcentages du plan).

Paramètres ​

ParamètreTypeValeur par défautDescription
polyobject[] | undefinedundefinedSommets du polygone.
planWnumber100-
planHnumber100-
precision?numberundefinedSeuil d'arrêt de la subdivision (même unité que les coordonnées).

Retourne ​

object

Le point d'ancrage.

NomTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:739
ynumberfeatures/map/MapGeometryUtils.ts:739

polygonBounds() ​

ts
private static polygonBounds(poly): OutlineBounds;

Défini dans: features/map/MapGeometryUtils.ts:782

Boîte englobante d'un polygone (toutes coordonnées).

Paramètres ​

ParamètreType
polyobject[]

Retourne ​

OutlineBounds


refineLabelCell() ​

ts
private static refineLabelCell(
   queue, 
   initialBest, 
   precision, 
   makeCell): LabelCell;

Défini dans: features/map/MapGeometryUtils.ts:800

Subdivision en quadrants (polylabel) : extrait à chaque tour la cellule au plus fort potentiel, met à jour le meilleur point connu et subdivise tant que le potentiel peut encore le battre.

Paramètres ​

ParamètreType
queueLabelCell[]
initialBestLabelCell
precisionnumber
makeCell(x, y, half) => LabelCell

Retourne ​

LabelCell


labelAnchorTopLeft() ​

ts
static labelAnchorTopLeft(poly): object;

Défini dans: features/map/MapGeometryUtils.ts:840

Point d'ancrage pour une étiquette dans l'angle supérieur GAUCHE de la zone : le SOMMET le plus proche du coin haut-gauche de la bounding box (distance L1), c'est-à-dire le coin haut-gauche réel de la zone, quelle que soit la forme ou le rapport hauteur/largeur. Le léger retrait pour ne pas chevaucher le bord N'est PAS appliqué ici (il le serait en % du plan et grandirait avec le zoom) : il est délégué au rendu, exprimé relativement à la taille de l'étiquette. Unités = entrée (% du plan).

Paramètres ​

ParamètreTypeDescription
polyobject[] | undefinedSommets du polygone.

Retourne ​

object

Le coin haut-gauche de la zone.

NomTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:841
ynumberfeatures/map/MapGeometryUtils.ts:842

Documentation Technique