{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "LXlSRBeHtETj"
      },
      "outputs": [],
      "source": [
        "# Ejercicio Extra 3.1.4.\n",
        "\n",
        "import math\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "def poligono_regular(n, radio):\n",
        "    \"\"\"\n",
        "    Genera y muestra un polígono regular de n lados con radio circunscrito dado.\n",
        "\n",
        "    Parámetros:\n",
        "    n (int): Número de lados del polígono.\n",
        "    radio (float): Radio circunscrito del polígono.\n",
        "    \"\"\"\n",
        "    if n < 3:\n",
        "        print(\"Un polígono debe tener al menos 3 lados.\")\n",
        "        return\n",
        "\n",
        "    # Calcular las coordenadas de los vértices\n",
        "    vertices_x = []\n",
        "    vertices_y = []\n",
        "    for i in range(n):\n",
        "        angulo = 2 * math.pi * i / n  # Ángulo en radianes\n",
        "        x = radio * math.cos(angulo)\n",
        "        y = radio * math.sin(angulo)\n",
        "        vertices_x.append(x)\n",
        "        vertices_y.append(y)\n",
        "\n",
        "    # Cerrar el polígono\n",
        "    vertices_x.append(vertices_x[0])\n",
        "    vertices_y.append(vertices_y[0])\n",
        "\n",
        "    # Dibujar el polígono\n",
        "    plt.figure(figsize=(5,5))\n",
        "    plt.plot(vertices_x, vertices_y, 'b-', linewidth=2)\n",
        "    plt.gca().set_aspect('equal', adjustable='box')\n",
        "    plt.grid(True)\n",
        "    plt.title(f\"Polígono regular de {n} lados, radio {radio}\")\n",
        "    plt.xlabel(\"X (mm)\")\n",
        "    plt.ylabel(\"Y (mm)\")\n",
        "    plt.show()\n",
        "\n",
        "# Ejemplo de uso\n",
        "lados = int(input(\"Introduce el número de lados del polígono: \"))\n",
        "radio = float(input(\"Introduce el radio circunscrito del polígono en mm: \"))\n",
        "poligono_regular(lados, radio)"
      ]
    }
  ]
}