Attempt de Casteljau stuff
[matches/FYP2014.git] / ipython_notebooks / de_Casteljau.ipynb
index 7e3dbd3..976a6b6 100644 (file)
      "cell_type": "markdown",
      "metadata": {},
      "source": [
-      "Urgh"
+      "$ L P = Q$ and $ M P = R$"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def L(n):\n",
+      "    try:\n",
+      "        return L.dynamic[n]\n",
+      "    except KeyError:\n",
+      "        result = asarray([asarray([ nCk(j,k) / (2.**j) for k in xrange(n+1)]) for j in xrange(n+1)])\n",
+      "        L.dynamic.update({n : result})\n",
+      "        return result\n",
+      "L.dynamic = {}                        \n",
+      "\n",
+      "def M(n):\n",
+      "    try:\n",
+      "        return M.dynamic[n]\n",
+      "    except KeyError:\n",
+      "        result = asarray([asarray([ nCk(n-j,n-k) / (2.**(n-j)) for k in xrange(n+1)]) for j in xrange(n+1)])\n",
+      "        M.dynamic.update({n : result})\n",
+      "        return result       \n",
+      "M.dynamic = {}\n",
+      "\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 296
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "points = [(0,0), (0.5,1), (1,0)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 298
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def Casteljau(P, nPoints):\n",
+      "    while len(P) < nPoints:\n",
+      "        Q = dot(L(len(P)-1), P)\n",
+      "        R = dot(M(len(P)-1), P)\n",
+      "        P = list(Q) + list(R)[1:]\n",
+      "    return P\n",
+      "    "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 329
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "points = [(0,0), (0.5,1), (1,0)]\n",
+      "c = Casteljau(points,50)\n",
+      "PlotBezier(points)\n",
+      "plot([p[0] for p in c], [p[1] for p in c], 'go-')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 332,
+       "text": [
+        "[<matplotlib.lines.Line2D at 0x5a3a6d0>]"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\nSXIXQggv9P8BcEdRFyfaa+oAAAAASUVORK5CYII=\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x5942790>"
+       ]
+      }
+     ],
+     "prompt_number": 332
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "So, it sort of works but not giving the same curve as the vanilla method"
      ]
     },
     {

UCC git Repository :: git.ucc.asn.au