Calcular el área de un polígono

A continuación una pequeña función que te ayudará a calcular el área de cualquier polígono a partir de la lista de puntos (Punto3D ya conocido). Al final se devuelve el área como un valor absoluto, el signo del resultado del área también puede servirte para conocer la dirección del polígono (horaria o trigonométrica).

        /// <summary>

        /// Obtiene el área de un polígono

        /// </summary>

        /// <param name=”Coords“>Lista de vértices del polígono</param>

        /// <returns>El área calculada del polígono</returns>

        public static double GetArea (List<Point3D> Coords)

        {

            double area = 0;

            int i = 0;

            if (Coords.Count > 0)

            {

                for (i = 0; i <= Coords.Count – 2; i++)

                {

                    area += Coords[i].x * Coords[i + 1].y – Coords[i].y * Coords[i + 1].x;

                }

                i = Coords.Count – 1;

                area += Coords[i].x * Coords[0].y – Coords[i].y * Coords[0].x;

            }

            return Math.Abs(area) / 2;

        }

Para ponerlo a prueba puedes escribir un método parecido al siguiente:

        private void areaDePolígonoToolStripMenuItem_Click(object sender, EventArgs e)

        {

            List<Point3D> pts = new List<Point3D>();

            pts.Add(new Point3D(10, 5, 0));

            pts.Add(new Point3D(10, 10, 0));

            pts.Add(new Point3D(12.5, 10, 0));

            pts.Add(new Point3D(15, 12.5, 0));

            pts.Add(new Point3D(17.5, 12.5, 0));

            pts.Add(new Point3D(17.5, 5, 0));

            pts.Add(new Point3D(15, 5, 0));

            pts.Add(new Point3D(15, 7.5, 0));

            pts.Add(new Point3D(12.5, 5, 0));

            MessageBox.Show(“Area obtenida: “ + MyClase.GetArea(pts).ToString(), “Text”,

                            MessageBoxButtons.OK, MessageBoxIcon.Information);

        }

Si todo va bien deberías recibir un resultado parecido al siguiente para estas coordenadas:

 

Ponlo a prueba, piensa en cómo mejorarlo y comparte con nosotros tus progresos.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información básica sobre protección de datos Ver más

  • Responsable: MTB Software de Ponent, SLU.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinet, SL que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad