Tengo íconos outlined o area filled como estos que estoy tratando de calcular el ancho de su "stroke-width" en Javascript, dadas todas las posiciones x, y para cada uno de los vértices (marcados como puntos azules) y tangentes, ¿está ahí? ¿Alguna forma eficiente y precisa de calcular el "stroke-width" mínimo? no es el punto de cruce más pequeño en la punta del disparo del cohete, pero debe ser de 1.5px en el caso del ejemplo.
Lo intenté comparando primero cada line segment con cualquier otro line segment y descubrí si son parallel , y si son parallel (mismo ángulo), luego los almaceno en una array of all parallel lines , y luego recorro la matriz para encontrar la shortest distance entre el center point de cada línea a a la línea b . Pero esto lleva mucho tiempo si se realiza en cientos de vértices y el resultado no siempre es preciso, ya que la distancia entre dos segmentos de line segements paralelas en una forma arqueada es más corta de lo que realmente es, y no hay garantía si alguno de los parallel line pairs están en perfecto 90 °
Otro enfoque podría ser volcarlo en el lienzo y contar los píxeles rellenos. Luego cambie para llenar distinto de cero, vuelva a volcarlo en el lienzo y cuente los píxeles rellenos. Resta uno del otro y esto te da la cantidad de píxeles en el área "trazada". Divida eso por la longitud total de sus rutas de dibujo (y ajústelo para las unidades de viewBox). No será exacto, pero ciertamente parece mucho más rápido.