{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from __future__ import division, print_function\n", "%matplotlib inline\n", "import sys\n", "sys.path.insert(0,'..') # allow us to format the book\n", "sys.path.insert(0,'../code') \n", "# use same formatting as rest of book so that the plots are\n", "# consistant with that look and feel.\n", "import book_format\n", "book_format.load_style(directory='..')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from random import uniform\n", "import matplotlib.pylab as pylab\n", "from matplotlib import animation\n", "from gif_animate import animate\n", "import matplotlib as mpl\n", "from math import pi\n", "\n", "def make_particle():\n", " return [uniform(0,100), uniform(0,100), uniform(0, 2), uniform(0, 2*pi)]\n", "\n", "\n", "def move(particles, t=1.):\n", " vx = particles[:, 2]*np.cos(particles[:, 3])\n", " vy = particles[:, 2]*np.sin(particles[:, 3])\n", " particles[:, 0] = (particles[:, 0] + vx*t) % 100\n", " particles[:, 1] = (particles[:, 1] + vy*t) % 100\n", " \n", "particles = np.asarray([make_particle() for i in range(1000)])\n", "\n", "def panimate(frame):\n", " move(particles, t=1.)\n", "\n", " plt.cla()\n", " plt.scatter(particles[:, 0], particles[:, 1])\n", " plt.xlim(0, 100)\n", " plt.ylim(0, 100)\n", " plt.gca().get_xaxis().set_ticks([])\n", " plt.gca().get_yaxis().set_ticks([])\n", "\n", " \n", "animate('13_particle_move.gif', panimate, \n", " frames=500, interval=50, figsize=(4, 4))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "" ] } ], "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }