{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Poligonok\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from shapely.geometry import Point\n", "from shapely.geometry.polygon import Polygon\n", "import shapely\n", "import matplotlib.pyplot as plt\n", "import random\n", "import numpy as np\n", "\n", "w = 0.5\n", "h = 5\n", "f = 10\n", "polygon = Polygon([(-f, -h), (-f+w, -h), (-f+w, h-w), (f+w, h-w), (f+w, -h), (f+2*w, -h), (f+2*w, h), (-f, h)])\n", "x,y = polygon.exterior.xy\n", "plt.plot(x, y, \"k*--\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from shapely.geometry import Point\n", "from shapely.geometry.polygon import Polygon\n", "import matplotlib.pyplot as plt\n", "import random\n", "\n", "w = 1\n", "h = 10\n", "f = 4\n", "polygon = Polygon([(-f, -h), (-f+w, -h), (-f+w, h-w), (f+w, h-w), (f+w, -h), (f+2*w, -h), (f+2*w, h), (-f, h)])\n", "x,y = polygon.exterior.xy\n", "plt.plot(x, y, \"k--\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, y, \"k--\")\n", "for _ in range(50):\n", " point = Point(random.uniform(-4,4), random.uniform(-10,10))\n", " if polygon.contains(point):\n", " plt.plot(point.x, point.y, \"r*\")\n", " else:\n", " plt.plot(point.x, point.y, \"bo\")\n", "print(polygon.contains(point))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "rot = np.pi / 20\n", "t = np.array([[np.cos(rot), np.sin(rot)], [-np.sin(rot), np.cos(rot)]])\n", "a = np.dot(np.transpose([x,y]), t)\n", "polygon_r = Polygon(a)\n", "x_r,y_r = polygon_r.exterior.xy\n", "plt.plot(x_r, y_r, \"k--\")\n", "for _ in range(50):\n", " point = Point(random.uniform(-10,10), random.uniform(-10,10))\n", " if polygon_r.contains(point):\n", " plt.plot(point.x, point.y, \"r*\")\n", " else:\n", " plt.plot(point.x, point.y, \"bo\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# x, y, width, height, tolerance (margin width), rotation(deg!)\n", "def create_polygon(x, y, w, h, t, rot):\n", " polygon = Polygon([(-w/2-t/2, -h/2), (-w/2+t/2, -h/2), (-w/2+t/2, h/2-t), (w/2-t/2, h/2-t), (w/2-t/2, -h/2), (w/2+t/2, -h/2), (w/2+t/2, h/2), (-w/2-t/2, h/2)])\n", " polygon = shapely.affinity.rotate(polygon, rot)\n", " polygon = shapely.affinity.translate(polygon, x, y)\n", " return polygon\n", "\n", "polygon = create_polygon(8, 2, 5, 18, 1.5, -80)\n", "x,y = polygon.exterior.xy\n", "plt.plot(x, y, \"k--\")\n", "xy = np.loadtxt(\"data/scan07.csv\", delimiter=\",\")\n", "plt.axis('equal')\n", "plt.plot(xy[:,0], xy[:,1], \"b.\")\n", "for p in xy:\n", " point = Point(p[0], p[1])\n", " if polygon.contains(point):\n", " plt.plot(point.x, point.y, \"r*\")\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "New best fitted: 132\n", "New best fitted: 147\n", "New best fitted: 170\n", "New best fitted: 311\n", "New best fitted: 387\n", "Elapsed time: 0.9879753589630127\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from shapely.geometry import Point\n", "from shapely.geometry.polygon import Polygon\n", "import shapely\n", "import matplotlib.pyplot as plt\n", "import random\n", "import numpy as np\n", "import time\n", "\n", "class ParkingPoly:\n", " polygon = None\n", " # x, y, width, height, tolerance (margin width), rotation(deg!)\n", " def __init__(self, x, y, w, h, t, rot):\n", " self.polygon = Polygon([(-w/2-t/2, -h/2), (-w/2+t/2, -h/2), (-w/2+t/2, h/2-t), (w/2-t/2, h/2-t), (w/2-t/2, -h/2), (w/2+t/2, -h/2), (w/2+t/2, h/2), (-w/2-t/2, h/2)])\n", " self.polygon = shapely.affinity.rotate(self.polygon, rot)\n", " self.polygon = shapely.affinity.translate(self.polygon, x, y)\n", " def getCentroid(self):\n", " return self.polygon.centroid.coords[0]\n", " def getLines(self):\n", " # 2 lines, 4 points\n", " l = self.polygon.exterior.coords[1:5]\n", " l = np.asarray(l)\n", " return l\n", " def plotLines(self):\n", " lxy = self.getLines()\n", " plt.plot(lxy[:, 0], lxy[:, 1], \"yo-\", linewidth = 4)\n", " def plot(self, style = \"--\"):\n", " x,y = self.polygon.exterior.xy\n", " plt.plot(x, y, style)\n", " def pointsInside(self, xy):\n", " inside = 0\n", " for p in xy:\n", " point = Point(p[0], p[1])\n", " if self.polygon.contains(point):\n", " inside += 1\n", " return inside\n", "\n", "\n", "lscan = np.loadtxt(\"data/scan07.csv\", delimiter=\",\")\n", "best = 0\n", "start = time.time()\n", "for i in range(30):\n", " x = random.uniform(5,9) # x between 5m and 9m\n", " y = random.uniform(1,3)\n", " r = random.uniform(-90, 90) # rotation between 90 ang -90 deg\n", " rand_poly = ParkingPoly(x, y, 5, 18, 1.5, r)\n", " inside = rand_poly.pointsInside(lscan)\n", " if inside > best: \n", " print(\"New best fitted:\", inside)\n", " best = inside\n", " best_poly = rand_poly\n", " rand_poly.plot()\n", " if best > 700:\n", " break\n", "end = time.time()\n", "print(\"Elapsed time: \", end - start)\n", "best_poly.plotLines()\n", "best_poly.plot(\"k*--\")\n", "plt.axis(\"equal\")\n", "plt.plot(lscan[:,0], lscan[:,1], \"b*\")\n", "plt.grid()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }