From 4cf4ced20b92a698abc97150ffad3f249b6bc5ee Mon Sep 17 00:00:00 2001 From: Sam Moore Date: Wed, 15 Jan 2014 20:29:12 +0800 Subject: [PATCH] Add ipython notebook messing with fractal sets - Stierpinski Gasket - Koch Snowflake (O(n^4)-ish !) Reading Goldman's paper and hoping it will enlighten me. --- .gitignore | 1 + ipython_notebooks/fractals_basic.ipynb | 318 +++++++++++++++++++++++++ references/refs.bib | 13 + 3 files changed, 332 insertions(+) create mode 100644 ipython_notebooks/fractals_basic.ipynb diff --git a/.gitignore b/.gitignore index 0e36bc1..877fa0d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ *.test nogit/* references/*.pdf +ipython_notebooks/.ipynb_checkpoints diff --git a/ipython_notebooks/fractals_basic.ipynb b/ipython_notebooks/fractals_basic.ipynb new file mode 100644 index 0000000..a921ad4 --- /dev/null +++ b/ipython_notebooks/fractals_basic.ipynb @@ -0,0 +1,318 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Basic Fractals Stuff" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "Main reference:\n", + "The Fractal Nature of Bezier Curves, Ron Goldman, Year?\n", + "\n", + "Also, wikipedia." + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Definitions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fractals are *attractors* Fixed points of *iterated function systems*. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An iterated function system: $W = \\left\\{w_1, ... w_n\\right\\}$ (collection of *maps* w_i)" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Stierpinski Triangle Generation" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import random" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 192 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def stierpinski(n, x0 = (0,0)):\n", + " \"\"\" Generates the Stierpinski Triangles using Iterated Function System \"\"\"\n", + " # Define the maps in the iterated function system W\n", + " W = [lambda p : (0.5*p[0], 0.5*p[1])] # scale\n", + " W += [lambda p : (0.5*p[0]+0.25, 0.5*p[1] + 0.25*sqrt(3))] # scale & shift up&right\n", + " W += [lambda p : (0.5*p[0]+0.5, 0.5*p[1])] # scale & shift right\n", + " x = [x0]\n", + " # Repeatedly randomly select one of the maps in W\n", + " # As the number of iterations approaches infinity this becomes equivelant to the definition\n", + " # (I think. I mean, it seems to work)\n", + " for i in xrange(n):\n", + " x.append(random.choice(W)(x[i]))\n", + " return x\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 193 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "points = stierpinski(10000, (0.5, 0.5))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 194 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Silly matplotlib needs x and y as seperate lists\n", + "x = [p[0] for p in points]\n", + "y = [p[1] for p in points]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 195 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "scatter(x, y, marker=',', s = 1e-3)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 196, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nrZa9e/eiUqmYN28epqamdHR0sH79es6cOcOpU6fIy8ujsrKSadOmER0dTVZW1k1/yklISODzzz8n\nKiqKgQMH8sILL9DW1sann35KSUkJGRkZXLp0iebmZjw8PNi1axfvvfce//znP2+qXuHeoL+ilw+8\nXblypThz9x5y6NAh3N3daWxsJD4+nvLycuLj46mvr6e+vp64uDiGDRuGt7c3W7duxdLSkuHDh5Od\nnU1TUxNBQUE3VO/x48c5fPgwjo6OlJSUoNVq8fX1paioiEOHDiGVSklOTtalb/D19cXKyor9+/cT\nFBSky3j5vwwMDH71fGmtVotCoeCrr75CX1+fffv28cgjj2BgYEBKSgparZby8nKsrKyorKzk8OHD\nWFpa4uTkhLm5OWZmZpiamv7hvjY1NfHTTz/pPrWkpaVRXl5OYmIiNjY2uLq6cvToUSorK5FKpbqJ\nbGNjY2pra3F3d//dsw6EO9/NxE6xgUu4Zaqrq4mKiqJ///74+PhQW1uLjY0NEomEkpISHB0dcXFx\nIS8vD2NjY1pbW/H29sbQ0JANGzbQ0tLC6NGjmTZt2h+qt6GhgTfeeIMxY8agp6fH8OHD8fT0BKCg\noACtVouVlZUuxUNQUBAWFhYYGRmxdetWpFIpEydOJDg4+A/V+/XXX2NpaYlKpcLNzQ0rKytGjx5N\nQ0MDjY2NaLVa2tracHNzo6WlhdTUVCZPnkxZWRl1dXWUlZXx8MMPY25uft11Xv2Ecfr0ad5//31K\nSkqorKzUvYdSqWTIkCH8+OOPSCQSFi9eTGlpKRKJBAsLC7Zt20ZOTg7/+Mc/8PLy+kP9Fe4sYueu\n0OuUSiVnzpyhoaGBQ4cOMX78+OveNarRaFi2bBkqlYr4+Hg2bdp03ekV6urqiImJ4ezZsxgZGbFo\n0SIGDhx4XWW1Wi1RUVGUl5eTkJDAu++++7snYV1VUlLCl19+SVVVFb6+vqxateq6ysGVjJwJCQkY\nGhoybtw4/P39f/VTxf9au3YtSqWSjIwMXnrpJYYNG3bd9e7du5fk5GScnZ0JDQ29pauphNtP7NwV\net327dspKSkhNzcXKysrIiIirislslarpbKyEjMzM6ZPn87bb79Nfn7+ddWZm5vLK6+8wv79+1m6\ndCmtra2Eh4df93+Gzs5O9PT0KC8vZ8iQIRw6dOi62qxQKFixYgUSiQQXFxdMTEyu+5zg+vp6mpqa\nKC0tJTExkZycHI4dO3ZdZQGkUimzZ8+msbGRHTt2UFlZeV3lqqurWbduHcOHD8fLy+u62yvcm0Tg\nF25aeno6bW1tNDY28uqrr2JiYoKPjw8///zz7wbSTZs2MWPGDPr378+0adM4ePAgBQUFv3uoyNVN\nWmq1mv79++Pm5oajoyPW1ta/u2FJo9Fw5MgRLly4QEBAAB988AFpaWmcPHmSuLi46+rzggULWLZs\nGcuXL2fw4MHU1NT85iQxXDlYfuPGjRQUFLBq1So++eQT7rvvPhISEqivr//dOhMSEhg8eDDt7e2s\nXbuWWbNmsXHjxt9dIdTa2sqWLVt0/xaurq74+/tz+vRpcWRjHyUCv3BTCgoK2L59Ow0NDVRXV/Pp\np59iY2PDkCFDiIiI+M0AfvbsWdauXYtarebnn3/m+PHjPPvss2RkZHDy5MnfPHO3o6ODgIAA1q1b\nR1dXFxs2bGDy5Mm0trbywQcf/GbwP3fuHKdOnaK6uprz58+TnZ3Na6+9RnBwMMeOHaOmpuZXy9bX\n13P+/Hl8fX3JzMxk7dq1lJeX09LSwuXLl39zJ/J//vMfoqOjsbW1JSMjg/T0dMrKyqitrWXDhg2/\nWg6uDC0lJSXR2dmJoaEhlpaWeHt74+joyNq1a3+zbEtLC05OTjz99NPY2NgQFRXFtm3bSEpKYtu2\nbdf9CUu4d4gxfuGGyeVyFi9ezIsvvsjw4cO5cOEC1dXV+Pr60t7eTkNDA9bW1gwePBgHB4duZSsr\nK/n888+pr6/n8ccfZ+DAgTQ3N2NmZsbmzZsxMjKitbWVTz/9FH19/Wvq7uzspKKiQhdEVSoVvr6+\n5Ofnc/r0aZqbm3n33XevOa+3qqqKpUuX4uTkxMMPP4ypqSljx45FX1+fgoICtmzZgqOjI3PnzsXe\n3r5b2fz8fD777DPmzZvH6NGjycvLQyqV0tjYiEKhID8/Hz09PV544YVr2ltfX6/75bJkyRLKy8sx\nMTFBX1+fixcvEh0dTXp6OhEREVhbW3crm5qayocffsj06dOZOnWqLj0zXJnjaGtrIzk5mZkzZ14z\nVxAeHk5LSwsLFy7E1NQUPT09EhISOHPmDE8++SRr1qzB2NhYnNd7FxJj/MJt19nZSWFhIaNHjyYx\nMZHs7GwmTpzIvHnzCA0NJSgoCKlUSkpKCv/85z+7PQmr1Wqqq6uxt7enrKxMl6N/xIgRBAUF8fjj\nj5OXl4eTkxMHDhzoVm9dXR179+6luLiY/Px88vLyGDt2LGFhYXh6epKfn09NTQ0SiYTa2tpuwy9y\nuZx//OMfNDU1IZfLGThwIPfff7/uF8vVFAtqtfqabJoNDQ1cvHgRd3d3amtrUSgUDB48mMDAQEaP\nHo2VlRVtbW00NTWRkZFxzf0qLS3Fz88PrVaLoaEhfn5+uLm54ezsjLOzMx4eHigUCv7zn/9cU7a8\nvBwXFxdsbW27BX2tVktSUhLl5eWcOXPmFzfBqVQqTExMyM7O1i1lDQ0N5dVXXyUhIYHg4GD09PQ4\nePDg9fyzC/cIEfiFG3Lp0iUuXbqEnZ0ddXV11NfXdxuaef/994mLi0NPT4+cnJxu6ZB37dpFYmIi\ny5cvZ8mSJZSWluo2b13No9PY2EhUVBTx8fH8/PPPurJFRUW607e++uqrbmPcV3etmpqaYmxszDvv\nvMOXX34JXAmSCQkJKBQK/Pz8UCgUnDx5EqVSqXvvb775BrlczsSJE8nKyup2uPm5c+dob2/nvffe\nY/To0d12IgPY2trypz/9CX9/f44cOaJbO19bW8vq1atpbW1l6tSp1zyV5+Xl6T6ZPPPMM7i5uZGZ\nmXnNe189mnH16tW6X2bt7e0kJydz6tQpQkJCrlnNtGbNGgYNGsTly5dZtWoVERERutdKSkpQKpW4\nurri6emJTCbrsSRywp1H7OEW/rCKigrq6urQ19dn2rRpODk5sWnTJuzs7BgwYACZmZl0dnbSr18/\n5s2bR0NDA6amptTU1JCamkpmZiYBAQHI5XJyc3Npa2tjx44dzJ8/HwMDA0JCQjh8+DANDQ1kZmay\nZ88eJkyYQE5ODhEREYSFhTFp0iRGjhzJnj172L9/PzNmzCAyMpKZM2cilUopKyvjwIEDBAQEAHDq\n1CkiIiIYOXIkM2fOZPv27Rw9ehSpVMojjzzC0aNHue+++3jyyScxMzPD0dGR8PBwxo8fT1FRER0d\nHdTU1FBdXU1eXh4ZGRlUVFQwYsQIWltbWb16NYsXL9ZNOjc3N2NgYIBcLqekpISamhr+9a9/sX//\nfj766CMUCgWbN28mOjqa1157DTc3N/T09Pjhhx90E9V5eXkcOnSIiRMnMmnSJLZu3UpcXBwymYyZ\nM2fqUlu//fbbnDx5kqNHjxISEoKVlRUqlYqTJ0/S1tbG3/72N3766ScKCgooLS0lJSWFpKQkXFxc\neOCBB3B2diYxMZGMjAysra1vafI64c4kxviFP0Qmk3H06FFqamowMTHBy8sLmUxGfX09GRkZzJ07\nl5KSEpKTk+no6MDJyQlTU1NGjRrFxYsXaWxsxNraGnd3d4YPH85XX32lC7RDhgzB2NiYjo4OCgsL\nKSgowMDAgEcffZSwsDBmzpyJpaUl7777LoWFhRgbG+s+GQQFBZGTk8OkSZOQSqXIZDL69+9Pfn4+\nnZ2dumGfAwcOMHv2bKZOncq5c+dQKpXMmDGD6OhoHnzwQS5fvkxAQABVVVWsXbtWd8avnZ0dH330\nEYMHD8bY2BiJRML8+fM5fvw4ra2tGBgY4OXlxe7du3FwcKC+vp7U1FS8vLwYPXo0+vr63HfffZw8\neZK6ujr09PSYNm0aW7dupX///qxZs4YHHniAgIAAbGxssLCwoK6uDpVKxejRo6mpqSE2Nha5XE5t\nbS3+/v6kp6fTr18/nJyckMlkvPTSS7pdvJmZmQwcOJCOjg5sbW3Jz88nLCwMlUrF+PHjOXz4MAqF\nAgMDA2xtbVGr1aSlpTFgwACee+653v4xE66D2MAl3BadnZ189913tLS0EBISgkKh0KVYaG9vp66u\njv79+5OYmEh7eztmZmYMGzaM6upqfHx8dE+bPj4+aLVaHnzwQaqqqkhISMDT0xNLS0uMjIx0wfrq\nypX6+noCAgLYvHkzPj4+TJ06lfz8fPLz83F2dsbU1JSqqip8fHxQq9WUlJSgVquZOHEi2dnZlJeX\nY2lpiY+PD5mZmYwdO5aioiJSU1P5v//7P/T19XF1dQWujKfr6emhVCqpqKggJyeHwYMH4+3tTUFB\nAXp6eqhUKoqKipgzZw6pqakYGhoil8txcXGhsbGRrq4uqqqqiIqKws3NjdmzZ2NiYoJSqUSj0VBf\nX4+NjQ2WlpacOHECf39/Ll68yMCBA9FoNHR2dmJgYIC7uztmZmZotVpkMhmWlpbI5XKMjY1RqVRc\nvnyZwMBArKyssLa2xsXFha6uLhQKBadPn8bT0xMfHx9aW1tpbW2lqakJqVTKoEGDSE9Pp7a2FhcX\nF9ra2lAqlSiVSt2xmEZGRr35oyZcBxH4hdti9+7dHDt2DD09PUaPHs2CBQt6u0nCLfTiiy9y3333\n0dHRwbRp027L+cTCjeu1VT3R0dEEBgbi7+/PJ5988qvXJSUlYWBgwN69e2+mOqEXqVQqUlNTcXd3\np7OzE5VKJdZ/30OuZvL08vKitraWlStX9naThB50w4FfrVazdOlSXZrZ7du3/+JmHbVazZtvvsnU\nqVPFk/1dSqlUUl5ezltvvcX8+fNZtmwZnZ2dVFZW/u5uVeHOp1AokEqlTJ06lREjRmBoaMioUaO4\ndOlSbzdN6CE3HPgTExPx8/PTZVd88skniYyMvOa6r7/+mtmzZ1+zgUe4OyiVSoqLi8nJyeH7779n\nwYIFREdHM3DgQL788ku++eab3m6icBNyc3PZvn07ly5doqioSDcfYGhoSGpqqnhYu0fd8HJOmUyG\nh4eH7mt3d3cSEhKuuSYyMpITJ06QlJT0qxkI/zundFhYGGFhYTfaLOEWu3pk4NChQxk6dCihoaGY\nm5vj6+vL0KFDGTJkCG1tbWIJ4F2ora2N999/H6lUymuvvcbAgQPx8vLi9ddfR6VSUVhYSHJyMj4+\nPtfsYhZuv9jY2G57S27GDQf+60kju2zZMj7++GPdJMSvPT2Ig1juTAkJCbpx/La2Njw9PbvtHH3m\nmWeQyWRcunSJ/v37i+Bwlzl//jxNTU14enpiZWWlO2nMycmJuLg4YmJiGDt2LKmpqTz//PPXnTpa\n6Bn/+1B8M/MwNxz43dzcumX2Kysrw93dvds1Fy5c4MknnwSubLU/fPgwhoaGPProozdarXCbtLW1\nYWVlRWlpKdOnT0ej0bBlyxaeeeYZ4ErumaunS23atImRI0fy1FNP9XKrhet1dV/Df/7zHywtLblw\n4YIu8Dc3N+t2WoeHh9PZ2cnp06fZtGnTL+ZNEu4+NzzGP2LECPLz8ykuLqarq4udO3deE9ALCwsp\nKiqiqKiI2bNns3btWhH07wIajYZdu3bx888/4+joSHBwMLt37+bEiROcPHmStLQ0Vq5ciampKUFB\nQTz00EMcPny4W1oG4c6VnZ3Nhx9+SGlpKa2trSQmJpKWlqb7dHfq1CkaGxuZOHEimzZt0m2E+/bb\nb3u55cKtcsOB38DAgDVr1jBlyhQGDBjAE088QVBQEOvXr2f9+vW3so3CbZaRkcGmTZtobm5m3Lhx\nuhS+LS0trFmzhuLiYoKDgykoKCA2NhalUsmcOXNoa2vj7Nmzvd184TcoFApWr16NXC6nqalJt/O4\nsbGR2NhYjh8/jrGxMdOnTycpKYkNGzYwYMAAtFotZ8+epby8vLe7INwCYgOX0E1dXR3V1dXU1dVR\nUlLC1KlTycjIoLGxEV9fX92QXldXF+Xl5Tg4ONDU1MS0adOQyWTs2rWLBx988LqPThRurxMnThAd\nHc0DDzxAU1MThoaGODo6UllZSWBgICUlJejp6REcHExnZydSqZTOzk7Wrl1LWloa/v7+vPPOO+K8\n3juA2Lkr3BIajYYPP/yQ0NBQhg4dirGxMRYWFtdVtrS0lIMHD+oOGf/LX/5yTS58oXdlZWURGRmJ\nQqHgiSeeICAg4LrH7GNjY4mKiqK2tpaAgADeeustMdnby0Q+fuGWSEhIoLGxkfPnz5Oens7PP/9M\ne3v775ZTKBQcOHCAnJwc7O3tuXDhAq+//rouNbFwZ0hMTKSoqIj333+ftLQ0EhMTr6tcXl6eboVX\nUVERiYmJ5Obm9nBrhZ4kAr8AQExMDJmZmYSGhvLcc8/R0tKClZUVBQUFv1v2airi4OBg/vSnPzFj\nxgyqqqr47rvvbkPLhd/T0NDAxx9/TGlpKW+99Ratra2YmJhw/Phx0tLSfrf88ePHKSkpYePGjXz2\n2WeMHTuWpKSk29ByoaeIfPwCpaWlHDp0CKVSyaVLl8jIyCA3N5fQ0FDd2P5vbdBasWIFMpmM4uJi\npk2bRmpqKm5ubmKo5w5x5swZ4uLimDdvHvv27aO2thapVMrly5cpKytj3bp1vzhso9FoyM/PJzQ0\nlBkzZugO2rG2tsbW1pa0tDTdCV7C3UWM8fdxWq2WzZs3U1payqxZs0hOTsbe3p60tDQGDx5MRUUF\nx44d45tvvrkm7YZKpSIiIoILFy7g6OjIpEmT8PT0ZMeOHejr6yORSGhpaWH+/Plic1cvOXz4MAUF\nBfj4+GBoaEhhYSGurq50dHTwxBNPcPLkSSZMmPCLZU+dOkV8fDze3t7Mnj2b5ORkVCoVpaWlGBkZ\nUVhYSFtbG++++64I/r1ATO4KN0Sj0fDvf/+blpYWXF1deemll7q9npmZyb/+9S+MjIzo168fixcv\nRl9fH7VajaOjI9nZ2URERKBUKlm+fDlSqVRXtq6ujry8PGJjY9HX1+fNN9+83d0TgB07dlBRUYFa\nreaJJ57A09NT99qFCxd05xo/9dRTWFlZdXvtu+++4/777ycoKOiaVVqHDx+muLiY8PBwZsyYwRtv\nvHHb+iRcISZ3hRsSExPDpUuXSEtLo6WlBY1G021C9sMPP0QqlfLoo49y7tw5Tp06hUqlQq1Ws3nz\nZl588UXKysqYPn06u3btoqmpCYDq6mqOHTtGYGAgLS0t7N+/n5iYmN7qZp+kVCpJS0sjMjJSl0E1\nIiJCFyjOnj3L8ePHsbOzw9LSkj179nDs2DFd+ZiYGAwMDLC2tmbfvn0cOXJE91pOTg7p6ek0NDQw\ne/Zs0tPT6erqur0dFG6KCPx9lEaj4cKFC4wdO5Zt27YhkUiYPn06hYWFwJUn9ilTpjB+/HhCQ0OZ\nPn06ISEhaDQaiouLKSgoYPr06SxbtoyGhgYKCwvZsGEDGo2GmpoaIiMjOX78OIsXLyYwMJBvv/2W\n/fv393Kv+45jx46xadMmxo4dy1/+8hcqKiooKioiPT0duJJAsa6ujsLCQhwdHblw4QI7d+6kvb0d\nuVyuO11t8uTJ+Pv7k5KSwoEDB8jKyiIuLo6AgAAWLlzIwIEDee2115BIRCi5m4jJ3T5q3759pKWl\n4enpSVJSEq2trWi1WtavX8/48eOpqKjAwsKC3NxcvL292blzJ4aGhujp6VFbW4u3tzehoaG0t7eT\nkJBAe3s7iYmJuqMXg4ODqamp4ezZs9jb22NqakpCQoJI2XEbNDU1cfr0abKysmhra+Py5cu4uroi\nlUoJDw/XrdYaOXIksbGxXLp0CTs7O3x8fFiyZAnvvvsu3t7e1NbWkp6eTmhoKBYWFsTExHDmzBky\nMzOxsbGhtbWV6Ohoxo8fz4kTJ7jvvvsYN25cb3dfuA5ijL8Pys3NZdOmTVhaWmJpacm0adPIy8sj\nLy8PiUTC8OHDkUgkaLVaTExMdOP5/fr1o7i4GGtra5ydnTEwMKC5uZlz586hp6eHvr4+7u7ulJeX\nI5FIkMvl+Pn5YWdnR319PSkpKXh4eDB79mwxGdiDTp48SV5eHlKpFK1Wy5QpU3BzcwOu/FL4+uuv\nsba2Zv78+VRVVVFSUoKDgwOenp5s3LiRl156CY1GQ15eHp2dnQwZMoSKigqioqLw8vKioqICd3d3\nRo0aRWZmJl5eXhQWFrJz507+/ve/M2jQoF6+A32DmNwVrptMJkNfX5/Y2FgcHR2ZOHHibam3qKiI\nLVu2oFAo+Pvf/461tfVtqbevKS8vp7CwkIsXLzJnzhxdwO9JSqWS1atX4+joiFKpZObMmdjY2PR4\nvX2dmNwVrltxcTGrV68mOzsbiURCSUlJj9eZmZnJgQMHUCqVfPjhh5w4cYKcnJwer7evOXr0KBs3\nbuTYsWOYmpqybt262/JQtWLFCrZu3aqbDO7o6OjxOoWbI8b4+wi5XE54eDiGhoY8/PDD+Pn5MXfu\nXEaMGMH777+PpaVlj9RbV1fHoUOHUKlUzJ8/n7Nnz6JUKpHJZAQGBvZInX1RZmYmcrmcCRMm4Orq\nSkJCAiUlJRw/fpxJkyb1WL1arZYJEyYglUp56KGHiImJITU1ldbWVgICAnqsXuHmiMDfRxQWFpKa\nmsr06dOJjIzExMQEa2tr/Pz8WLduXY+tw969ezcdHR04ODhQWlrKunXr8Pf3x9zcHBsbG4YOHSrG\n+29Sa2srmzdv1g3zBAUF6VIr79q1i6SkJJYvX94jdb/66quYmpri5+dHcnIySqWSjIwMsrKy+NOf\n/nTdSf6E20sE/j6gpqaGL774gn/+85+YmZnh7u6Oh4cHBQUFtLa2UlhYSHFxse4EplulubmZ6upq\nFi9eTEpKClKplDlz5mBpaUlnZyfl5eV4enqKXb03qby8nK6urv/H3ntHRXmt/9sXvUkHAREERbAA\nYsXeo7El6okaTWJ6PCYmMd8cS37JsSQmmqgpamKvOVZUBFGKgEhRkd6G3ofeB4Y2M8z7h4vnDUeT\nkIj1cK3lksVmz977mZn97Ocun5vevXszaNAgpkyZgqmpKWpqahQXFyMSiSgqKupSe39LSwsikQgr\nKyusrKxQKpWYmJhgampKQUGBIPcwbNiwLhuzm66je+N/xsnPz2f//v2kp6cTHx/P/PnzBekFCwsL\n/Pz86NGjByUlJV268be0tPDxxx+jpqaGRCJh1qxZHdp9fX3JyspCR0cHV1fXDrV8u+k8ubm5XL58\nGVVVVWbNmtVBfqG2tpY+ffoQGhqKp6cnq1at6rJxfXx8kMlkvPXWW/fcuLW1tTl48CBhYWFIJJIO\ndWK7eTLodu4+wyiVSry9vVFRUWH37t2oqqpy69YtoT0gIICcnBxqampQKBScPn1ayL59ECQSCVFR\nUSxduhR7e/sOGaFwV/65d+/eLFmyBJlMhkQieeAx/xeRSCQEBQURERFBTk6O4D9pJy4uDl9fX776\n6iumTJlCRkZGl4x7+PBhtm7dSmFhIRs2bODMmTOUl5cD0NraSkFBAUVFRbS0tHDs2DG++eabLhm3\nm66je+N/hikoKCAlJYX3338fZ2dnfvnlF/z8/ARZBnNzc0aNGsXLL7+Mqakp4eHhlJaWPvC4gYGB\nXLhwAXV1dT799FOsra359ddfSU5OJi4ujl27dvHdd99hZGSEra0tEomkO8rnL9La2srJkyeJjo7m\n4/4TkBMAACAASURBVI8/5rvvvkNTU5MNGzbQ2NhIW1sbFy5cAGDQoEFoaGiQlpb2wFE+KSkpqKio\nsG7dOsaMGcOECRO4desW586dA+DIkSPs3buXkSNH8uGHH+Lo6EhxcXGXfK666TrUNm3atOlxTmDz\n5s085ik8k4hEIvLz8zEwMKCkpISgoCCKi4sZPHgwwcHBqKmpCT9raWkhk8nQ19dHRUWFgoKCv11a\nLzk5mevXr+Pi4sKlS5eE07xIJEIul5OdnY27uzujR48mNTWVhIQEpk6dSmRkJAUFBTg4OHTlZXhm\niYiIYNeuXRgbGyOTyYQM6oSEBHr06EFzczO6urrcunWLXr16kZ+fT2trK+rq6g/kU/H39+fChQvk\n5eVRXl7OhQsXsLe3F242enp6SCQS/P39kUqlWFpa4uTkJCQAamlpdeFV+N/mQfbObhv/M4hSqeTU\nqVNMmzaNQYMGUVxcjJubGwsWLCAoKIiePXtSVVWFUqnEyMgIhUKBXC4XMi737NmDvb09NjY2f2nc\nmpoabt++TW1tLQYGBixbtozy8nIGDBjA4MGDqa+vx9TUFCsrK7S0tKitrcXa2hqZTIaNjQ179uzB\nxMSEkSNHPozL8swgkUhQKBS4ubnh4uLC+PHjUVdXZ8CAAYSEhNDc3IyGhgavvPIKSqUSuVxOfX09\ny5YtEyQ3zMzM/nI0VbuZ8NVXX8XAwAANDQ0AZsyYQVFREXp6elhaWvLFF1/Q2NhIY2Mj2traFBcX\nU11dzbVr11i4cGGXX49u/jrdmbvPIAEBAcTFxQGwaNEi+vbt26l+SqWSo0eP4uXlxdSpU3n33XfR\n1dXtVN/2iltGRkbo6enxwgsvdPpkqVAoiI+Px9vbm+bmZr7++mvU1bvPJPcjOzubo0eP4ujoiKmp\nKXPmzOl036KiIm7dusWdO3cYOnQoS5cu7XTfrKwsdu3aRd++fXF2dv5LuQGtra1UVlayevVqBg0a\n1P2E30V0Z+52IyCVSvH19SU8PBw7Oztqamo63Tc2NpYzZ86wcuVK6urq8PT07HRfb29vDA0NmT17\nNvr6+jQ0NHS674cffoifnx9r1qyhtbX1L437v4RcLmf//v2IRCLGjBlDaWkpYWFhnepbWlrKtm3b\nEIlEuLq6oqWlRVFRUaf65uXlkZeXh5mZGXFxcXh4eHR6zk1NTfzrX/8iLy+PN954g8rKSqqqqjrd\nv5uHQ/fG/wxRVFTEpk2bcHR05PPPP8fR0RE/Pz9+/fXXP+0bEhLC8ePHGT16NPb29lRXV3Px4sVO\n9W23J8+dOxd7e3usrKzIz88Xnjr+iLq6OpKSkpBIJOjp6eHm5kZ8fDyFhYWdWvP/CgqFgq1bt2Jv\nb8/69evR09MjPj6exsbGP+2rVCr57rvvSExMZMSIEbz00kuMHTuWtLS0Tkl2JCYmcvPmTVxcXNi4\ncSNWVlbcuHGjU/O+fPkylpaWDBkyhL59+zJlyhTBRNTN46N743+GSExMxNraGpFIRGxsLFevXqWw\nsJDLly+Tl5f3u/0KCwvx8fFBT08PTU1Nrl+/TkJCAmpqaiQkJPzhJiyXy/nmm2+or69n//79nDlz\nBktLSxQKBV5eXn/4KFpaWsr69euxtrZGQ0MDb29vDh8+jL29PQcOHCA3N/dBLsczxenTp/Hz8yM6\nOpqLFy+ydetW1NTUMDc356effqK+vv53+545c4bCwkKGDRuGWCzm3Llz5OTkoKWl1aHAyv0oLi7m\nzp07yGQyLly4gIeHB3FxcSQnJ//h5q9UKvnhhx/4+eef0dHR4dtvv+XatWs0NDSwY8cO7ty5Q1tb\n29++Ht08GN02/meE7Oxs8vLyMDExQV1dnfLycgwNDcnMzKSqqor4+Hg2bdpE79697+n77bffkp2d\nzfLly4V6qu3JXDU1NZiZmWFvb9+hNB/cNSutWLGCXr16MWXKFAYNGkR6ejq9evVCT0+P1tZWoqKi\nePXVV+87Zw8PD6EwiJWVFWZmZsTGxjJr1izi4+OZPHkyrq6uXXuhnlICAwPJz89HIpEI1a5sbW3R\n19cnKCgIgO+///4eh21dXR179+6loKAAZ2dnrKysyM7OxsTEhLlz53Ly5ElsbW1ZuHDhPX3z8/OF\nz9XIkSPJzMzEyMiIGzduYGdnR58+fXB1db2vLyc5OZlLly4xdOhQ8vPzMTQ0pLW1lZ49e2JoaMiV\nK1ewtrbu0qSy/zUeZO/s9qA9AyQkJHDu3DliYmJ45513eOmll4S2/v374+npiZOTE5mZmR02fqVS\nyeXLl9HR0UFNTQ01NTWWLVsmtNfX11NTU8Px48fR1dXl008/7TCuj48PEomEadOmMXPmTFRVVYUw\n0NbWVr7//nsaGhqQy+X3ddaqq6szbNgw5s+fL/xu0aJFREdHExsbS79+/Whpafmfj/KJi4tDoVDQ\n1NTEJ5980qGtXXu/uroakUjE4MGDhbaioiJeffVVevbsyaJFizp8LuBunkfv3r2JjIzExcXlHlG1\nL7/8ktGjR+Po6IiLiwsuLi4ATJ06lbCwMAIDA0lNTWXhwoVYWVkJ/Wprazl06BBwN4P7/fff7/C6\nnp6eSCQStLW1H/zidPO36Db1POXk5eXR2trKJ598wosvvkhtba1g921qauLYsWNkZWXh6urKnTt3\nOHDggNC3srKS1tZWZDIZTU1NnDx5ksTERKFdJBLxyy+/oK+vj5GRUYe6qoWFhdjZ2TF9+nSMjY0J\nCAjocPo4fPgwY8eOxd3dnZaWFqGk429ZsGAB8+fPp6ioiLq6OuH3FRUVODs74+Xlxe3bt7ly5UqX\nXrOnhba2Nk6fPk1AQACXL18mKCioQ/nKlJQUvvjiCwYPHoyjoyPnzp3rkAWtVCqxtbVl4sSJQoW0\ndtLT0wkPD2fIkCH069ePvXv33uOQ37dvHzo6OsTHx3dwBJ84cYKvvvoKc3Nz6uvr+fzzzwVTk1Kp\n5JtvvsHOzo4dO3aQlZUlPNUBlJSUYGpqyujRo1FVVWX37t0d3vtuHg3dG/9TTH5+PsHBwRQXF2Ns\nbMzYsWOJjY1l69atNDU14e/vT01NDf369cPFxQVDQ0Nu3LiBTCajqqqKnJwc7OzsWLx4MWPGjCEu\nLo5Tp07R0tLCe++9x88//4y7uzvLli1DJpPxxRdfUF1dTXp6OidPnuTWrVssW7aMfv36kZGRQWxs\nLHBXCbQ9rnz8+PEcOXKEVatWERkZKcy9uLiYxsZGWltb8fHxITMzU2gbPHgw06dPZ/369YwYMYLg\n4GBSUlIe+fV93BQUFBAXF8fixYv57LPPmDx5Mn5+fkJUTXvls+XLl/Pyyy9z48YNvv76a+rr68nJ\nySEpKYmxY8cK0hlSqVTYoI8dO0ZcXBxWVlaMHTuWlpYWbt++Ddw9pdfX1yMWi1m2bBmTJk0iODiY\nzMxMioqKEIlEmJiYMHPmTCZNmoSampoQiVVQUEBZWRlDhgwRKrIVFBTQ3NxMZWUlJ06cIDo6mhkz\nZqChoSEcPLp5tDywjd/Pz4/Vq1ejUCh45513WLduXYf2kydP8t1336FUKtHX12fv3r0d7LbdNv6/\nR0tLC99++y0mJiZkZWUxd+5ckpKSSEpKom/fvowcOZJr166hra1NfHw877//Pm5ubvj5+WFvb095\neTk9evRAJpNRW1uLg4MD8fHxVFdXo6qqysGDB7G2tmbMmDGCfdfExISKigqmTJlCeno6KioqWFhY\nYGVlRUBAACKRCHd3dxITE3FzcyMqKorBgwcTHh5OY2Mjzs7OfP311zQ0NJCbm0taWhrp6emCvdnB\nwYHk5GSioqLIzs7m5ZdfRl9fn9raWrS0tARTw/8C9fX1xMfHk5aWRlZWFk5OTkRFRdHc3IyNjQ0y\nmYwePXpgaWlJv3796Nu3Lx999BFGRkZMmDCBtLQ0pk+fzuHDh5kwYQJaWlokJyczceJEWlpaUFFR\nISQkhBdffJHo6GgMDQ2ZOXMmhoaGHDt2jMbGRpRKJSNHjiQoKIjy8nKcnJyQy+X06NEDPT097O3t\nhYpuffr0ERzAw4YNIzw8nGnTpnH9+nXGjBmDk5MTgYGB6Ovro6qqysCBA7l69SqDBw9GW1ubIUOG\nMG7cuMd92Z8qHpuNX6FQsGrVKgIDA7G2tmbkyJG88MILDBw4UPibvn37EhoaiqGhIX5+frz33nvC\nyaKbv8/+/fspLi7m9ddfJzU1lTFjxtCnTx8kEgkDBgxAX1+fV155hYSEBMzNzTE3Nyc7O5umpiYs\nLS3Jzc1lxowZGBkZERQUhI6ODgsXLkQqlXL79m1GjRrFsGHDBO38KVOmoK6ujlgsBmD48OGUlZUh\nl8sxNDRk8ODBjBw5Em9vbyZOnIiLiwsDBw6kurpaMBPY2NggFotRUVHB1NQUY2NjsrKymDJlCqqq\nqtTV1SGRSFBTU8PIyAgdHR1KS0sZP378Q5EWflKpr68nLCyMwsJCVFVV0dXVJTs7G4VCwcSJEzEy\nMuLAgQO4u7vj6OhIYWEhGhoazJkzB0tLS6qrqzEzM2Ps2LEkJibS2tpKdXU1dXV1GBoakpeXx/z5\n89HS0kJHR4dZs2Zha2srZNm6u7sTExODhYUF5eXl6Ojo0LdvXxobG2lpaWHu3LnExsZSWlqKVCpF\nS0sLW1tbcnJymDZtGlVVVUyePJnGxkbWrFmDpqYmzc3NqKmpsXDhQnr06EFVVRVLly5FVVWVGzdu\nEBQUJNzEunn4PNCJ/9atW2zevBk/Pz8Atm3bBsD69evv+/c1NTW4uLgImwd0n/j/DqWlpVy4cEFI\njnnWqa2tZdOmTSxZsoQxY8Y87uk8dBITE9m5cycDBgzgzTffxNLS8nFP6aGhVCoRiURs374dIyMj\nvv322249n07y2E78RUVFHfRc2iMEfo/Dhw8ze/bse37/2xTuyZMnd+t3/wmVlZXMmzcPkUhEVFTU\nMx31kpKSQmpqKkOGDCErK4vy8nJefPHFxz2th0ZGRoYQoaWjo8PNmzefaX2b//znPxQWFjJ16lSa\nm5spKCigf//+j3taTyQhISGEhIR0yWs90Mb/V0Serl+/zpEjR4iIiLinrVu7o3O0h186Ojpia2tL\n7969CQ8P58qVKzz33HNoamo+7il2KUqlEl9fX5qbm/noo4+QSqUkJCSwa9cu3n77bfT09B73FLuc\nxMRENDQ02LZtG6ampuTk5FBdXY2JicnjnlqXU1lZSUxMDEOHDmXRokUcP36cLVu28MUXX3Rv/vfh\nvw/Fmzdv/tuv9UBRPdbW1h2yOgsLC++bIJSYmMi7776Lt7c3xsbGDzLk/zSnT5/mp59+IigoiGXL\nluHl5UVtbS3Xrl3jxIkTj3t6Xc758+ext7dn0KBBxMTEsHnzZlJSUigrKyM6OvpxT6/L2b9/P2pq\napSXl6NQKAgNDcXBwYG9e/d2WiLhaSI/P19IKIuKiuLatWukpaUxc+ZMwXzczcPhgTb+ESNGkJmZ\nKcSSnz17lhdeeKHD3xQUFLBw4UL+85//dGutPyCqqqpCXVVbW1s0NDRQUVFh6dKlNDY2PlP6NqdP\nn+bWrVuMHDmSyspKRCIRzs7O9O/fH6lUysaNGwkICHjc0+wytm/fLkgtu7m5MXfuXHR1dbG2tmb6\n9OkkJyc/U8VqiouLkUqlglNaX1+fl19+mbfeegtzc3O2bt1KdXX1457mM8sDmXrU1dXZs2cPM2fO\nRKFQ8PbbbzNw4ED2798PwIoVK/jyyy+pqalh5cqVAGhoaHRIJOnmz5HJZLS1teHi4oKtrS1jx47t\nUFvVx8eHhIQErl+/zuuvv94hE/ZppKKigjt37mBhYUFpaSnvvvtuB7Nijx49SEtLY9++fbi6uj71\nzk8vLy+8vb2ZN28ebW1tvPvuu8Bd1dKmpiaio6Oprq7m6NGjvP/++3+7SM6TgFKpJDw8nIKCAgA+\n+ugjIat76NCh1NXVkZ2dTUBAACkpKUyYMOFxTveZpVur5yng6tWrREREUFxcjKamJkuXLhVsfTKZ\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 196 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Koch Snowflake Generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I worked this one out myself. You might say I'm a special *snowflake*." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def koch1(n, x0 = (0,0), x1 = (1,0)):\n", + " \"\"\" Recursively generates a Koch Curve between two points \"\"\"\n", + " s = asarray([x1[0] - x0[0], x1[1] - x0[1]]) # Get displacement from x0 to x1\n", + " # Calculate normal vector\n", + " normal = asarray([-s[1], s[0]])\n", + " normal = normal / sum(normal*normal)**0.5\n", + " # Calculate the three points \n", + " # (I *think* that in the definition these are the maps that form the iterated function system)\n", + " a = asarray(x0) + s/3. # 1/3 from x0 to x1\n", + " b = asarray(x0) + 2.*s/3. # 2/3 from x0 to x1\n", + " c = asarray(x0) + 0.5*s + ((sum(s*s)**0.5)/3.)*normal # Form an equilateral triangle with a & b\n", + " \n", + " # Make first generation of points\n", + " p = [x0, tuple(a), tuple(c), tuple(b), x1]\n", + " \n", + " if (n <= 1):\n", + " return p\n", + " \n", + " result = []\n", + " for i in xrange(len(p)-1):\n", + " result += koch1(n-1, p[i], p[i+1])[:-1]\n", + " \n", + " return result + [p[-1]]\n", + "\n", + "def koch(n, p):\n", + " \"\"\" Generate Koch Curves between every two points in p, including between the last and first \"\"\"\n", + " result = []\n", + " for i in xrange(len(p)-1):\n", + " result += koch1(n, p[i], p[i+1])[:-1]\n", + " return result + koch1(n, p[-1], p[0])" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 351 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Plot some iterations of it.\n", + "for n in xrange(5):\n", + " points = koch(n, [(0,0),(0.5, 0.75), (1,0)])\n", + " x = [p[0] for p in points]\n", + " y = [p[1] for p in points]\n", + " plot(x, y, ',-')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 373 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Plot performance\n", + "# Python doesn't have an actual (good) profiler because apparently we don't care about efficiency :P\n", + "# (It has profilers but they all just print to stdout and don't actually return values)\n", + "from time import time\n", + "\n", + "nAverages = 5\n", + "nMax = 10\n", + "\n", + "costs = []\n", + "stddevs = []\n", + "for n in xrange(nMax):\n", + " cost = []\n", + " for i in xrange(nAverages):\n", + " t0 = time()\n", + " koch(n, [(0,0),(0.5, 0.75), (1,0)])\n", + " cost += [time() - t0]\n", + " costs += [mean(cost)]\n", + " stddevs += [var(cost)**0.5]\n", + " \n", + "figure()\n", + "errorbar(range(nMax), costs, xerr=0, yerr=stddevs)\n", + "title(\"Avg Time (s) vs n\")\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 432, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nNLeOraEqgroAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 432 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So I worked it out, but I didn't work it out very efficiently.\n", + "It appears to be $O(n^4)$ :S" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(range(nMax), costs)\n", + "for deg in xrange(4,5):\n", + " fit = numpy.polynomial.polynomial.polyfit(range(nMax), costs, deg)\n", + " plot(linspace(0, nMax), map(lambda x : sum([fit[i]*x**i for i in xrange(len(fit))]), linspace(0, nMax)))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 433 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/references/refs.bib b/references/refs.bib index 296c4bd..7b82326 100644 --- a/references/refs.bib +++ b/references/refs.bib @@ -9,3 +9,16 @@ year = "1985 - 1999" } +% The Fractal Nature of Bezier Curves +% Added 2014-01-15 +% No date? +% email rng@cs.rice.edu +@article {goldman, + title = "The Fractal Nature of Bezier Curves", + author = "Ron Goldman", + publisher = "Department of Computer Science, Rice University", + address = "6100 Main Street, Houstan, Texas", + note = "The de Casteljau subdivision algorithm is used to show that Bezier curves are also attractors (ie: fractals). + A new rendering algorithm is derived for Bezier curves." +} + -- 2.20.1