HeadlinesBriefing HeadlinesBriefing.com

earstrip : triangulation de polygones plus rapide pour les

Hacker News •
×

Nous avons publié earstrip, le triangulateur de polygones de notre moteur de cartes, sous la forme d'une petite bibliothèque open source sous licence ISC, la même licence qu'earcut. Elle se compose d'un seul en-tête C++ et d'une version WebAssembly publiée sur npm, qui accepte les mêmes arguments qu'earcut. En C++, elle est 14 % plus rapide qu'earcut.hpp, et dans le navigateur elle est 1,4 à 2,1 fois plus rapide qu'earcut.js.

Un GPU ne peut remplir que des triangles, alors qu'une carte est constituée surtout de polygones : bâtiments, parcs, parkings et bandes d'herbe entre les voies de tramway. Avant de remplir un polygone, son contour doit être découpé en triangles. Notre carte hors ligne de la voïvodie de Mazovie, la région autour de Varsovie, compte 3 740 425 polygones au niveau de zoom 13. Sur un cœur d'un M4 Pro, le triangulateur de Delaunay contraint de notre moteur a mis 2,93 secondes pour tous les traiter.

En octobre, nous l'avons remplacé par la découpe d'oreilles. La triangulation de Delaunay évite les triangles allongés et sert à l'interpolation et à la simulation, mais un remplissage plat n'a pas besoin de cette qualité, et l'essentiel du travail portait sur des formes simples. Près de la moitié des polygones de Mazovie, soit 1,8 million, ont quatre sommets ou moins, pourtant le code de Delaunay passait 419 ms à construire leurs triangulations à partir de zéro. La découpe d'oreilles retire un coin à la fois, et tout polygone simple de plus de trois sommets possède au moins deux oreilles qui ne se chevauchent pas, il reste donc toujours une coupe à effectuer.

Pour documenter ce travail, nous avons reconstruit le découpeur d'oreilles en une idée par commit et mesuré chaque étape sur les mêmes 3,7 millions de polygones. La version finale traite l'ensemble des données en 489 ms, c'est le chiffre du titre.

Source: Hacker News · Résumé par HeadlinesBriefing