solución independiente del idioma:
DADO: un polígono SIEMPRE puede estar compuesto por n-2 triángulos que no se superponen (n = número de puntos O lados). 1 triángulo = polígono de 3 lados = 1 triángulo; 1 cuadrado = polígono de 4 lados = 2 triángulos; etc ad nauseam QED
por lo tanto, un polígono se puede reducir "cortando" triángulos y el área total será la suma de las áreas de estos triángulos. Pruébelo con un papel y unas tijeras, es mejor si puede visualizar el proceso antes de seguir.
Si toma 3 puntos consecutivos en una ruta de polígonos y crea un triángulo con estos puntos, tendrá uno y solo uno de los tres escenarios posibles:
- El triángulo resultante está completamente dentro del polígono original.
- El triángulo resultante está totalmente fuera del polígono original.
- El triángulo resultante está parcialmente contenido en el polígono original.
solo nos interesan los casos que caen en la primera opción (totalmente contenido).
cada vez que encontramos uno de estos, lo cortamos, calculamos su área (fácil, no explicaré la fórmula aquí) y hacemos un nuevo polígono con un lado menos (equivalente al polígono con este triángulo cortado). hasta que solo nos quede un triángulo.
cómo implementar esto programáticamente:
Cree una matriz de puntos (consecutivos) que representen la ruta ALREDEDOR del polígono. comience en el punto 0. ejecute la matriz formando triángulos (uno a la vez) desde los puntos x, x + 1 y x + 2. transforma cada triángulo de una forma a un área e interseca con el área creada a partir de un polígono. SI la intersección resultante es idéntica al triángulo original, entonces dicho triángulo está totalmente contenido en un polígono y se puede cortar. elimine x + 1 de la matriz y comience de nuevo desde x = 0. de lo contrario (si el triángulo está fuera [parcial o completamente] del polígono), muévase al siguiente punto x + 1 en la matriz.
Además, si está buscando integrarse con el mapeo y está comenzando desde geopuntos, debe convertir de geopuntos a puntos de pantalla PRIMERO. esto requiere decidir un modelo y una fórmula para la forma de la tierra (aunque tendemos a pensar en la tierra como una esfera, en realidad es un ovoide irregular (forma de huevo), con abolladuras). hay muchos modelos por ahí, para más información wiki. una cuestión importante es si considerará o no que el área es un plano o una curva. en general, las áreas "pequeñas", donde los puntos están separados hasta algunos kilómetros, no generarán un error significativo si se consideran planas y no convexas.