+ "outputs": [],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "So, Goldman's method is:\n",
+ "\n",
+ "<ol>\n",
+ " <li> lift the control points\n",
+ "P from the ambient affine space of dimension $d$ to the\n",
+ "ambient affine space of dimension $n$;\n",
+ " </li><li> generate the corresponding higher dimensional Bezier curve using the\n",
+ "iterated function system $\\{L_p , M_p \\}$ ; \n",
+ "</li><li> project the\n",
+ "resulting $n$-dimensional Bezier curve orthogonally back\n",
+ "down to the original dimension $d$.\n",
+ "</ol>\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "def Goldman(P, nPoints):\n",
+ " while len(P) < nPoints:\n",
+ " Pl = lift(P)\n",
+ " LP = Lp(Pl)\n",
+ " MP = Mp(Pl)\n",
+ " Q = dot(Pl, LP)\n",
+ " R = dot(Pl, MP)\n",
+ " P = lower(Q) + lower(R)\n",
+ " return P\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "points = [(0,0), (0.5,1),(1,0),(1.4,-2)]\n",
+ "c = Casteljau(points,50)\n",
+ "c2 = Goldman(points,50)\n",
+ "PlotBezier(points)\n",
+ "plot([p[0] for p in c], [p[1] for p in c], 'g-')\n",
+ "plot([p[0] for p in c2], [p[1] for p in c2], 'r-')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 12,
+ "text": [
+ "[<matplotlib.lines.Line2D at 0x30a8750>]"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x2bfe7d0>"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The algorithm works, I guess, but is it useful? It will be a lot slower than de Casteljau, because it does a lot more matrix manipulation stuff, but it gives no more accuracy on each iteration."
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Time Performance of Casteljau, Goldman, and Basic Bezier creation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from time import time\n",
+ "points = [(0,0), (0.5,1),(1,0),(1.4,-2)]\n",
+ "costs = {BezierCurve : [], Casteljau : [], Goldman : []}\n",
+ "stddev = {}\n",
+ "nAverages = 10\n",
+ "depth=8\n",
+ "for method in costs:\n",
+ "\n",
+ " stddev.update({method : []})\n",
+ " for n in xrange(1,depth):\n",
+ " #display(\"depth %d for %s\" % (n, str(method)))\n",
+ " c = []\n",
+ " for _ in xrange(nAverages):\n",
+ " t0 = time()\n",
+ " p = method(points, nPoints=len(points) * 2.**n)\n",
+ " c += [time()-t0]\n",
+ " costs[method] += [mean(c)]\n",
+ " stddev[method] += [var(c)**0.5]"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "title(\"Time to produce $n$-dimensional Bezier Curve\")\n",
+ "xlabel(\"$n$\")\n",
+ "ylabel(\"$t$ (s)\")\n",
+ "x = [len(points) * 2.**n for n in xrange(1,depth)]\n",
+ "for method in costs:\n",
+ " errorbar(x,costs[method],yerr=stddev[method],label =str(method).split(\" \")[1])\n",
+ "legend(loc=\"upper left\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 18,
+ "text": [
+ "<matplotlib.legend.Legend at 0x2f7f790>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n+LAKCAhQhYWF6tSpU6pdu3ZKr9ebJe6KyszMVElJSUoppfLy8lSHDh3UkSNHGsw+5ufnK6WUKioq\nUmFhYWrHjh0NZt+ue//999XIkSPVoEGDlFIN6/3p6+urzp8/b/S3hrR/Y8aMUZ999plSSnuP5uTk\n1Oj+1ftEsnv3btW/f3/D/XfffVe9++67Zoyo6k6dOmWUSDp27KiysrKUUtoHcceOHZVS2reF0kde\n/fv3V3v27DFtsNX06KOPqp9++qnB7WN+fr4KDg5Whw4dalD7lpqaqh544AG1detWwxFJQ9o/X19f\nlZ2dbfS3hrJ/OTk5qk2bNjf9vSb3r97PinSra08agrNnz+Lm5gaAm5sbZ89q18JkZGQYjVqrb/uc\nkpJCUlISYWFhDWYfS0pKCAwMxM3Njfvvv58777yzwewbwIwZM1i0aBGWpSZSa0j7Z2FhwYMPPkhw\ncDCffvop0HD279SpU7i4uDB+/Hi6devGU089RX5+fo3uX71PJFUq314PWVhYlLuv9eV5uHz5MhER\nESxZsgR7e3ujZfV5Hy0tLTlw4ABpaWls376dn3/+2Wh5fd63jRs34urqSlBQ0C2v16rP+wewa9cu\nkpKSiI2N5V//+hc7duwwWl6f96+4uJj9+/fz7LPPsn//fuzs7Jg/f77ROtXdv3qfSCpyfUp95ebm\nRlZWFgCZmZm4umpzupd1vY1OpzNLjJVRVFREREQEo0ePZsiQIUDD20cHBwceeeQRfv311wazb7t3\n72b9+vW0adOGESNGsHXrVkaPHv3/27t7lUaiMIzjj6BgYykkMFYBBcM4CRgrQVAsExiwsPcGvABb\nU3gRQrBJYxtFLYQUgoWIkCZBp7ASFCKiAZvXYt2wLAu77Jns4Nn/r0z1Ps08zEfe400+Scp/HuEw\nPT2tOI51eXnpTb4gCBQEgSqViiRpY2NDV1dXyuVyqeX78kXi839MarWaGp+7TBqNxvDiW6vV1Gw2\n9f7+riRJ1Ov1tLS0lOWov2Vm2tra0vz8vLa3t4e/+5Dx8fFR/f63/W6DwUCnp6cql8teZJOker2u\n+/t7JUmiZrOp1dVVHRwceJPv7e1NLy8vkqTX11ednJwoDENv8uVyOc3MzKjb7UqSzs7OVCwWVa1W\n08uX2hudDLVaLZudnbVCoWD1ej3rcf7K5uam5fN5m5iYsCAIbH9/356enmxtbe2Xn+ft7u5aoVCw\nubk5Oz4+znDyP9Nut21sbMyiKLJSqWSlUsmOjo68yHhzc2PlctmiKLIwDG1vb8/MzItsPzs/Px9+\nteVLvru7O4uiyKIosmKxOLyG+JLPzOz6+toWFxdtYWHB4ji2fr+faj5vDrYCAGTjyz/aAgBkiyIB\nADihSAAATigSAIATigQA4IQiAQA4+WfnkQD/m3a7rcPDQ62srEiSOp2OdnZ2Mp4KSB93JMCIfN9P\nFASB4jhWr9fLeCJgNCgSYESWl5d1e3urSqWi5+dnjY/zAAB+okiAERkMBpqcnJQktVotra+v6+Li\nIuOpgPRRJMCIdDqd4fuRqakpPTw8eLOZGvgRu7YAAE64IwEAOKFIAABOKBIAgBOKBADghCIBADih\nSAAATigSAIATigQA4OQDGQo6bPj82VkAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x3a1be50>"
+ ]
+ }
+ ],
+ "prompt_number": 18