{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "import stuff" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import logging\n", "import itertools\n", "import numpy as np\n", "\n", "import shapely.geometry\n", "\n", "import scipy.spatial\n", "import pandas\n", "\n", "import matplotlib\n", "import descartes\n", "import rtree\n", "logging.basicConfig()\n", "logger = logging.getLogger(\"person\")\n", "logger.setLevel(logging.INFO)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1430 }, { "cell_type": "code", "collapsed": false, "input": [ "# Number of persons\n", "N = 10\n", "WALLWIDTH = 0.1\n", "\n", "# initial position\n", "x = np.random.rand(N)\n", "y = np.random.rand(N)\n", "\n", "#intial speed\n", "u = np.random.rand(N) - 0.5\n", "v = np.random.rand(N) - 0.5\n", "\n", "# thresholds (things within this distance are annoying)\n", "threshold = np.random.rand(N) * 0.2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1431 }, { "cell_type": "code", "collapsed": false, "input": [ "# generate shapely objects\n", "geom = [shapely.geometry.Point(x_i,y_i) for x_i,y_i in zip(x,y)]\n", "# create a dataframe\n", "persons = pandas.DataFrame(data=dict(x=x, y=y, u=u, v=v, geom=geom, threshold=threshold))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1432 }, { "cell_type": "code", "collapsed": false, "input": [ "# create a wall\n", "shell = np.array([[0-WALLWIDTH,0-WALLWIDTH], [0-WALLWIDTH, 1+WALLWIDTH], [1+WALLWIDTH, 1+WALLWIDTH], [1+WALLWIDTH, 0-WALLWIDTH], [0-WALLWIDTH,0-WALLWIDTH]])\n", "hole = np.array([[0,0], [1,0],[1,1], [0,1], [0,0]]) # should be ccw \n", "obstructions = shapely.geometry.Polygon(shell=shell, \n", " holes=[hole])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1433 }, { "cell_type": "code", "collapsed": false, "input": [ "# plot the configuration\n", "fig, ax = plt.subplots()\n", "q = ax.quiver(*map(np.array, [persons['x'],persons['y'],persons['u'],persons['v']]))\n", "ax.plot(*obstructions.interiors[0].xy, linestyle='-')\n", "ax.add_patch(descartes.PolygonPatch(obstructions, alpha=0.3))\n", "ax.autoscale()\n", "#for i, row in persons.iterrows():\n", "# ax.annotate(str(i), (row['x'], row['y']), xytext=(row['x']+0.05, row['y']+0.05))\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nw7x585CUlGSXoK5K9DmgyPlFzg4wv9JEzy9Hkwt/37596NSpExYuXIjQ0FB8+eWXVut/++03HD16\nFHFxcYh/O1EqAAAGMElEQVSPj8fZs2eRn59vt8BERCRPkwv/xx9/RFBQEAAgKCgIGRkZVusfeOAB\nzJs3DxqNBgBQWVkJDw8PO0R1Tf369VM6gk1Ezi9ydoD5lSZ6fjkavFrmoUOHsGvXLqvH2rZti5Yt\nWwIAPD09YTKZrNa7ubnBy8sLkiRhy5Yt8Pf3h8FgsHNsIiJqqgb38AcMGIBVq1ZZ/a9ly5YoKSkB\nAJSWlkKv19d6Xnl5OdauXYuysjJMnDjRMcldhOhzQJHzi5wdYH6liZ5fjiYflpmSkoKSkhKMGDEC\nR48eRXZ2tlWpS5KEJUuWIDAwEC+++GKj20tPT8fNmzebnpyISMXatm2L4ODgJj2nyYVfXl6O9957\nDzdv3oROp8P06dPRpk0bpKSkwGAwoKqqCmvWrEG3bt0szxk9erTVMhEROZ/iJ14REZFz8MQrIiKV\nYOETEakEC5+ISCUaPA7fEaoP2SwqKoKnpyemTp2K1q1bW/1MSkoKjh8/DgDo1asXXn75ZWfHtFJV\nVYWEhATk5+dDp9MhKirK6tyCkydPIjk5GW5ubggLC2vyBY0crbH8RqMRu3fvhlarhZ+fHyZOnGg5\ncc4VNJa/2saNG+Ht7Y3IyEgFUtavsfwXLlzAli1bIEkSfHx8MG3aNLi7O/2jWa/G8v/www/46quv\nAABhYWEYNGiQUlHrdf78eWzbtg2xsbFWj7v6Z7daffmb/NmVnOybb76RvvjiC0mSJOno0aPS5s2b\nrdYXFBRIc+bMkaqqqiRJkqT58+dLP//8s7NjWklNTZXWr18vSZIk5ebmSsuXL7esq6iokP72t79J\nxcXFUkVFhTRnzhzp5s2bSkWtU0P5y8rKpGnTpkllZWWSJEnSu+++K6WlpSmSsz4N5a+2b98+ad68\nedKnn37q7HiNaih/VVWVNGvWLKmgoECSJEnav3+/dOnSJUVy1qex9z86Olq6ffu21WfBlXz99dfS\njBkzpHnz5lk9LsJnV5Lqzy/ns+v0kY6Il2bIycmxZO7atSvy8vIs6y5dugSDwQC9Xg93d3d0794d\n2dnZSkWtU0P5dTod4uPjLe+xK7zfNTWUv3r9hQsXEB4erkS8RjWU//Lly/D29kZKSgoWLFgAk8kE\nX19fpaLWqbH3393dHcXFxSgvL4fkggf9GQwGzJw5s1Y2ET67QP355Xx2HfrvxuZyaQaTyWR1RrFW\nq0VVVRW0Wi1KSkqs1rVs2bLW30lpDeXXaDSWkdru3btRVlaGnj17KhW1Tg3lv3HjBpKSkjBr1iwc\nO3ZMwZT1ayh/YWEhcnJyMGHCBLRr1w7Lli1D586dERgYqGBiaw3lB4DBgwdjzpw5aNGiBfr06VPn\n2fdK6tOnD65cuVLrcRE+u0D9+eV8dh1a+AMGDMCAAQOsHlu5cuU9XZrhgw8+gF6vd4lLM+j1ektm\n4M7ZxNW/7DXXlZSUoFWrVk7P2JCG8gN3ZrRbt25FQUEBZsyYoUTEBjWUPzU1FUVFRVi6dClu3ryJ\nsrIy/OEPf0BoaKhScWtpKL+3tzcMBoNlrz4oKAh5eXkuVfgN5b927Rr27NmD999/Hx4eHli3bh1S\nU1Px1FNPKRX3nonw2W1MUz+7Th/pdO/eHadPnwYAnD59Go888ojVekmSsGLFCnTq1AmTJk1yiS8P\nAwICLJlzc3Ph5+dnWefr64uCggLcvn0bZrMZ2dnZLndWcUP5AWDTpk0wm82YNWuWy41zgIbzR0RE\nYNmyZYiNjcWLL76Ifv36uVTZAw3nb9euHUpLS1FQUAAAyM7ORseOHRXJWZ+G8peXl0Or1cLd3R1a\nrRZt2rRBcXGxUlGbRITPbmOa+tl1+pm2Il6aQZIky1EKADBlyhTk5eWhtLQU4eHhSE9PR1JSEiRJ\nwoABA1zuKIWG8nfp0gVz5sxBjx49LD8fERGBkJAQpeLW0tj7X+3bb7/Fr7/+6nJH6TSWPzMzE9u2\nbYMkSQgICMC4ceOUDVxDY/lTUlJw9OhR6HQ6GAwGREVFwc3NTeHU1q5cuYK1a9ciLi4ORqNRmM9u\ntbryy/ns8tIKREQqwROviIhUgoVPRKQSLHwiIpVg4RMRqQQLn4hIJVj4REQqwcInIlIJFj4RkUr8\nP26NcW/A1VofAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 1434 }, { "cell_type": "code", "collapsed": false, "input": [ "# create an index for nearest neighbour search\n", "index = rtree.Rtree()\n", "for i, row in persons.iterrows():\n", " index.add(i, coordinates=(row['x'], row['y'], row['x'], row['y']), obj=row)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1435 }, { "cell_type": "code", "collapsed": false, "input": [ "# look for forces\n", "def update_forces(persons, obstructions, ax=None):\n", " index = rtree.Rtree()\n", " for i, row in persons.iterrows():\n", " index.add(i, coordinates=(row['x'], row['y'], row['x'], row['y']), obj=row)\n", " for i, person in persons.iterrows():\n", " geom = person['geom']\n", " seq = obstructions.interiors[0].nearest_points(geom)\n", " coords = np.array(seq)[:,:2]\n", " dist = shapely.geometry.Point(coords[0,0], coords[0,1]).distance(geom)\n", " u = 0\n", " v = 0\n", " if dist < person['threshold']:\n", " \n", " if ax:\n", " line = matplotlib.lines.Line2D(coords[:,0], coords[:,1])\n", " ax.add_artist(line)\n", " # move in oposite direction\n", " spd = 1/dist if dist > 0 else 0.1\n", " spd = min(spd, 0.1)\n", " spd = 0.1\n", " dx = (coords[1,0] - coords[0,0])\n", " dy = (coords[1,1] - coords[0,1])\n", " direction = np.arctan2(dy, dx)\n", " u += np.cos(direction)*spd\n", " v += np.sin(direction)*spd\n", " for nn in index.nearest(geom.bounds, objects=True, num_results=2):\n", " dist = nn.object['geom'].distance(geom)\n", " if dist < person['threshold']:\n", " if ax:\n", " line = matplotlib.lines.Line2D([person['x'], nn.object['x']], \n", " [person['y'], nn.object['y']], \n", " color='red' ,alpha=0.3) \n", " ax.add_artist(line)\n", " spd = 1/dist if dist > 0 else 0.1\n", " spd = min(spd, 0.1)\n", " spd = 0.1\n", " dx = (nn.object['x'] - geom.x)\n", " dy = (nn.object['y'] - geom.y)\n", " direction = np.arctan2(dy, dx)\n", " u += np.cos(direction)*spd\n", " v += np.sin(direction)*spd\n", " person['u'] = u\n", " person['v'] = v\n", " persons.ix[i] = person\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1436 }, { "cell_type": "code", "collapsed": false, "input": [ "def move(persons, dt=1.0):\n", " persons['x'] = persons['x'] + persons['u']*dt\n", " persons['y'] = persons['y'] + persons['v']*dt\n", " geom = [shapely.geometry.Point(x_i,y_i) for x_i,y_i in zip(persons['x'],persons['y'])]\n", " persons['geom'] = geom" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1437 }, { "cell_type": "code", "collapsed": false, "input": [ "update_forces(persons, obstructions, ax=ax)\n", "move(persons, dt=0.1)\n", " \n", "q.set_UVC(U=np.array(persons['u']), V=np.array(persons['v']))\n", "offsets = np.array(persons[['x','y']])\n", "q.set_offsets(offsets)\n", "ax.autoscale_view()\n", "fig" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "png": "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\ne0JCAoMGDcKyLNasWcPo0aPx+/1RzhYRkb7q8Qp/xowZPPLII13+S01NJRgMAtDa2orP5zvrfu3t\n7Tz++OO0tbUxf/782JT3E6bvAU3uN7kd1O800/vt6PPDMsvLywkGg3zzm99k8+bN7Nmzp8tQtyyL\nBx98kPHjx3PTTTf1er7Kykqampr6Xi4i4mJDhw4lLy+vT/fp88Bvb2/nV7/6FU1NTSQlJXHXXXcx\nZMgQysvL8fv9hMNhHnvsMbKzszvv8+1vf7vLsYiIxJ/jT7wSEZH40BOvRERcQgNfRMQlNPBFRFyi\nx8fhx8Lph2w2NzeTkpLC97//fQYPHtzl95SXl7NlyxYAJk6cyC233BLvzC7C4TAlJSXU19eTlJTE\nwoULuzy3YPv27ZSVlZGQkMD06dP7/IJGsdZbfyAQYMOGDXi9XkaOHMn8+fM7nzjXH/TWf9ozzzxD\nWloa8+bNc6Cye73179u3jzVr1mBZFunp6dx5550kJsb9S7NbvfW/9dZbvPDCCwBMnz6d2bNnO5Xa\nrb1797J27VoKCwu7vL2/f+2e1l1/n792rTj785//bP3pT3+yLMuyNm/ebP32t7/tcntDQ4O1bNky\nKxwOW5ZlWStXrrT2798f78wutm7daj355JOWZVlWbW2t9bOf/azztpMnT1o/+MEPrBMnTlgnT560\nli1bZjU1NTmVek499be1tVl33nmn1dbWZlmWZf3yl7+0tm3b5khnd3rqP23jxo3WihUrrN///vfx\nzutVT/3hcNhaunSp1dDQYFmWZb366qvWwYMHHensTm+f/8WLF1vHjx/v8rXQn7z44ovWkiVLrBUr\nVnR5uwlfu5bVfb+dr924r3RMfGmGmpqazuasrCzq6uo6bzt48CB+vx+fz0diYiLjxo1jz549TqWe\nU0/9SUlJFBcXd36O+8Pn+0w99Z++fd++fcyaNcuJvF711P/hhx+SlpZGeXk59913Hy0tLWRmZjqV\nek69ff4TExM5ceIE7e3tWP3wQX9+v5+77777rDYTvnah+347X7sx/b7xQnlphpaWli7PKPZ6vYTD\nYbxeL8FgsMttqampZ31MTuup3+PxdK7UNmzYQFtbGxMmTHAq9Zx66j9y5Ajr169n6dKl/P3vf3ew\nsns99R87doyamhpuv/12MjIyeOihh7j00ksZP368g8Vd9dQPMHfuXJYtW8aAAQOYMmXKOZ9976Qp\nU6Zw+PDhs95uwtcudN9v52s3pgN/xowZzJgxo8vbHn744fN6aYZf//rX+Hy+fvHSDD6fr7MZTj2b\n+PQf9jO+mzNRAAAB/klEQVRvCwaDDBw4MO6NPempH07taJ977jkaGhpYsmSJE4k96ql/69atNDc3\ns2rVKpqammhra+OSSy5h2rRpTuWepaf+tLQ0/H5/51V9bm4udXV1/Wrg99T/ySef8Morr/DUU0+R\nnJzME088wdatW7nqqqucyj1vJnzt9qavX7txX+mMGzeOnTt3ArBz504uv/zyLrdblsUvfvELRo0a\nxYIFC/rFPx6OHTu2s7m2tpaRI0d23paZmUlDQwPHjx8nFAqxZ8+efves4p76AZ599llCoRBLly7t\nd+sc6Ll/zpw5PPTQQxQWFnLTTTcxderUfjXsoef+jIwMWltbaWhoAGDPnj2MGDHCkc7u9NTf3t6O\n1+slMTERr9fLkCFDOHHihFOpfWLC125v+vq1G/dn2pr40gyWZXU+SgFg0aJF1NXV0drayqxZs6is\nrGT9+vVYlsWMGTP63aMUeuofM2YMy5YtIycnp/P3z5kzh/z8fKdyz9Lb5/+0N954g0OHDvW7R+n0\n1l9VVcXatWuxLIuxY8dy2223ORt8ht76y8vL2bx5M0lJSfj9fhYuXEhCQoLD1V0dPnyYxx9/nKKi\nIgKBgDFfu6edq9/O165eWkFExCX0xCsREZfQwBcRcQkNfBERl9DAFxFxCQ18ERGX0MAXEXEJDXwR\nEZfQwBcRcYn/DxuT3TtBpKiXAAAAAElFTkSuQmCC\n", "prompt_number": 1462, "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 1463, "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 1464, "text": [ "" ] } ], "prompt_number": 1464 }, { "cell_type": "code", "collapsed": false, "input": [ "np.cos(0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1439, "text": [ "1.0" ] } ], "prompt_number": 1439 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1439 } ], "metadata": {} } ] }