Thème
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ètre | Type | Description |
|---|---|---|
p1 | { x: number; y: number; } | Premier point. |
p1.x | number | - |
p1.y | number | - |
p2 | { x: number; y: number; } | Deuxième point. |
p2.x | number | - |
p2.y | number | - |
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ètre | Type | Description |
|---|---|---|
poly | object[] | undefined | Sommets 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ètre | Type | Description |
|---|---|---|
p | { x: number; y: number; } | Le point P. |
p.x | number | - |
p.y | number | - |
a | { x: number; y: number; } | L'extrémité A du segment. |
a.x | number | - |
a.y | number | - |
b | { x: number; y: number; } | L'extrémité B du segment. |
b.x | number | - |
b.y | number | - |
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ètre | Type | Description |
|---|---|---|
pt | { x: number; y: number; } | Le point à tester. |
pt.x | number | - |
pt.y | number | - |
poly | object[] | 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ètre | Type | Description |
|---|---|---|
percent | number | Le pourcentage. |
width | number | La 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ètre | Type | Description |
|---|---|---|
percent | number | Le pourcentage. |
height | number | La 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ètre | Type | Description |
|---|---|---|
poly | object[] | undefined | Sommets du polygone. |
width | number | Largeur de référence. |
height | number | Hauteur 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ètre | Type | Description |
|---|---|---|
p | { x: number; y: number; } | Le point de départ. |
p.x | number | - |
p.y | number | - |
poly | object[] | Le polygone. |
width | number | Largeur pour la conversion en pixels. |
height | number | Hauteur pour la conversion en pixels. |
Retourne
object
Le point le plus proche en pixels.
| Nom | Type | Défini dans |
|---|---|---|
x | number | features/map/MapGeometryUtils.ts:146 |
y | number | features/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ètre | Type | Valeur par défaut | Description |
|---|---|---|---|
polygons | object[][] | undefined | Polygones pleins (sommets en pixels). |
points | object[] | undefined | Points isolés (pixels) traités comme des disques de rayon pointRadius. |
pointRadius | number | undefined | Rayon des disques associés aux points isolés (pixels). |
marginPx | number | undefined | Marge entre les formes et le contour (pixels). |
smoothingPx | number | 0 | Rayon 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ètre | Type |
|---|---|
poly | object[] |
tolerance | number |
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ètre | Type |
|---|---|
poly | object[] |
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ètre | Type |
|---|---|
path | object[] |
tolerance | number |
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ù unchemin 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ètre | Type |
|---|---|
poly | object[] |
radius | number |
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ètre | Type |
|---|---|
from | { x: number; y: number; } |
from.x | number |
from.y | number |
to | { x: number; y: number; } |
to.x | number |
to.y | number |
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ètre | Type |
|---|---|
polygons | object[][] |
points | object[] |
pointRadius | number |
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ètre | Type |
|---|---|
r | number |
c | number |
cols | number |
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ètre | Type |
|---|---|
r | number |
c | number |
rows | number |
cols | number |
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ètre | Type |
|---|---|
polygons | object[][] |
points | object[] |
pointRadius | number |
bounds | OutlineBounds |
cell | number |
rows | number |
cols | number |
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ètre | Type |
|---|---|
x | number |
y | number |
polygons | object[][] |
points | object[] |
r2 | number |
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ètre | Type |
|---|---|
rad | number |
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ètre | Type |
|---|---|
src | Uint8Array |
rows | number |
cols | number |
rad | number |
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ètre | Type |
|---|---|
src | Uint8Array |
rows | number |
cols | number |
rad | number |
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ètre | Type |
|---|---|
src | Uint8Array |
r | number |
c | number |
o | number[] |
rows | number |
cols | number |
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ètre | Type |
|---|---|
filled | Uint8Array |
rows | number |
cols | number |
r | number |
c | number |
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ètre | Type |
|---|---|
filled | Uint8Array |
rows | number |
cols | number |
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ètre | Type |
|---|---|
filled | Uint8Array |
rows | number |
cols | number |
r | number |
c | number |
edges | Map<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ètre | Type |
|---|---|
edges | Map<string, [number, number]> |
minX | number |
minY | number |
cell | number |
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ètre | Type |
|---|---|
points | object[] |
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ètre | Type |
|---|---|
poly | object[] |
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ètre | Type |
|---|---|
poly | object[] |
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ètre | Type | Description |
|---|---|---|
p | { x: number; y: number; } | Le point P. |
p.x | number | - |
p.y | number | - |
a | { x: number; y: number; } | L'extrémité A du segment. |
a.x | number | - |
a.y | number | - |
b | { x: number; y: number; } | L'extrémité B du segment. |
b.x | number | - |
b.y | number | - |
Retourne
object
Le point le plus proche sur le segment AB.
| Nom | Type | Défini dans |
|---|---|---|
x | number | features/map/MapGeometryUtils.ts:668 |
y | number | features/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ètre | Type | Description |
|---|---|---|
poly | object[] | Sommets du polygone. |
Retourne
object
Le centroïde, dans la même unité que l'entrée.
| Nom | Type | Défini dans |
|---|---|---|
x | number | features/map/MapGeometryUtils.ts:682 |
y | number | features/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ètre | Type |
|---|---|
pt | { x: number; y: number; } |
pt.x | number |
pt.y | number |
poly | object[] |
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ètre | Type | Valeur par défaut | Description |
|---|---|---|---|
poly | object[] | undefined | undefined | Sommets du polygone. |
planW | number | 100 | - |
planH | number | 100 | - |
precision? | number | undefined | Seuil d'arrêt de la subdivision (même unité que les coordonnées). |
Retourne
object
Le point d'ancrage.
| Nom | Type | Défini dans |
|---|---|---|
x | number | features/map/MapGeometryUtils.ts:739 |
y | number | features/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ètre | Type |
|---|---|
poly | object[] |
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ètre | Type |
|---|---|
queue | LabelCell[] |
initialBest | LabelCell |
precision | number |
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ètre | Type | Description |
|---|---|---|
poly | object[] | undefined | Sommets du polygone. |
Retourne
object
Le coin haut-gauche de la zone.
| Nom | Type | Défini dans |
|---|---|---|
x | number | features/map/MapGeometryUtils.ts:841 |
y | number | features/map/MapGeometryUtils.ts:842 |