{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Snippets and Programs from Chapter 6: Drawing Geometric Shapes and Fractals" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P151: Drawing a Circle\n", "'''\n", "Example of using matplotlib's Circle patch\n", "'''\n", "import matplotlib.pyplot as plt\n", "\n", "def create_circle():\n", " circle = plt.Circle((0, 0), radius = 0.5)\n", " return circle\n", "def show_shape(patch):\n", " ax = plt.gca()\n", " ax.add_patch(patch)\n", " plt.axis('scaled')\n", " plt.show()\n", "\n", "if __name__ == '__main__':\n", " c = create_circle()\n", " show_shape(c)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\noOKBcf70MAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P153: A growing circle\n", "'''\n", "The animation is not viiewable in notebook. See:\n", "http://jakevdp.github.io/blog/2013/05/12/embedding-matplotlib-animations/\n", "\n", "\n", "A growing circle\n", "'''\n", "\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation\n", "\n", "def create_circle():\n", " circle = plt.Circle((0, 0), 0.05)\n", " return circle\n", "\n", "def update_radius(i, circle):\n", " circle.radius = i*0.5\n", " return circle,\n", "\n", "def create_animation():\n", " fig = plt.gcf()\n", " ax = plt.axes(xlim=(-10, 10), ylim=(-10, 10))\n", " ax.set_aspect('equal')\n", " circle = create_circle()\n", " ax.add_patch(circle)\n", " anim = animation.FuncAnimation(fig, update_radius, fargs = (circle,), frames=30, interval=50)\n", " plt.title('Simple Circle Animation')\n", " plt.show()\n", "\n", "if __name__ == '__main__':\n", " create_animation()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter the initial velocity (m/s): 25\n", "Enter the angle of projection (degrees): 60\n" ] }, { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P156: Animating a projectile's projectory\n", "'''\n", "Animate the trajectory of an object in projectile motion\n", "'''\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation\n", "import math\n", "g = 9.8\n", "\n", "def get_intervals(u, theta):\n", " t_flight = 2*u*math.sin(theta)/g\n", " intervals = []\n", " start = 0\n", " interval = 0.005\n", " while start < t_flight:\n", " intervals.append(start)\n", " start = start + interval\n", " return intervals\n", "\n", "def update_position(i, circle, intervals, u, theta):\n", " t = intervals[i]\n", " x = u*math.cos(theta)*t\n", " y = u*math.sin(theta)*t - 0.5*g*t*t\n", " circle.center = x, y\n", " return circle,\n", "\n", "def create_animation(u, theta):\n", " intervals = get_intervals(u, theta)\n", " xmin = 0\n", " xmax = u*math.cos(theta)*intervals[-1]\n", " ymin = 0\n", " t_max = u*math.sin(theta)/g\n", " ymax = u*math.sin(theta)*t_max - 0.5*g*t_max**2\n", " fig = plt.gcf()\n", " ax = plt.axes(xlim=(xmin, xmax), ylim=(ymin, ymax))\n", " circle = plt.Circle((xmin, ymin), 1.0)\n", " ax.add_patch(circle)\n", " anim = animation.FuncAnimation(fig, update_position,\n", " fargs=(circle, intervals, u, theta),\n", " frames=len(intervals), interval=1,\n", " repeat=False)\n", " plt.title('Projectile Motion')\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.show()\n", "\n", "if __name__ == '__main__':\n", " try:\n", " u = float(input('Enter the initial velocity (m/s): '))\n", " theta = float(input('Enter the angle of projection (degrees): '))\n", " except ValueError:\n", " print('You entered an invalid input')\n", " else:\n", " theta = math.radians(theta)\n", " create_animation(u, theta)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter the number of iterations: 10000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P160: Random walk of a point in a plane\n", "'''\n", "Example of selecting a transformation from two equally probable\n", "transformations\n", "'''\n", "\n", "import matplotlib.pyplot as plt\n", "import random\n", "def transformation_1(p):\n", " x = p[0]\n", " y = p[1]\n", " return x + 1, y - 1\n", "\n", "def transformation_2(p):\n", " x = p[0]\n", " y = p[1]\n", " return x + 1, y + 1\n", "\n", "def transform(p):\n", " # list of transformation functions\n", " transformations = [transformation_1, transformation_2]\n", " # pick a random transformation function and call it\n", " t = random.choice(transformations)\n", " x, y = t(p)\n", " return x, y\n", "\n", "def build_trajectory(p, n):\n", " x = [p[0]]\n", " y = [p[1]]\n", " for i in range(n):\n", " p = transform(p)\n", " x.append(p[0])\n", " y.append(p[1])\n", " return x, y\n", "\n", "if __name__ == '__main__':\n", " # initial point\n", " p = (1, 1)\n", " n = int(input('Enter the number of iterations: '))\n", " x, y = build_trajectory(p, n)\n", " # plot\n", " plt.plot(x, y)\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter the number of points in the Fern: 10000\n" ] }, { "data": { "image/png": "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\nOo/QzNsAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P165: Draw Barnsley Fern\n", "'''\n", "Draw Barnsley Fern\n", "'''\n", "import random\n", "import matplotlib.pyplot as plt\n", "\n", "def transformation_1(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0.85*x + 0.04*y\n", " y1 = -0.04*x + 0.85*y + 1.6\n", " return x1, y1\n", "\n", "def transformation_2(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0.2*x - 0.26*y\n", " y1 = 0.23*x + 0.22*y + 1.6\n", " return x1, y1\n", "\n", "def transformation_3(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = -0.15*x + 0.28*y\n", " y1 = 0.26*x + 0.24*y + 0.44\n", " return x1, y1\n", "\n", "def transformation_4(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0\n", " y1 = 0.16*y\n", " return x1, y1\n", "\n", "def get_index(probability):\n", " r = random.random()\n", " c_probability = 0\n", " sum_probability = []\n", " for p in probability:\n", " c_probability += p\n", " sum_probability.append(c_probability)\n", " for item, sp in enumerate(sum_probability):\n", " if r <= sp:\n", " return item\n", " return len(probability)-1\n", "\n", "def transform(p):\n", " # list of transformation functions\n", " transformations = [transformation_1, transformation_2,\n", " transformation_3, transformation_4]\n", " probability = [0.85, 0.07, 0.07, 0.01]\n", " # pick a random transformation function and call it\n", " tindex = get_index(probability)\n", " t = transformations[tindex]\n", " x, y = t(p)\n", " return x, y\n", "\n", "def draw_fern(n):\n", " # We start with (0, 0)\n", " x = [0]\n", " y = [0]\n", " x1, y1 = 0, 0\n", " for i in range(n):\n", " x1, y1 = transform((x1, y1))\n", " x.append(x1)\n", " y.append(y1)\n", " return x, y\n", "\n", "if __name__ == '__main__':\n", " n = int(input('Enter the number of points in the Fern: '))\n", " x, y = draw_fern(n)\n", " # Plot the points\n", " plt.plot(x, y, 'o')\n", " plt.title('Fern with {0} points'.format(n))\n", " plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#P174: Example of using the imshow() function\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.cm as cm\n", "import random\n", "\n", "def initialize_image(x_p, y_p): \n", " image = []\n", " for i in range(y_p):\n", " x_colors = []\n", " for j in range(x_p):\n", " x_colors.append(0)\n", " image.append(x_colors)\n", " return image\n", "\n", "def color_points():\n", " x_p = 20\n", " y_p = 20\n", " image = initialize_image(x_p, y_p)\n", " for i in range(y_p):\n", " for j in range(x_p):\n", " image[i][j] = random.randint(0, 10)\n", " plt.imshow(image, origin='lower', extent=(0, 5, 0, 5),\n", " cmap=cm.Greys_r, interpolation='nearest')\n", " plt.colorbar()\n", " plt.show()\n", " \n", "if __name__ == '__main__':\n", " color_points()" ] } ], "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 }