Lançamos o earstrip, o triangulador de polígonos do nosso motor de mapas, como uma pequena biblioteca de código aberto sob a licença ISC, a mesma licença usada pelo earcut. Ele consiste em um único cabeçalho C++ e uma versão WebAssembly publicada no npm, que aceita os mesmos argumentos do earcut. Em C++, ele roda 14% mais rápido que o earcut.hpp, e no navegador roda de 1,4 a 2,1 vezes mais rápido que o earcut.js.
Uma GPU só consegue preencher triângulos, enquanto um mapa é composto majoritariamente de polígonos: edifícios, parques, estacionamentos e as faixas de grama entre os trilhos de bonde. Antes que qualquer polígono possa ser preenchido, seu contorno precisa ser cortado em triângulos. Nosso mapa offline da voivodia da Mazóvia, a região em torno de Varsóvia, tem 3.740.425 polígonos no nível de zoom 13. Em um núcleo de um M4 Pro, o triangulador de Delaunay restrito do nosso motor precisou de 2,93 segundos para processar todos eles.
Em outubro, nós o substituímos pelo recorte de orelhas. A triangulação de Delaunay evita triângulos finos e é útil para interpolação e simulação, mas um preenchimento plano não precisa dessa qualidade, e a maior parte do trabalho ia para formas simples. Quase metade dos polígonos da Mazóvia, 1,8 milhão, tem quatro vértices ou menos, mas o código de Delaunay gastava 419 ms construindo as triangulações deles do zero. O recorte de orelhas remove um canto por vez, e todo polígono simples com mais de três vértices tem pelo menos duas orelhas não sobrepostas, por isso sempre há outro corte a fazer.
Para documentar o trabalho, reconstruímos o recortador de orelhas com uma ideia por commit e medimos cada etapa nos mesmos 3,7 milhões de polígonos. A versão final processa o conjunto completo em 489 ms, que é o número do título.
Fonte: Hacker News · Resumido por HeadlinesBriefing