Los comentarios sugieren que el 5% no necesita ser alcanzado con una alta precisión. (Si lo hace, va a tomar un largo tiempo para amortiguar un millón de polígonos!) Por lo tanto, podemos invocar la Pizza Principio: linealmente reescalado 2D característica de un factor en una escala de su área por un^2.
He aquí cómo el razonamiento:
Cuando la forma no es muy complicado, sobre todo si es convexo, entonces el almacenamiento en búfer se produce un resultado comparable a la de reescalar la forma en torno a un punto central. (Es importante comprender, sin embargo, que el almacenamiento en búfer es que no siempre equivalente a un reescalado para cualquier otras formas además de los discos. Para algunas formas cóncavas, un "buffer" calculada a través de un reescalado en realidad podría no incluir partes de la forma original de la misma. Por lo tanto, en última instancia, nos va a calcular una auténtica buffer de la forma, pero sólo utiliza esta aproximar la equivalencia como una heurística para la estimación de cuánto de búfer.)
Si el búfer de la zona es de 5% mayor, la cantidad de reescalado por lo tanto debe ser sqrt(1 + 5/100), que está cerca de 1.025: es decir, debemos desea ampliar la forma del 2,5% en todas las direcciones.
Equivalentemente, si pensamos en la forma de como tener un "diámetro" (equivalente a una distancia típica de ancho), su radio de aumento de 2.5%. Eso equivale a un 2,5%/2 = 1.25% del diámetro.
Se puede estimar un diámetro típico de la forma del cuadro delimitador. El uso de, digamos, una media aritmética o la media geométrica de la caja del longitudes de los lados.
Esto sugiere el siguiente flujo de trabajo:
Obtener la forma del cuadro delimitador.
Deja e ser el promedio de las longitudes de los lados de la caja.
El búfer de la forma del 1,25% de los e; es decir, por (5/100)/4 * e.
Dado que los pasos 1 y 2 requieren muy poco de computación, este se presenta como uno de los más expeditos posibles soluciones. Como una verificación de la exactitud, puede (por supuesto) calcular las áreas de la búfer de formas y compararlos con el original áreas para ver cuán cerca se vienen para el 5% de aumento. A veces el búfer áreas serán incluso más de un 5% mayor, pero debe ser raros que son menos, y es imposible para ellos para ser apreciablemente menor.
Ejemplos
Como un cheque y la ilustración, vamos a considerar algunas formas simples.
Un disco de radio r tiene un cuadro delimitador con lados de longitud 2 r. Nuestra fórmula calcula e = (5/100)/4 * 2 * r = r / 40. El búfer de forma que, obviamente, es un concéntricos disco de radio r + r / 40 = 1.025 r. La zona antigua fue pi * r ^2, mientras que la nueva área es pi * (1.025 r)^2 = pi * 1.0506 * r ^2, que es de 5.06% mayor.
-
Un rectángulo con lados paralelos a los ejes de coordenadas de longitud r y s da e = (r + s)/2. El área adicional de almacenamiento en búfer el rectángulo viene de cuatro rectángulos de ancho (5/100)/4 e = e / 80 = (r + s)/160 bordeando los lados, además de cuatro de círculo de radio e / 80 en las esquinas. Descuidar el círculo, que será pequeño en comparación con otras áreas, el total de La nueva área es igual
2(r + s) * (r + s)/160 = (r^2 + s^2 + 2 r * s) / 80.
Cuando r y s no son demasiado diferentes, podemos calcular r^2 + s^2 es de aproximadamente 2 r * s. Esta aproximación simplifica el total de la nueva área para 4 r * s / 80 = 5% de la superficie original de r * s, como se pretendía.