Skip to content

Superviseur — Frontend v0.14.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.


distanceToSegment()

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

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

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:55

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:74

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:84

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:96

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:122

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.

NameTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:127
ynumberfeatures/map/MapGeometryUtils.ts:127

outlineContours()

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

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

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ètreTypeDefault valueDescription
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.


computeOutlineBounds()

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

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

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:240

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:245

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:250

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:274

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:293

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:301

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:318

É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:335

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:354

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:359

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:376

É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:391

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[][]


dropCollinear()

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

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

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:434

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:456

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.

NameTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:460
ynumberfeatures/map/MapGeometryUtils.ts:460

polygonCentroid()

ts
static polygonCentroid(poly): object;

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

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.

NameTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:474
ynumberfeatures/map/MapGeometryUtils.ts:474

signedDistToPolygon()

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

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

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, precision?): object;

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

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ètreTypeDefault valueDescription
polyobject[] | undefinedundefinedSommets du polygone.
precisionnumber0.3Seuil d'arrêt de la subdivision (même unité que les coordonnées).

Retourne

object

Le point d'ancrage.

NameTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:529
ynumberfeatures/map/MapGeometryUtils.ts:529

polygonBounds()

ts
private static polygonBounds(poly): OutlineBounds;

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

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:578

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:619

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.

NameTypeDéfini dans
xnumberfeatures/map/MapGeometryUtils.ts:620
ynumberfeatures/map/MapGeometryUtils.ts:621

Documentation Technique