{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "01d7bb6f-c3e5-41f5-9fbf-c3b4b86078e9", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 68, "id": "16559438-c4c1-405d-ab4b-b250cb28505c", "metadata": { "tags": [] }, "outputs": [], "source": [ "xs = (2, 1)\n", "ys = (2, 4)\n", "m = (ys[1] - ys[0]) / (xs[1] - xs[0])\n", "c = ys[0] - xs[0] * m" ] }, { "cell_type": "code", "execution_count": 73, "id": "f9ca6a5e-c11e-4eba-b82e-5b2d90e608e5", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "333.434948822922" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(xs, ys)\n", "plt.plot(np.linspace(xs[0], xs[1]), c + np.linspace(xs[0], xs[1]) * m)\n", "\n", "plt.axis('equal')\n", "\n", "plt.xlim(0, 10)\n", "plt.ylim(0, 10)\n", "\n", "heading = np.degrees(np.arctan(1/m))\n", "if heading < 0:\n", " heading += 360\n", "heading" ] }, { "cell_type": "code", "execution_count": null, "id": "7fc00ea4-3465-4955-8474-f9e744359bfb", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }