Área de Polígonos Irregulares
Introducción
Pensé en compartir contigo una técnica ingeniosa que una vez usé para encontrar el área general de cualquier polígono.
El polígono puede ser regular (todos los ángulos son iguales y todos los lados son iguales) o irregular.
Regular | Irregular |
El polígono de ejemplo
Usemos este polígono como ejemplo:
Coordenadas
El primer paso es convertir cada vértice (esquina) en una coordenada, como en una gráfica:
Área bajo un segmento de línea
Ahora, para cada segmento de línea, calcula el área hasta el eje x.
Entonces, ¿cómo calculamos cada área?
Promedia las dos alturas, luego multiplica por el ancho
Ejemplo: Para la forma del trapecio de arriba, tomamos las dos alturas (las coordenadas "y" 2.28 y 4.71) y calculamos la altura promedio:
(2.28+4.71)/2 = 3.495
Calcula el ancho (la diferencia entre las coordenadas "x" 2.66 y 0.72)
2.66-0.72 = 1.94
El área es ancho×altura:
1.94 × 3.495 = 6.7803
Suma todos
¡Ahora súmalos todos!
Pero el truco consiste en sumar cuando van hacia adelante (ancho
positivo) y restar cuando van hacia atrás (ancho negativo).
Si siempre vas en el sentido de las agujas del reloj alrededor del
polígono y siempre restas la primera coordenada "x" de la segunda, el
resultado funciona naturalmente, así:
De | A | |||||
---|---|---|---|---|---|---|
x | y | x | y | Altura Promedio |
Ancho (+/-) | Área (+/-) |
0.72 | 2.28 | 2.66 | 4.71 | 3.495 | 1.94 | 6.7803 |
2.66 | 4.71 | 5 | 3.5 | 4.105 | 2.34 | 9.6057 |
5 | 3.5 | 3.63 | 2.52 | 3.01 | -1.37 | -4.1237 |
3.63 | 2.52 | 4 | 1.6 | 2.06 | 0.37 | 0.7622 |
4 | 1.6 | 1.9 | 1 | 1.3 | -2.1 | -2.7300 |
1.9 | 1 | 0.72 | 2.28 | 1.64 | -1.18 | -1.9352 |
Total: | 8.3593 |
También puedes ir en la otra dirección. Si obtienes un área
negativa, hazla positiva.
Y se ve así:
¡Eso es todo! El área es 8.3593
Herramienta para el área de un polígono
¡Me alegra que hayas leído hasta aquí! Se te recompensa con un enlace a la Herramienta para Dibujar el Área de un Polígono que puede hacer todo esto por ti. También acepta la entrada manual de coordenadas.
Fórmulas
¡Juguemos con algunas fórmulas!
Comencemos con un triángulo simple, con coordenadas (x1, y1), (x2, y2), (x3, y3)
Multiplicando los anchos por las alturas promedio obtenemos:
Área = (x2−x1)(y1+y2)/2 + (x3−x2)(y2+y3)/2 + (x1−x3)(y3+y1)/2
¡Pero podemos reescribirla! Expandamos todo para poder hacer algunos ajustes:
2×Área = x2y1 + x2y2 − x1y1 − x1y2 + x3y2 + x3y3 − x2y2 − x2y3 + x1y3 + x1y1 − x3y3 − x3y1
Agrupemos términos similares:
2×Área = x2y1 + x2y2−x2y2 + x1y1−x1y1 − x1y2 + x3y2 + x3y3−x3y3 − x2y3 + x1y3 − x3y1
Ahora simplificamos:
2×Área = x2y1 − x1y2 + x3y2 − x2y3 + x1y3 − x3y1
Reorganizando los términos (y cambiando signos), obtenemos la siguiente fórmula:
−2×Área = x1y2 + x2y3 + x3y1 − x2y1 − x3y2 − x1y3
En General
En general (para un polígono simple de n lados), usando valores absolutos || tenemos:
Área = ½| (x2−x1)(y1+y2) + (x3−x2)(y2+y3) + ... + (x1−xn)(yn+y1) |
o en su versión de la fórmula anterior:
Área = ½| x1y2 + x2y3 + ... + xny1 − x2y1 − x3y2 − ... − x1yn |
Usando JavaScript, la línea esencial (que se suma en todos los puntos) es:
let a1 = (pt1.x - pt0.x) * (pt0.y + pt1.y); // para trapecio
let a1 = (pt0.x * pt1.y - pt0.y * pt1.x); // para fórmula del cordón
Calculé el área de un pentágono regular 1,000,000 de veces y ambos métodos tardaron aproximadamente 43ms. ¡Imagino que el navegador generó el mismo código subyacente en ambos casos!
¡Refuerza tu aprendizaje resolviendo los siguientes retos sobre este tema! (Nota: están en inglés).