{
  "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": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 627
        },
        "id": "a8WPzM_m6HjF",
        "outputId": "ecb705d6-e07d-4eaf-8727-4f86b2381de7"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Collecting ezdxf\n",
            "  Downloading ezdxf-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.8 kB)\n",
            "Requirement already satisfied: pyparsing>=2.0.1 in /usr/local/lib/python3.12/dist-packages (from ezdxf) (3.2.3)\n",
            "Requirement already satisfied: typing_extensions>=4.6.0 in /usr/local/lib/python3.12/dist-packages (from ezdxf) (4.15.0)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.12/dist-packages (from ezdxf) (2.0.2)\n",
            "Requirement already satisfied: fonttools in /usr/local/lib/python3.12/dist-packages (from ezdxf) (4.59.1)\n",
            "Downloading ezdxf-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB)\n",
            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.8/5.8 MB\u001b[0m \u001b[31m31.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hInstalling collected packages: ezdxf\n",
            "Successfully installed ezdxf-1.4.2\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "# Ejercicio Propuesto 2.1.2.3.\n",
        "\n",
        "!pip install ezdxf\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import ezdxf\n",
        "\n",
        "# Parámetros de la hipérbola\n",
        "a = 60   # semieje real\n",
        "b = 30   # semieje imaginario\n",
        "\n",
        "# Rango de valores para el parámetro\n",
        "theta = np.linspace(-2, 2, 400)\n",
        "\n",
        "# Ecuaciones paramétricas de la hipérbola (rama derecha)\n",
        "x1 = a * np.cosh(theta)\n",
        "y1 = b * np.sinh(theta)\n",
        "\n",
        "# Ecuaciones paramétricas de la hipérbola (rama izquierda)\n",
        "x2 = -a * np.cosh(theta)\n",
        "y2 = b * np.sinh(theta)\n",
        "\n",
        "# Cálculo de focos\n",
        "d = np.sqrt(a**2 + b**2)\n",
        "f1 = (d, 0)\n",
        "f2 = (-d, 0)\n",
        "\n",
        "# Rotación y traslación\n",
        "phi = np.radians(30)  # ángulo de rotación (30°)\n",
        "Tx, Ty = 20, 40       # traslación\n",
        "\n",
        "R = np.array([[np.cos(phi), -np.sin(phi)],\n",
        "              [np.sin(phi),  np.cos(phi)]])\n",
        "\n",
        "# Aplicar transformación a los puntos de la hipérbola\n",
        "coords1 = np.dot(R, np.vstack((x1, y1))) + np.array([[Tx], [Ty]])\n",
        "coords2 = np.dot(R, np.vstack((x2, y2))) + np.array([[Tx], [Ty]])\n",
        "\n",
        "# Transformar focos\n",
        "f1_rot = np.dot(R, np.array([[f1[0]], [f1[1]]])) + np.array([[Tx], [Ty]])\n",
        "f2_rot = np.dot(R, np.array([[f2[0]], [f2[1]]])) + np.array([[Tx], [Ty]])\n",
        "\n",
        "# Graficar\n",
        "fig, ax = plt.subplots()\n",
        "ax.plot(coords1[0], coords1[1], 'b', label='Rama derecha')\n",
        "ax.plot(coords2[0], coords2[1], 'r', label='Rama izquierda')\n",
        "ax.scatter(f1_rot[0], f1_rot[1], color='k', marker='x', label='Foco F1')\n",
        "ax.scatter(f2_rot[0], f2_rot[1], color='k', marker='x', label='Foco F2')\n",
        "\n",
        "ax.set_title(\"Hipérbola con rotación y traslación\")\n",
        "ax.axhline(0, color='gray', lw=0.5)\n",
        "ax.axvline(0, color='gray', lw=0.5)\n",
        "ax.set_aspect('equal')\n",
        "ax.legend()\n",
        "plt.grid(True)\n",
        "plt.show()\n",
        "\n",
        "# Exportar a DXF\n",
        "doc = ezdxf.new()\n",
        "modelspace = doc.modelspace()\n",
        "\n",
        "# Dibujar ramas de la hipérbola en DXF\n",
        "for i in range(len(coords1[0]) - 1):\n",
        "    modelspace.add_line((coords1[0][i], coords1[1][i]), (coords1[0][i+1], coords1[1][i+1]))\n",
        "    modelspace.add_line((coords2[0][i], coords2[1][i]), (coords2[0][i+1], coords2[1][i+1]))\n",
        "\n",
        "# Dibujar focos\n",
        "modelspace.add_point((f1_rot[0][0], f1_rot[1][0]))\n",
        "modelspace.add_point((f2_rot[0][0], f2_rot[1][0]))\n",
        "\n",
        "# Guardar archivo DXF\n",
        "doc.saveas(\"hiperbola.dxf\")"
      ]
    }
  ]
}