{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ベジェ曲線のパラメータ表示\n",
    "\n",
    "今回の授業では、ベジェ曲線（Bézier curve）のパラメータ表示について解説します。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 曲線のパラメータ表示\n",
    "\n",
    "以下の方程式で表される楕円を考えます。\n",
    "$$\n",
    "x^2+4y^2=1\n",
    "$$\n",
    "\n",
    "この楕円上の点を次のように表すことが可能です。\n",
    "\n",
    "$$\n",
    "x(t) = \\cos(2 \\pi t), \\quad y(t)= \\frac{1}{2} \\sin(2 \\pi t) \\quad (t \\in [0,1])\n",
    "$$\n",
    "\n",
    "媒介変数 $t$ の変化に従って、点 $(x(t),y(t))$ は一つの曲線を描きます。上記の式は曲線のパラメータ表示と呼ばれます。\n",
    "\n",
    "### 例1：楕円のパラメータ表示\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAADGCAYAAADRwTttAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAwGElEQVR4nO3deXxU1f3/8dfJTCbLZE/IRgJJIBDCTiK7CgKKiNhWVNq61q3WpbW1X/Wr3Wz7/altrbW7pa6touKGCCJbZJF9NyRhSYBANrLvmWTm/P6YAUdMIMtMJmQ+z8cjj5m5984979xMPvfMmTv3Kq01Qggh+j8fTwcQQgjRO6TgCyGEl5CCL4QQXkIKvhBCeAkp+EII4SWMng7QkaioKJ2UlNTt5zc0NGA2m10XyEUkV9dIrq6RXF3TH3Pt2rWrXGs9oN2ZWus++ZORkaF7Yv369T16vrtIrq6RXF0jubqmP+YCduoO6qoM6QghhJeQgi+EEF5CCr4QQngJKfhCCOElpOALIYSX6LOHZQrhClprGi1WKhss1Le00Whpo6HF+tVbi5XGFvttU6uVNquNNpvGatP2W6vj1vbl9OrqJl7K347RR2HwUWdvfQ0+Zx8bDYpAk5FAkwGzyYjZz4jZz0CgyYjZZCDQz34bEuBLeKAJk1H6X8K9pOCLi47WmooGCyU1zRRVN1Fa10JlvYWqRguVDV/+nHnc0ma74DqVArPJiL+vD0YfR9E2OAq302ODj8KgFK1WqG1qPbtTaLPavtxB2DRtNhutVk2jpY3m1gu3DxDsZyTcbCLcbCIi0JcIsx8RZl/CzSaizH7EhvoTF+pPXFgAQX7yryu6Tl41os9ptdo4WdXEsfIG1p1oZfsnuRQ7intJbTPFNc1Y2iniwf5GIswmwgNNxIX6kx4fQoTZ5JjmS4i/79ledaDJqbftZ8DfaMDHR3U6Y1ZWFjNmTOvUslabvfA3Wqz2dxktVhos9ncb9S1Waptav7aTKqtrIa+kjooOdljB/kZ78Q8NID7Mn9iQAOLC/KmstJJe28yAYD+U6vzvI7yDFHzhEVabpqi6iYLyBo5VNNhvyxs4VtFIYWUjbbYvr9NgzM0nJsTeux2TEMbckf6O3m4AcaH2+315SMTgowj29yXY35eYbjy/0dJGeZ3FsbNrorimmeLqJopqmimpaSa7qIbyesvZ5Z/evhazycDgSDPJUWaSogJJctxPjjITYTbJzsBLScEXblfVYCGnpJbc4jpyS2rJLakjr6TuKz3XQEeBGhEXzLzRsWcLVGHuXhZcORNDF3rf/U2gycigSCODIgM7XKalzUpJTTMfrd9CyMCh5J+270izi2r4JLsEq9MONMJsIi02mLTYENLighkRG0JqTBD+vobe+HWEB0nBFy6jteZkVRN7Cqs5WFRLbkktOcW1lNa2nF0m0mxiRFwIN08eTGp0EEmOXmd0B0MQ9cd8vLrYd5af0b7DHBVlZMaUpK/Mcx4iyy9v4HBpHTkldbyx/fjZzxd8FCRHmUmLCyE9LoSR8SGMSwwjLNDkgd9GuIsUfNFttc2t7C+sYW9hFXtOVLO3sJqKBvvQgq9BMTQ6mGlDokiLs/cmR8SFMCDYz8OpvY+vwefscM5Mp+lWm+ZEZSM5xbXkFteSU1LH/pPVfLy/+OwyKVFmxiWGMW5QGOMTw0mLC8bX0DeHzsSFScEXnaK1prCyiS355ew8VsXewmqOnK7nzCWRhwwwM2N4NOMHhTEuMYzhsVIY+jqDjzq7I5g3Ou7s9NrmVr44WcOeQvtOfMPhct7bcwoAP6MPowaGMj4xjInJEUxKjiQ00NdTv4LoIin4okNF1U1sOVrBlvwKthyt4FR1EwDhgb6MHxTOtWPjGZcYxtjEMEID5J++vwjx92Xq0CimDo0C7Dv7U9VN7C2sPvtO7rWtx1m8qQClYGR8CFOHRDElJZJLkiPkkNE+TP4y4qzqRgsbDpez5Wg5W45WcKyiEYCwQF8mJ0dy7+UpTEmJZGh0kBzl4UWUUiSEB5IQHsj8MfGA/UPivSeqz3YGXtl8jBc35GPwUYxJCGVKSiTThkZxSVJEnz16yhtJwfdiWmsOldazLreM97c1cWTVamzafoz3pOQIbpmSxJSUSNJig7t0jLro//yMBialRDIpJZIfzYbmViu7jledfUf44oZ8/pZ1lCA/I5emRhFPKyPrWuQzHA+Tgu9lmlutbM2vYF1uGWtzys4O0wwO8eGBmUOZmRbNmIQwOTJGdIm/r4FpQ6OY5hgGamhpY8vRCtbmlrEut5SVtRZeyl7DmIQwZqVFc0VaNCPjQ+SdYi+Tgu8FmixW1ueVsXx/EetzT9PUaiXA8Q/6wBVDmTk8mtw9W5kxY7ino4p+wuxnZHZ6DLPTY9B6FK99tI5a8yDW5pbxxzWHeG71IWJD/Ll6dCzzx8QzYVCYFP9e4JKCr5SaC/wJMACLtdZPd7Dc9cBS4BKt9U5XtC3a19Jm5bO80yzfX8yanFIaLVaigkxcnzGQ2SNimJwS+ZUv2uR6MKvo35RSDA4xMGNGKg/OSqW8voWsvNN8ml3Cf7ed4OXNxxgYFsA1Y+K4ZnQcYxJCpfi7SY8LvlLKAPwVmAOcBHYopZZprQ+es1ww8ENgW0/bFO1rs9rYeLicj/YXsTq7lLqWNsICfbluXDzzx8QzKTkCoxwqKTwsKsiPhRkJLMxIoK65ldUHS1m+v5iXNxfw4oZ8BkUEcs2YOBaMjWdEXIin4/YrrujhTwSOaK3zAZRSS4DrgIPnLPdr4Bngpy5oUzgpKG/grR2FvLv7JKfrWgj2N3LVqFjmj4lj2tAoOR5e9FnB/r58a0IC35qQQE1jK6uyS/hofxEvbsjn71lHGTUwhJsyE1kwbqAc+usCSmt94aXOtwKlFgJztdZ3OR7fAkzSWj/gtMwE4Amt9fVKqSzgkfaGdJRS9wD3AMTExGQsWbKk27nq6+sJCgrq9vPdxVW5WqyanSVtbDjZRl6VDR8FY6IMXJpgZMwAA75d/NC1v28vV5NcXdPVXLUWzbZi++u7sM6Grw9kxhq4bKAvaRE+Lhvy6S/by9nMmTN3aa0z25vn9g9tlVI+wHPA7RdaVmv9IvAiQGZmpp4xY0a327Wfvrb7z3eXnub64lQNb24/wbK9RdS1tJEUGcj/zE1k4YQEokP8PZbLXSRX1/SnXAuwHzr8xala3tp5gg/3FLGlqJnBkYHcmJnADZkJRAd3/zXf3Vy9wV25XFHwTwGJTo8THNPOCAZGAVmOvXIssEwptUA+uO0cq02z+mAJ/95UwI5jVfj7+jBvVBw3XpLIpOQI+YBL9FtKKUYnhDI6YTRPzEtn5RfFvLWjkN+tyuNPaw5z7dh47pyeTHq8jPV3hisK/g4gVSmVjL3QLwK+c2am1roGiDrz+HxDOuKr6ppbeXvnSV75vIDCyiYSwgN48poR3JCZKOOZwusEmAxnx/vzT9fz6ufHeGfXSd7dfZIpKZF8b3oys9Ki5UuC59Hjgq+1blNKPQCswn5Y5kta62yl1FPATq31sp624W0KKxt55fNjvLWjkPqWNjIHh/O/V49gTnqMHGUjBJAyIIhfXTeKH88ZzpIdJ3j182Pc/dpOkiIDuWNaMgszEjDLOX2+xiVbRGu9AlhxzrSfd7DsDFe02R8dK2/gL+uP8P6eUyhg3ug47pyezNjEME9HE6JPCg305d7Lh/C96cl88oV92PMXy7J5fs0h7r4shVunJMnJ3JzIlugDnAu90Udx25Qk7r4smbjQAE9HE+Ki4Gvw4dqx8Vw7Np5dxyv5y7ojPPtJHv/akC+F34lsAQ9qr9B///KUHh1tI4S3yxgcwct3TGRvYTV/WnNICr8T7/3NPaistpk/fHqIpbtPSqEXwk3GJYa1W/jvnzmUW6ckeeVpm6Xg96LmVivLjlr4wbosWq02bp0ymPsuHyKFXgg3ci78f/g0j998nMN/th7n8XkjMPXwi6cXGyn4vUBrzbJ9RTyzMpeimlbmjozl8XlpDI40ezqaEF5jXGIYr985iay8Mn77cQ73vr6LERE+RA+vYWR8qKfj9Qop+G62+0QVv15+kD0nqhkZH8Ktw+H738rwdCwhvNaM4dFMHxrFm9tP8MyKbOb/eRM3ZCTwyFXDe/zN3b5OCr6b1Da38vTKXN7YdoLoYD9+t3AM109IYMOGzzwdTQivZzT4cMuUJCLqC9hrieGVz4+x8kAJj88bwaJLEvvtl7ek4LvB6oOlPPnBAU7XtXD3pcn8aPYw+RKIEH2Q2VfxxJx0vjNpMP/73gH+9/0DfLj3FE9fP4bkqP435Op9H1O70em6Fu5/Yzd3v7aT8EAT7/9gGk9cky7FXog+LjnKzBt3T+KZ60dzsLiWuc9v4O9ZR2mz2jwdzaWkErmA1pr3dp/iqeUHabJYeeTKYdx7+RA5D70QFxGlFDddMoiZw6P5+YfZPPNJLsv3F/HswjH95kNdqUg9VNvcyoNv7uEn7+wjNTqIFT+8lAeuSJViL8RFKjrEn3/cksE/bp5AWV0L3/zr57y8uYCeXjukL5Aefg/sK6zmwTf3cKq6iZ9eNZz7Lh/Sbz/sEcLbzB0Vx6TkSH66dB+/+uggm4+U87uFYwk3mzwdrdukG9oNNpvmXxvyuf7vn2O1ad6+dzL3zxwqxV6IfibcbOJft2by8/npfHboNPNe2Mj2gkpPx+o2KfhdVNVg4c5Xd/DbFTlckRbNxw9NJ2NwhKdjCSHcRCnF96Yn89590/Az+rDoxS28sPYwNtvFN8QjBb8LjpTV842/bWbzkQqeum4k/7wlg7DAi/ftnRCi80YnhPLRg9O5dmw8z60+xP1v7KbJYvV0rC6Rgt9Jm4+U862/baa+uY0375nErVOS5NKCQniZYH9fnr9pHE/MG8En2SXc9OIWymqbPR2r06Tgd8Kb209w20vbiQ3154P7p8kQjhBeTCnF3Zel8OItmRwpq+e6v24mu6jG07E6RQr+eVhtmt8sP8jj7x1gemoU7943lcSIQE/HEkL0AXPSY1j6/akA3PCPLaw+WOrhRBcmBb8DVpvmp+/sY/GmAm6fmsTiWzMJ9pcLhwshvpQeH8KH908jNTqIe1/fyQd7Tnk60nlJwW9Hm9XGw2/t5b09p/jJnGH8csFIuXi4EKJd0SH+vHnPZCYlR/Lw23tZuuukpyN1SKrYOVqtNn64ZC/L9hXx6Nw0HpyV6ulIQog+LtBk5KXbL2HakCh+unQfb+8o9HSkdrmk4Cul5iql8pRSR5RSj7Uz/8dKqYNKqf1KqbVKqcGuaNfVLG02HnhjNx8fKObJa0Zw34whno4khLhIBJgMLL4tk8tSB/A/7+7nv9uOezrS1/S44CulDMBfgauBdODbSqn0cxbbA2RqrccAS4Fne9quq9lsmoff3suq7FJ+cW06d12a4ulIQoiLjL+vgX/eksEVadE88f4XvNvHhndc0cOfCBzRWudrrS3AEuA65wW01uu11o2Oh1uBBBe061LPrsrj4/3FPH51GndMS/Z0HCHERcrf18Dfb57AtKGRPPbefj4/Wu7pSGe5ouAPBJwHrE46pnXkTmClC9p1mf9uO84/PjvKzZMHcc9l0rMXQvSMn9HA376bQVKkmXtf38Xh0jpPRwJA9fSUn0qphcBcrfVdjse3AJO01g+0s+zNwAPA5Vrrlnbm3wPcAxATE5OxZMmSbueqr68nKCjogsvtP93G87tbGBVl4Ifj/TC4+QRonc3V2yRX10iurvHWXOVNNn69tRmjgp9N8SfMr3N97J7kmjlz5i6tdWa7M7XWPfoBpgCrnB4/DjzeznKzgRwgujPrzcjI0D2xfv36Cy6TW1yr03+2Ul/9/AZd19zao/Y6qzO5PEFydY3k6hpvzrWvsEqnPblSL/jzRt1kaevUc3qSC9ipO6irrhjS2QGkKqWSlVImYBGwzHkBpdR44J/AAq11mQva7LEmi5UH3thNoJ/9cKoguQyhEMINxiSE8adF49h3soZnPsn1aJYeF3ytdRv2YZpV2Hvwb2uts5VSTymlFjgW+x0QBLyjlNqrlFrWwep6zW9XHORwWT3P3TiW2FB/T8cRQvRjV46M5Y5pSby8+Rjrcz3X53VJt1ZrvQJYcc60nzvdn+2KdlxlVXYJ/9l6gnsuS+HS1AGejiOE8AKPzk1jy9EKHnlnHyt/dCnRwb3f0fS6b9qW1DTz6Lv7GTUwhEeuHO7pOEIIL+Hva+DP3x5PfUsbP3l7n0cuoOJ1Bf+J9w/Q0mrjhUXjMRm97tcXQnhQakwwP5ufzsbD5SzxwOkXvKrirc8rY21uGQ/PSSVlQN87REwI0f99d9IgJiZH8PtP86hpbO3Vtr2m4FvabPz6o4OkRJm5fap8k1YI4RlKKX5xbTrVjRaeX3uoV9v2moL/2pZj5Jc38LP56TKUI4TwqJHxoSyaOIjXthzv1W/hekXlK69v4U9rDjNj+ABmpkV7Oo4QQvCTOcMINBl4avnBXmvTKwr+y5sLqLe08eQ1557EUwghPCMyyI+Hrkhl4+Fy9pyo6pU2+33Bb7S08d9tJ7gyPYah0fJBrRCi7/j2pEEE+xtZvKmgV9rr9wX/3V0nqW5s5W45v70Qoo8J8jPynUmDWHmgmMLKxgs/oYf6dcG32TT/3lTA2MQwMgaHezqOEEJ8ze1Tk/BRilc+P+b2tvp1wV+fV8axikbuvjQZpdx72mMhhOiOuNAA5o+JY8n2EzS0tLm1rX5d8JfvLyYs0JerRsZ6OooQQnRo0cRBNFisZOWddms7/bbgt9k0a3NKmZUWg6+h3/6aQoh+4JKkCCLMJlZll7i1nX5bCXMrbdQ2t3HVyBhPRxFCiPMy+Chmj4hmfW4Zljab29rptwV/d2kbAb4GLhsmpz8WQvR9V42Mpa6lza0XPe+3BX/faSuXDYvC39fg6ShCCHFB04ZGEWgyuPUCKf2y4Fc1WKho1nIophDiouHva2BUfCgHTtW4rY1+WfAPFtcCkB4X6uEkQgjReenxIeSW1GHT7rk4Sr8s+NlF9j1kenyIh5MIIUTnpceH0GixUtYoBb/TsotqifBXRJhNno4ihBCdlh5n76Qer3XPkTr9suAXlDcQb+6Xv5oQoh9LjbGf4LGkQQp+p9U0tRIknXshxEXGz2jAbDLQ2NqHh3SUUnOVUnlKqSNKqcfame+nlHrLMX+bUirJFe12pLaplUBfOXeOEOLiExLgS6ObTqnT44KvlDIAfwWuBtKBbyulzr3SyJ1AldZ6KPBH4JmettsRrTW1zW0EGqXgCyEuPiH+vjT04R7+ROCI1jpfa20BlgDXnbPMdcCrjvtLgVnKTaevbLBYsdo0ZunhCyEuQnmldewus7pl3UYXrGMgUOj0+CQwqaNltNZtSqkaIBL4yneIlVL3APcAxMTEkJWV1eUwZ/aMFktLt57vbvX19ZKrCyRX10iurumruQC35HJFwXcZrfWLwIsAmZmZesaMGV1eh82mUetWYPMx0Z3nu1tWVpbk6gLJ1TWSq2v6Yq70fRsxtTW4JZcrhnROAYlOjxMc09pdRillBEKBChe0/TU+PoogP6PbxsCEEMKdatx40IkrCv4OIFUplayUMgGLgGXnLLMMuM1xfyGwTms3fXcY+4ce7vqUWwgh3Km2uZVAN4299Hi1jjH5B4BVgAF4SWudrZR6CtiptV4G/Bt4XSl1BKjEvlNwm9AAXxpaLe5sQgghXM5q09S3tBHo6+uW9btkP6K1XgGsOGfaz53uNwM3uKKtzkiMCGBfQV1vNSeEEC5xrKIBrWFAQN8d0ulz0uNCKW3Ubr8gsBBCuFJ2kf1Mv4NC3FOa+2XBHxkfggZyS2o9HUUIITrtYFEtvgbFwCAp+J125rTIZ/aWQghxMcguqiE1OhijjwzpdFpcqD/BvrC3sNrTUYQQolOsNs0Xp2rceh2PflnwlVKMjDKQlXeaNqv7rgAvhBCusvtEFVWNrVw2bIDb2uiXBR9gQoyRygYLO49XeTqKEEJc0KovSjAZfJg5XAp+l42JMmAy+rAqu8TTUYQQ4ry01qw6WMLUoZEE+7vnGHzoxwXf36i4dGgUn2aX4sYv9QohRI/lFNdRWNnEVSNj3dpOvy34AFePjuNUdRNb8ys9HUUIITr07u6TGHwUs0fEuLWdfl3w54+JI8Js4t+b8j0dRQgh2lXb3MpbOwqZPyaOAcF+bm2rXxd8f18DN08ezJqcMvJP13s6jhBCfM3bOwqpb2njrukpbm+rXxd8gFsmD8Zk9OHfmwo8HUUIIb6izWrj5c3HmJQcweiEULe31+8L/oBgP745biDv7j5JeX2Lp+MIIcRZHx8o5lR1E3dd6v7ePXhBwQe45/IUWq2a51Yf8nQUIYQAoLnVyu8/zWN4TDCz0qJ7pU2vKPhDBgRx65TBvLn9BNlFNZ6OI4QQLN6YT2FlE7+4Nh0fN50751xeUfABfjR7GOGBJn710UE5Ll8I4VElNc38df1R5o6MZerQqF5r12sKfmiAL49cOZztBZV8fKDY03GEEF7s6ZU5WLXmiWtG9Gq7XlPwAW66JJH0uBB+vfwgVQ1yCUQhRO/bePg0H+wt4p5LU0iMCOzVtr2q4Bt8FM8uHENlg4XH3tsvQztCiF5VUd/Cj9/eR2p0EPfPHNrr7XtVwQcYNTCUn141nFXZpby5vdDTcYQQXkJrzU+X7qemqZUXvj2eAJOh1zN4XcEHuGt6CpemRvHU8mwOl8rFzoUQ7vfaluOsyy3jf69OY0Sc+y5ycj49KvhKqQil1Gql1GHHbXg7y4xTSm1RSmUrpfYrpW7qSZuu4OOj+MMNYwk0GXnwzT00WayejiSE6McOFtXy2xU5zBw+gNumJnksR097+I8Ba7XWqcBax+NzNQK3aq1HAnOB55VSYT1st8eiQ/z5ww1jySut40dv7cFqk/F8IYTrldY2c+erOwgP9OV3N4xFqd455r49PS341wGvOu6/Cnzj3AW01oe01ocd94uAMsB9l3Tpgplp0Tx5TTqrskv5fytyPB1HCNHP1Le0ccfLO6htauWl2y8hKsi9Z8O8EGMPnx+jtT5zUHsJcN6TOSulJgIm4GgP23WZ701LorCykcWbChgUGcitU5I8HUkI0Q+0WW08+MZu8krrWHxbJiPj3X9ytAtRFzo0USm1BmjvMixPAK9qrcOclq3SWn9tHN8xLw7IAm7TWm/tYJl7gHsAYmJiMpYsWdKJX6F99fX1BAUFdWpZm9a8sLuFfaet/HCCH+Oie7ofdE2u3iS5ukZydY235dJa83qOhXUn2rgt3cTMQV27bGFPcs2cOXOX1jqzw2Dd/QHygDjH/Tggr4PlQoDdwMLOrjsjI0P3xPr167u0fENLq57/wkY9/MkVeuOh0z1q+3y6mqu3SK6ukVxd4025bDabfnpljh786HL9fysOdmsdPckF7NQd1NWejuEvA25z3L8N+PDcBZRSJuB94DWt9dIetuc2gSYjr9xxCUmRZu58dQefHTrt6UhCiIuM1pr/W5HD37OO8t1Jg3j0qjRPR/qKnhb8p4E5SqnDwGzHY5RSmUqpxY5lbgQuA25XSu11/IzrYbtuERnkxxt3T2bIgCDufnUn63JLPR1JCHGR0Frz1PKD/GtjAbdNGcxvvjGq186C2Vk9Kvha6wqt9SytdarWerbWutIxfafW+i7H/f9orX211uOcfva6ILtbRJhNvHH3JIbHBnPv67v4NLvE05GEEH2czab5+YfZvLz5GN+blswvF4z06OGXHfHKb9peSFigif/cNYmR8aH84L+7eWennIJBCNG+ljYrj7yzj9e3Hufey1L42fwRfbLYgxT8DoUG+PL6nROZnBLJT5fu55lPcrHJl7OEEE4qGyzcvHgb7+05xY/nDOOxq9P6bLEHKfjnFezvy8t3XMJ3Jg3i71lH+cF/d9NoafN0LCFEH3CkrI5v/HUz+07W8MK3x/PQrNQ+XexBCv4F+Rp8+O03RvGz+emsOljCTf/cSmlts6djCSE8aOPh03zzb5/TaGljyT2TWTA23tOROkUKficopbhzejKLb80k/3Q9C/6yie0FlZ6OJYToZTabZvHGfG5/eQcDwwL44P5pTBjU7ndN+yQp+F0wa0QMS++bSoCvgUUvbuHPaw/LSdeE8BIV9S3c+eoOfvNxDrPSonnn+1NICO/dK1b1lBT8LhoRF8JHD07n2rHx/GH1IW5evE2GeITo57YcrWDeCxvZfKSCp64byT9vySDYv2unS+gLpOB3Q7C/L8/fNI5nF45hb2E18/60kfV5ZZ6OJYRwsTarjedWH+I7i7diNhl5//6p3Dolqc9/ONsRKfjdpJTixsxEPnpwGgOC/bjj5R384sMvqG+Ro3iE6A+OlNWz6MWtvLD2MN8an8BHD07vE2e87An3nRbSSwyNDuaD+6fx9MpcXt1yjDU5Zfzmm6OYOTza09GEEN3QarXxz8+O8sLaIwSYDPzxprF8c3yCp2O5hPTwXcDf18AvF4xk6fenEmAycMfLO/jRkj1UNlg8HU0I0QX7T1Zz7Z838ftPDzFnZAxrfnx5vyn2ID18l8oYHM7HD03nb+uP8resI2w4XM4vrk1nwdj4i3bMTwhv0GSx8tzqPP69qYABwX7869ZM5qSf93pOFyUp+C7mZzTw8JxhzBsdx6Pv7ueHS/by5vYT/Gx++kU//idEf6O15sO9p3hmZS5FNc18Z9IgHrs6jZCL8AiczpCC7ybDY4N5976pvLH9BM99msf8P2/ixoxEpgTbPB1NCAHsPlHFr7c2k1+zl1EDQ3h+0XgmJkd4OpZbScF3I4OP4pbJg1kwNp6/rDvMK58f40M0p0xHuHN6Mv6+Bk9HFMLrnKpu4pmVuSzbV0SYn+J3C8dw/YSEPnfueneQgt8LQgN8eeKadL47aTA/fm0jv1uVxxvbTvDIVcNYMHYgBi94oQnhaTWNrby48SiLNxYA8NAVQ0n3KWJuZqKHk/UeKfi9KCnKzEMT/DEljuK3H+fw8Fv7+PPaIzw0K5Vrx8ZL4RfCDWoaW/n3pnxe3nyMupY2FoyN59Gr0xgYFkBWVrGn4/UqKfgeMHVIFB89MJ1PD5bw/JrD/Oitvbyw9rAUfiFc6NxCP290LA/NSiUtNsTT0TxGCr6H+Pgo5o6K48r02K8V/gdnDeXaMfEYDfI1CSG6qrrRwkubCqTQt0MKvoe1V/gffmsfv191iNunJnHTxMR+e4iYEK6Uf7qelzcfY+mukzS1WqXQt0MKfh/hXPjX5JTy700F/HZFDs+vOcQNmYncMS2JwZFmT8cUok/RWvP50Qpe2lTA2twyTAYfrhsXz12XpjA8NtjT8focKfh9jI+P4sqRsVw5MpYvTtXw0qYC/rvtOK9uOcbsETHcOT2ZSckR8s1d4dWaW60s21fES5sKyC2pI9Js4oezUrl58mAGBPt5Ol6f1aOCr5SKAN4CkoBjwI1a66oOlg0BDgIfaK0f6Em73mLUwFCeu2kcj16dxutbjvPfbcdZfbCU4THB3HhJIt8cP5AIs8nTMYXoNYdK63hrRyHv7zlFZYOFtNhgnl04hgVj4+V7LZ3Q0x7+Y8BarfXTSqnHHI8f7WDZXwMbetieV4oJ8eeRq4bzwBVD+WDPKd7cUcivlx/kmZW5zBkZw02ZiUwfGuUVXxwR3qe+pY3l+4p4a2che05U42tQzEmP4buTBjN1SKS82+2Cnhb864AZjvuvAlm0U/CVUhlADPAJkNnDNr2Wv6+BRRMHsWjiIHJLas/2dD7eX8zAsAAWZiRwQ2bCRXfZNSHOpbVm94kqlmwv5OMDxTRarKRGB/HkNSP45viBRAbJsE13KK27f01WpVS11jrMcV8BVWceOy3jA6wDbgZmA5kdDekope4B7gGIiYnJWLJkSbez1dfXExQU1O3nu4urc7XaNLtLrWw42crBChsaSA3zYWKckUtiDYT5de7QTm/ZXq4iubqmM7m01pyos7G92Mr2kjZON2n8DTAxzshlCUaGhPq4vDd/MW+vjsycOXOX1rrdjvUFC75Sag0Q286sJ4BXnQu8UqpKa/2VS7grpR4AArXWzyqlbuc8Bd9ZZmam3rlz54UW61BWVhYzZszo9vPdxZ25TlY18v7uUyzfX0xeaR1KwaTkCOaPiefqUbHn7RV54/bqCcnVNefLdai0juX7ili+v5j88gYMPoqpQyK5dmw814yOw+znvmNLLsbtdSFKqQ4L/gW3pNZ69nlWXKqUitNaFyul4oD2Luw6BbhUKfUDIAgwKaXqtdaPdTK/6KSE8EAenJXKg7NSOVxax0f7i1m+v4gnP/iCXyzLZuqQSK4ZHccVI6KJDvb3dFzhpbTW5JXW8Wl2Kcv3F3GotB6lYHJyJHdemszckefvnIju6+mucxlwG/C04/bDcxfQWn/3zH2nHr4UezdLjQnmx3OCeXh2KgeLa1nuKP6PvXcAgDEJoVyRFs2stBhGxssXU4R7Waya9bllrM0tZV1OGUU1zQBckhTOrxaM5OrRsdIJ6QU9LfhPA28rpe4EjgM3AiilMoHva63v6uH6RQ8ppRgZH8rI+FD+56rhHCyudfzjlfGntYd5fs1hooP9SAu10jKghOlDo9z6Flp4j+KaJtbllrEup4yNhxqx2HYQ4GtgemoUD81KZWZaNDEhUuR7U4/+s7XWFcCsdqbvBL5W7LXWrwCv9KRN0X3Oxf+BK1Ipr28hK+8063PLWJdTzIbXd2Ey+DBuUBhTUiKZOiSScYPC8DPK8c3iwqoaLGwrqGDL0Qo+P1rB4bJ6ABLCA7g0wcitsycwKTlCjpf3IOnKebGoID8WZiSwMCOBNevWEzhoNFmHTvP50XJeWHeYP609jL+vDxmDw5mSEsmUIVGMSQjFV07qJoDa5la251fy+dEKtuRXkFtSi9YQ4GsgMymc6zMSuCItmtToID777DMuHzbA05G9nhR8AYDRRzF1aBRTh0YB9lPLbiuw/yNvOVrB7z89BBwi0GQgY3A44xPDGDcojHGJ4fJtXy+gteZ4RSN7C6vZc6KK3SeqyS6qwabBZPQhY1A4D88extQhkYxJCMNklE5BXyQFX7QrNND37Dl9ACrqW9hWUMmWoxXsPF7FX9YfweY4ondwZKB9B5AYxvhB4YyIC5F/+ItcTVMr+wqr2XOimr2FVewtrKaqsRWAQJOB0QPtw4JTUiIZPyhMhmkuElLwRadEBvkxb3Qc80bHAdDQ0saBUzXsLaxm74lqtuRX8MHeIsDe40uLDXb8hJAWF8yI2BDC5Z1An2OzaU5VN5FTXEtuSR25JbXkFNdRUN4AgFKQGh3EnPQYxg8KZ1xiGMNiguUiPRcpKfiiW8x+RianRDI5JfLstOKaJvaeqGZPYTU5xbWsyy3j7Z0nz86PCfH7yg5gaHQQSVFmguSoILfTWnO6voVj5Y3kldaR6yjweSV11Le0AfbinhRpJi02mOsnDGT8oHDGJIQSLNdj6DfkP024TFxoAHGjA7ja8S4A4HRdC7klteQW15HjuN1ytAKL1XZ2maggP5KjAkmKNJMUZSYlyn6bJOf/7xKtNXUWza7jlRSUN3KsvIGCigaOldt/GizWs8uG+BtJiwvh+gkDSYsLIS02mGExwXJIbj8nf13hVgOC/RgQPIBLU788QqPVaiP/dAP5p+udClIjWYdOc3rXya88P9RPMfiLTcSF+tt3KKH+xIUFEO+4jQ7285qjhhotbRTXNFNc3UxRTRMlNc0U1zRRVN1MSY19Wl1zG6zbAoDBR5EQHkBSpJlLkiJIigwkKcrMsJhg4kL95SyTXkgKvuh1vgYfhscGt3tFovqWNnvP1NEr3ZGTD4Em8k83sPlIxdnhhzN8lP0dQoTZRITZRLjZRESg6SuPI80mwgNNBPsbMfsZCTQZ8DO6/kRcnWWzaZparTRY2mhssVLT1Eplg4XKBgtVjZaz9888rmiwUFFvoaap9WvrigoyERcawKDIQCanRGCpKmbO5DEkRZpJCA+UD8/FV0jBF31KkJ+RUQNDGTUwFIAswylmzJh4dn5dcyvFNc0UVTc5erXNlNY0U9looarBQk5xLZUNFqobv14cnRl8FIEmA2aTkUA/+63Zz0CArwGDjw9GH4XBoOy3Pmdufc4+PnmyhTXVB7DaNG1Wbb+1nbm1YbVpLFZNk6WNhhYrjZY2GixWGlraaHQaWmmP0Ud9ucMKNDEiNoTIIBOxof5n3+nEhwYQHeL3taNjsrLKmZEW082tL/o7KfjiohLs70uwvy/DYs5/vdI2q42aplZ7D7ne3lOua7YX2zM966/cOopxRYPFqYDbzink9ttWqw2btQ3/ipIvdwYGhdFph2A02HcQZpOB+DATZj8DZj8jZpOBQMfOJdBkf7cRGuD75TsRs4lgP6MMtwi3kIIv+iWjwYfIID8ig/wYGu369ffV0+oKcT4ywCeEEF5CCr4QQngJKfhCCOElpOALIYSXkIIvhBBeQgq+EEJ4CaW19nSGdimlTmO/bGJ3RQHlLorjSpKrayRX10iurumPuQZrrdu92kyfLfg9pZTaqbXO9HSOc0murpFcXSO5usbbcsmQjhBCeAkp+EII4SX6c8F/0dMBOiC5ukZydY3k6hqvytVvx/CFEEJ8VX/u4QshhHAiBV8IIbzERV3wlVI3KKWylVI2pVSHhzAppeYqpfKUUkeUUo85TU9WSm1zTH9LKWVyUa4IpdRqpdRhx214O8vMVErtdfppVkp9wzHvFaVUgdO8cb2Vy7Gc1antZU7TPbm9ximltjj+3vuVUjc5zXPZ9uroteI038/xux9xbIskp3mPO6bnKaWu6m6Gbub6sVLqoGPbrFVKDXaa1+7fsxez3a6UOu2U4S6nebc5/u6HlVK39WKmPzrlOaSUqnaa57btpZR6SSlVppT6ooP5Sin1giP3fqXUBKd5Pd9WWuuL9gcYAQwHsoDMDpYxAEeBFMAE7APSHfPeBhY57v8DuM9FuZ4FHnPcfwx45gLLRwCVQKDj8SvAQjdsr07lAuo7mO6x7QUMA1Id9+OBYiDMldvrfK8Vp2V+APzDcX8R8JbjfrpjeT8g2bEeg4u2T2dyzXR6/dx3Jtf5/p69mO124C/tPDcCyHfchjvuh/dGpnOWfxB4qZe212XABOCLDubPA1YCCpgMbHPltrqoe/ha6xytdd4FFpsIHNFa52utLcAS4DqllAKuAJY6lnsV+IaLol3nWF9n17sQWKm1bnRR+x3paq6zPL29tNaHtNaHHfeLgDKg3W8T9kC7r5XzZF0KzHJsm+uAJVrrFq11AXDEsb5eyaW1Xu/0+tkKJLio7R5nO4+rgNVa60qtdRWwGpjrgUzfBt50QbsXpLXegL1z15HrgNe03VYgTCkVh4u21UVd8DtpIFDo9PikY1okUK21bjtnuivEaK2LHfdLgAtdZHQRX3/B/dbxlu6PSim/Xs7lr5TaqZTaemaYiT60vZRSE7H33I46TXbF9urotdLuMo5tUYN923Tmud3V1XXfib2XeEZ7f09X6Wy26x1/n6VKqcQuPtddmXAMfSUD65wmu3N7XUhH2V2yrfr8JQ6VUmuA2HZmPaG1/rC385xxvlzOD7TWWinV4bGvjr33aGCV0+THsRc+E/bjcR8FnurFXIO11qeUUinAOqXUAeyFrdtcvL1eB27TWtsck7u9vfobpdTNQCZwudPkr/09tdZH21+DW3wEvKm1blFK3Yv9HdIVvdj++SwClmqtna8s7+nt5TZ9vuBrrWf3cBWngESnxwmOaRXY3y4ZHT21M9N7nEspVaqUitNaFzsKVNl5VnUj8L7WutVp3Wd6uy1KqZeBR3ozl9b6lOM2XymVBYwH3sXD20spFQJ8jH1nv9Vp3d3eXufo6LXS3jInlVJGIBT7a6kzz+2uTq1bKTUb+w70cq11y5npHfw9XVXALphNa13h9HAx9s9szjx3xjnPzeqNTE4WAfc7T3Dz9rqQjrK7ZFt5w5DODiBV2Y8wMWH/Ay/T9k9C1mMfPwe4DXDVO4ZljvV1Zr1fGz90FL0z4+bfANr9RN8duZRS4WeGRJRSUcA04KCnt5fjb/c+9vHNpefMc9X2ave1cp6sC4F1jm2zDFik7EfxJAOpwPZu5uhyLqXUeOCfwAKtdZnT9Hb/ni7K1dlscU4PFwA5jvurgCsdGcOBK/nqO123ZXLkSsP+AegWp2nu3l4Xsgy41XG0zmSgxtGhcc22cten0b3xA3wT+1hWC1AKrHJMjwdWOC03DziEfS/9hNP0FOz/lEeAdwA/F+WKBNYCh4E1QIRjeiaw2Gm5JOx7bp9znr8OOIC9cP0HCOqtXMBUR9v7HLd39oXtBdwMtAJ7nX7GuXp7tfdawT48tMBx39/xux9xbIsUp+c+4XheHnC1i1/rF8q1xvE/cGbbLLvQ37MXs/0/INuRYT2Q5vTc7zm25RHgjt7K5Hj8S+Dpc57n1u2FvXNX7Hgtn8T+ecv3ge875ivgr47cB3A6+tAV20pOrSCEEF7CG4Z0hBBCIAVfCCG8hhR8IYTwElLwhRDCS0jBF0IILyEFXwghvIQUfCGE8BL/HxVUdgI2AI4mAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#例1\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "t = np.linspace(0,1,101) # パラメータ t を[0,1]の分割点とする。\n",
    "\n",
    "x = np.cos(2*np.pi*t) # パラメータ tのリスト　に対する x 座標のリスト\n",
    "y = 1/2*np.sin(2*np.pi*t) # パラメータ tのリスト　に対する y 座標のリスト\n",
    "\n",
    "plt.plot(x,y,'-')\n",
    "plt.grid()\n",
    "plt.gca().set_aspect('equal')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 演習1\n",
    "\n",
    "- 以下のパラメータ表示が与える曲線を描いてください。ただし、$n=1,2,3,4$ とすること。\n",
    "\n",
    "$$\n",
    "x(t) = \\cos^n(2\\pi t), \\quad y(t) = \\sin^n(2\\pi t) \\quad (t \\in [0,1])\n",
    "$$\n",
    "\n",
    "- $x(t)$, $y(t)$を自由に修正して、曲線の形を確認してください。例えば、\n",
    "\n",
    "$$\n",
    "x(t) = \\cos^5(2\\pi t), \\quad y(t) = \\sin(2\\pi t) \\quad (t \\in [0,1])\n",
    "$$\n",
    "\n",
    "$$\n",
    "x(t) = \\cos(5\\pi t), \\quad y(t) = \\sin(2\\pi t) \\quad (t \\in [0,2])\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#演習1のコードをここに書いてください。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "## 2. ベジェ曲線のパラメータ表示\n",
    "\n",
    "実際の応用では、2次元平面上の曲線を自由に表現するために、以下のパラメータ表示で与えられるベジェ曲線が使用される。\n",
    "\n",
    "$$\n",
    "F(t) = (X(t), Y(t))\n",
    "$$\n",
    "\n",
    "ここで、\n",
    "$$\n",
    "X(t) = X_0 B_{0,n}(t) + X_1 B_{1,n}(t) + \\cdots + X_n B_{n,n}(t) = \\sum_{i=0}^n X_i B_{i,n}(t)\n",
    "$$\n",
    "$$\n",
    "Y(t) = Y_0 B_{0,n}(t) + Y_1 B_{1,n}(t) + \\cdots + Y_n B_{n,n}(t) = \\sum_{i=0}^n Y_i B_{i,n}(t)\n",
    "$$\n",
    "\n",
    "また、制御点は以下の点となる。\n",
    "$$\n",
    "P_0=(X_0,Y_0), \\quad P_1 = (X_1,Y_1),\\quad \\cdots, \\quad P_n=(X_n,Y_n)\n",
    "$$\n",
    "\n",
    "\n",
    "### 3次ベジェ曲線の例\n",
    "\n",
    "ホームページにあるベジェ曲線の補足資料（3次ベジェ曲線の例）を参考にしてください。\n",
    "\n",
    "以下の制御点で定義されるベジェ曲線を描画します。\n",
    "$$\n",
    "P_0 = (0,0), \\quad P_1 = (0.5,1), \\quad P_0 = (2,-1), \\quad P_3=(3,0)\n",
    "$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AxxJY8bAZZfZXcMffgiVKkX28110eSJwLomMHGm/2K+4An76KTKf+eSTcOWVcNpp1klcoUJkPteVHE8EziWRsmXtbKB8eZsUPjMzvM975BHo29fmFn7nHdh//0hE6UqaJwLnkky9etap+9NP0KdP8YvTjRxpl5rOO8/mQShXLrJxupLjicC5JNSxI9xzjyWEJ5/c9+3vuQcGDIAePSA93aqJuvjlicC5JDVggN35278/fP110bZRhcGDYcgQ6NnTqpyWCatimYsFngicS1KlSsH48Xap6PzzYd26va+vCrffDvfea53Nzz8PpUuXTKwuujwROJfEqlWz4nS//273AOzenf96qnbm8OCDcO218J//WCJxicG/SueSXFoaPPYYTJpkv/bzys62g//o0TbHweOPexJINP51Oue48kq75j90qCWEHLt323tPP22XhUaNsvpFLrGElQhE5HwR+VFEskWk9V7W6yQiC0VkiYgMyLW8iYh8HVr+qoj42APnAiACTz0Fhx1mw0Hr14eOHU+kShUrTTFkCNx/vyeBRBXuGcE84Fzgi4JWEJHSwBPA6UBL4EIRyZmyeiTwsKo2AzYC/wozHudcMZUvD716wdatsHIlqApbt9pNaC1aeBJIZGElAlVdoKoLC1mtDbBEVZeq6k4gHegamrC+I/BGaL1x2AT2zrmAPPbYnst27YKBA0s+FldySmIEcD0gdxX034BjgRrAJlXNyrV8j3mNc4hIH6APQGpqKhkZGcUKJjMzs9jbxppEaUuitAPivy0rVpwI7PnTf8UKJSNjaskHFCHx/r3kiFY7Ck0EIvIZUDuftwaq6rsRj6gAqvoM8AxA69attX379sX6nIyMDIq7baxJlLYkSjsg/tvSsCEsX57fconrdsX795IjWu0oNBGo6slh7mMl0CDX6/qhZeuBqiJSJnRWkLPcOReQ4cOt/tC2bX8tK18+mDmPXckpieGjM4HmoRFCKUAPYKKqKjAF6BZarxdQYmcYzrk9XXwxPPMMNGoEIkqjRvb64ouDjsxFU7jDR88Rkd+A44APRGRSaHldEfkQIPRrvx8wCVgAvKaqP4Y+4nbgJhFZgvUZPBdOPM658F18MSxbBpMnT2XZMk8CySCszmJVfRt4O5/lq4Azcr3+EPgwn/WWYqOKnHPOBcTvLHbOuSTnicA555KcJwLnnEtyngiccy7JiRZ3wtIAichaIJ/bXoqkJlDIFBxxI1HakijtAG9LrEqUtoTbjkaqWivvwrhMBOEQkVmqWmCl1HiSKG1JlHaAtyVWJUpbotUOvzTknHNJzhOBc84luWRMBM8EHUAEJUpbEqUd4G2JVYnSlqi0I+n6CJxzzv1dMp4ROOecy8UTgXPOJbmETQQi0klEForIEhEZkM/75UTk1dD7X4tI4wDCLFQR2tFbRNaKyJzQ44og4iwKERkrIn+IyLwC3hcReTTU1u9F5OiSjrEoitCO9iKyOdd3MqSkYywqEWkgIlNEZL6I/CgiN+SzTsx/L0VsR1x8LyKyn4h8IyJzQ20Zms86kT1+qWrCPYDSwM9AUyAFmAu0zLPOtcDToec9gFeDjruY7egNPB50rEVszwnA0cC8At4/A/gImyuxLfB10DEXsx3tgfeDjrOIbakDHB16XglYlM9/YzH/vRSxHXHxvYT+nSuGnpcFvgba5lknosevRD0jaAMsUdWlqroTSAe65lmnKzAu9PwN4CQR2XOy1mAVpR1xQ1W/ADbsZZWuwHg1M7AZ7OqUTHRFV4R2xA1VXa2q34aeb8HmDMk7d3jMfy9FbEdcCP07Z4Zelg098o7qiejxK1ETQT3g11yvf2PP/yj+t47a5DmbsclxYklR2gFwXuiU/Q0RaZDP+/GiqO2NB8eFTu0/EpFDgw6mKEKXF47CfoHmFlffy17aAXHyvYhIaRGZA/wBfKqqBX4nkTh+JWoiSCbvAY1V9QjgU/76leCC8y1W0+VI4DHgnWDDKZyIVATeBG5U1f8GHU9xFdKOuPleVHW3qrbC5nJvIyKHRXN/iZoIVgK5fxnXDy3Ldx0RKQNUAdaXSHRFV2g7VHW9qu4IvRwDpJVQbNFQlO8t5qnqf3NO7dVm5ysrIjUDDqtAIlIWO3hOUNW38lklLr6XwtoRb98LgKpuwuZ275TnrYgevxI1EcwEmotIExFJwTpTJuZZZyLQK/S8GzBZQz0vMaTQduS5VtsFuzYaryYCPUOjVNoCm1V1ddBB7SsRqZ1zvVZE2mD/n8XajwzARgRhc4UvUNVRBawW899LUdoRL9+LiNQSkaqh5/sDpwA/5VktosevsOYsjlWqmiUi/YBJ2Mibsar6o4gMA2ap6kTsP5oXRWQJ1vHXI7iI81fEdlwvIl2ALKwdvQMLuBAi8go2cqOmiPwG3IV1hKGqT2PzWp8BLAG2AZcFE+neFaEd3YBrRCQL2A70iMEfGTnaAZcCP4SuSQPcCTSEuPpeitKOePle6gDjRKQ0lqxeU9X3o3n88hITzjmX5BL10pBzzrki8kTgnHNJzhOBc84lOU8EzjmX5DwROOdckvNE4JxzSc4TgXPOJbn/ByhvqRZC7dm4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#制御点のリストと描画\n",
    "P = np.array([[0,0], [0.5,1], [2,-1], [3,0]]).T\n",
    "\n",
    "plt.plot(P[0,:],P[1,:],'b-o')\n",
    "\n",
    "#Bernstein基底関数の定義\n",
    "import math\n",
    "def Bernstein(i,n,x):\n",
    "    value = math.factorial(n) / ( math.factorial(i) * math.factorial(n-i) ) * x**i * (1-x)**(n-i)\n",
    "    return value\n",
    "\n",
    "#ベジェ曲線のパラメータ表示\n",
    "t = np.linspace(0,1,101)\n",
    "X = 0; Y = 0\n",
    "\n",
    "for i in range(4):\n",
    "    X += Bernstein(i,3,t)*P[0,i]\n",
    "    Y += Bernstein(i,3,t)*P[1,i]\n",
    "    \n",
    "plt.plot(X,Y,'r-')\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベジェ曲線の描画関数\n",
    "\n",
    "以下のコードでは、与えられる点のリストに対応するベジェ曲線を描画するdraw_bezierという関数を定義します。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AxxJY8bAZZfZXcMffgiVKkX28110eSJwLomMHGm/2K+4An76KTKf+eSTcOWVcNpp1klcoUJkPteVHE8EziWRsmXtbKB8eZsUPjMzvM975BHo29fmFn7nHdh//0hE6UqaJwLnkky9etap+9NP0KdP8YvTjRxpl5rOO8/mQShXLrJxupLjicC5JNSxI9xzjyWEJ5/c9+3vuQcGDIAePSA93aqJuvjlicC5JDVggN35278/fP110bZRhcGDYcgQ6NnTqpyWCatimYsFngicS1KlSsH48Xap6PzzYd26va+vCrffDvfea53Nzz8PpUuXTKwuujwROJfEqlWz4nS//273AOzenf96qnbm8OCDcO218J//WCJxicG/SueSXFoaPPYYTJpkv/bzys62g//o0TbHweOPexJINP51Oue48kq75j90qCWEHLt323tPP22XhUaNsvpFLrGElQhE5HwR+VFEskWk9V7W6yQiC0VkiYgMyLW8iYh8HVr+qoj42APnAiACTz0Fhx1mw0Hr14eOHU+kShUrTTFkCNx/vyeBRBXuGcE84Fzgi4JWEJHSwBPA6UBL4EIRyZmyeiTwsKo2AzYC/wozHudcMZUvD716wdatsHIlqApbt9pNaC1aeBJIZGElAlVdoKoLC1mtDbBEVZeq6k4gHegamrC+I/BGaL1x2AT2zrmAPPbYnst27YKBA0s+FldySmIEcD0gdxX034BjgRrAJlXNyrV8j3mNc4hIH6APQGpqKhkZGcUKJjMzs9jbxppEaUuitAPivy0rVpwI7PnTf8UKJSNjaskHFCHx/r3kiFY7Ck0EIvIZUDuftwaq6rsRj6gAqvoM8AxA69attX379sX6nIyMDIq7baxJlLYkSjsg/tvSsCEsX57fconrdsX795IjWu0oNBGo6slh7mMl0CDX6/qhZeuBqiJSJnRWkLPcOReQ4cOt/tC2bX8tK18+mDmPXckpieGjM4HmoRFCKUAPYKKqKjAF6BZarxdQYmcYzrk9XXwxPPMMNGoEIkqjRvb64ouDjsxFU7jDR88Rkd+A44APRGRSaHldEfkQIPRrvx8wCVgAvKaqP4Y+4nbgJhFZgvUZPBdOPM658F18MSxbBpMnT2XZMk8CySCszmJVfRt4O5/lq4Azcr3+EPgwn/WWYqOKnHPOBcTvLHbOuSTnicA555KcJwLnnEtyngiccy7JiRZ3wtIAichaIJ/bXoqkJlDIFBxxI1HakijtAG9LrEqUtoTbjkaqWivvwrhMBOEQkVmqWmCl1HiSKG1JlHaAtyVWJUpbotUOvzTknHNJzhOBc84luWRMBM8EHUAEJUpbEqUd4G2JVYnSlqi0I+n6CJxzzv1dMp4ROOecy8UTgXPOJbmETQQi0klEForIEhEZkM/75UTk1dD7X4tI4wDCLFQR2tFbRNaKyJzQ44og4iwKERkrIn+IyLwC3hcReTTU1u9F5OiSjrEoitCO9iKyOdd3MqSkYywqEWkgIlNEZL6I/CgiN+SzTsx/L0VsR1x8LyKyn4h8IyJzQ20Zms86kT1+qWrCPYDSwM9AUyAFmAu0zLPOtcDToec9gFeDjruY7egNPB50rEVszwnA0cC8At4/A/gImyuxLfB10DEXsx3tgfeDjrOIbakDHB16XglYlM9/YzH/vRSxHXHxvYT+nSuGnpcFvgba5lknosevRD0jaAMsUdWlqroTSAe65lmnKzAu9PwN4CQR2XOy1mAVpR1xQ1W/ADbsZZWuwHg1M7AZ7OqUTHRFV4R2xA1VXa2q34aeb8HmDMk7d3jMfy9FbEdcCP07Z4Zelg098o7qiejxK1ETQT3g11yvf2PP/yj+t47a5DmbsclxYklR2gFwXuiU/Q0RaZDP+/GiqO2NB8eFTu0/EpFDgw6mKEKXF47CfoHmFlffy17aAXHyvYhIaRGZA/wBfKqqBX4nkTh+JWoiSCbvAY1V9QjgU/76leCC8y1W0+VI4DHgnWDDKZyIVATeBG5U1f8GHU9xFdKOuPleVHW3qrbC5nJvIyKHRXN/iZoIVgK5fxnXDy3Ldx0RKQNUAdaXSHRFV2g7VHW9qu4IvRwDpJVQbNFQlO8t5qnqf3NO7dVm5ysrIjUDDqtAIlIWO3hOUNW38lklLr6XwtoRb98LgKpuwuZ275TnrYgevxI1EcwEmotIExFJwTpTJuZZZyLQK/S8GzBZQz0vMaTQduS5VtsFuzYaryYCPUOjVNoCm1V1ddBB7SsRqZ1zvVZE2mD/n8XajwzARgRhc4UvUNVRBawW899LUdoRL9+LiNQSkaqh5/sDpwA/5VktosevsOYsjlWqmiUi/YBJ2Mibsar6o4gMA2ap6kTsP5oXRWQJ1vHXI7iI81fEdlwvIl2ALKwdvQMLuBAi8go2cqOmiPwG3IV1hKGqT2PzWp8BLAG2AZcFE+neFaEd3YBrRCQL2A70iMEfGTnaAZcCP4SuSQPcCTSEuPpeitKOePle6gDjRKQ0lqxeU9X3o3n88hITzjmX5BL10pBzzrki8kTgnHNJzhOBc84lOU8EzjmX5DwROOdckvNE4JxzSc4TgXPOJbn/ByhvqRZC7dm4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#制御点のリストと描画\n",
    "P = np.array([[0,0], [0.5,1], [2,-1], [3,0]]).T\n",
    "\n",
    "#Bernstein基底関数の定義\n",
    "import math\n",
    "def Bernstein(i,n,x):\n",
    "    value = math.factorial(n) / ( math.factorial(i) * math.factorial(n-i) ) * x**i * (1-x)**(n-i)\n",
    "    return value\n",
    "\n",
    "def draw_bezier(P):\n",
    "    import numpy as np\n",
    "    import matplotlib.pyplot as plt\n",
    "\n",
    "    plt.plot(P[0,:],P[1,:],'b-o')\n",
    "\n",
    "    #ベジェ曲線のパラメータ表示\n",
    "    t = np.linspace(0,1,101)\n",
    "    X = 0; Y = 0\n",
    "\n",
    "    for i in range(4):\n",
    "        X += Bernstein(i,3,t)*P[0,i]\n",
    "        Y += Bernstein(i,3,t)*P[1,i]\n",
    "\n",
    "    plt.plot(X,Y,'r-')\n",
    "    plt.grid()\n",
    "    \n",
    "draw_bezier(P)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 演習2\n",
    "\n",
    "Windowsのツール「ペイント」で曲線を利用した絵を描いてください。また、その際の制御点の座標を記録して、Pythonのコードでベジェ曲線を描いて絵を再現してください。\n",
    "\n",
    "特に、以前の授業で描いた「家」の飾りとして、太陽、川、坂の輪郭などを描いてください。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 演習2のコード\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 補足：制御点の座標のファイルへの保存\n",
    "\n",
    "前回と同様にNumpyのsavetxtとloadtxtを用いれば、以下のコードのように簡単に制御点の座標（2次元配列）をテキストファイルに書き込んで保存し、テキストファイルから読み込んだ制御点の座標に対応するベジェ曲線を描くことができます。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "P = np.array([[0,0], [0.5,1], [2,-1], [3,0]]).T\n",
    "\n",
    "np.savetxt('control_points.txt',P)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.000000000000000000e+00 5.000000000000000000e-01 2.000000000000000000e+00 3.000000000000000000e+00\n",
      "0.000000000000000000e+00 1.000000000000000000e+00 -1.000000000000000000e+00 0.000000000000000000e+00\n"
     ]
    }
   ],
   "source": [
    "!cat control_points.txt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0.   0.5  2.   3. ]\n",
      " [ 0.   1.  -1.   0. ]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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AxxJY8bAZZfZXcMffgiVKkX28110eSJwLomMHGm/2K+4An76KTKf+eSTcOWVcNpp1klcoUJkPteVHE8EziWRsmXtbKB8eZsUPjMzvM975BHo29fmFn7nHdh//0hE6UqaJwLnkky9etap+9NP0KdP8YvTjRxpl5rOO8/mQShXLrJxupLjicC5JNSxI9xzjyWEJ5/c9+3vuQcGDIAePSA93aqJuvjlicC5JDVggN35278/fP110bZRhcGDYcgQ6NnTqpyWCatimYsFngicS1KlSsH48Xap6PzzYd26va+vCrffDvfea53Nzz8PpUuXTKwuujwROJfEqlWz4nS//273AOzenf96qnbm8OCDcO218J//WCJxicG/SueSXFoaPPYYTJpkv/bzys62g//o0TbHweOPexJINP51Oue48kq75j90qCWEHLt323tPP22XhUaNsvpFLrGElQhE5HwR+VFEskWk9V7W6yQiC0VkiYgMyLW8iYh8HVr+qoj42APnAiACTz0Fhx1mw0Hr14eOHU+kShUrTTFkCNx/vyeBRBXuGcE84Fzgi4JWEJHSwBPA6UBL4EIRyZmyeiTwsKo2AzYC/wozHudcMZUvD716wdatsHIlqApbt9pNaC1aeBJIZGElAlVdoKoLC1mtDbBEVZeq6k4gHegamrC+I/BGaL1x2AT2zrmAPPbYnst27YKBA0s+FldySmIEcD0gdxX034BjgRrAJlXNyrV8j3mNc4hIH6APQGpqKhkZGcUKJjMzs9jbxppEaUuitAPivy0rVpwI7PnTf8UKJSNjaskHFCHx/r3kiFY7Ck0EIvIZUDuftwaq6rsRj6gAqvoM8AxA69attX379sX6nIyMDIq7baxJlLYkSjsg/tvSsCEsX57fconrdsX795IjWu0oNBGo6slh7mMl0CDX6/qhZeuBqiJSJnRWkLPcOReQ4cOt/tC2bX8tK18+mDmPXckpieGjM4HmoRFCKUAPYKKqKjAF6BZarxdQYmcYzrk9XXwxPPMMNGoEIkqjRvb64ouDjsxFU7jDR88Rkd+A44APRGRSaHldEfkQIPRrvx8wCVgAvKaqP4Y+4nbgJhFZgvUZPBdOPM658F18MSxbBpMnT2XZMk8CySCszmJVfRt4O5/lq4Azcr3+EPgwn/WWYqOKnHPOBcTvLHbOuSTnicA555KcJwLnnEtyngiccy7JiRZ3wtIAichaIJ/bXoqkJlDIFBxxI1HakijtAG9LrEqUtoTbjkaqWivvwrhMBOEQkVmqWmCl1HiSKG1JlHaAtyVWJUpbotUOvzTknHNJzhOBc84luWRMBM8EHUAEJUpbEqUd4G2JVYnSlqi0I+n6CJxzzv1dMp4ROOecy8UTgXPOJbmETQQi0klEForIEhEZkM/75UTk1dD7X4tI4wDCLFQR2tFbRNaKyJzQ44og4iwKERkrIn+IyLwC3hcReTTU1u9F5OiSjrEoitCO9iKyOdd3MqSkYywqEWkgIlNEZL6I/CgiN+SzTsx/L0VsR1x8LyKyn4h8IyJzQ20Zms86kT1+qWrCPYDSwM9AUyAFmAu0zLPOtcDToec9gFeDjruY7egNPB50rEVszwnA0cC8At4/A/gImyuxLfB10DEXsx3tgfeDjrOIbakDHB16XglYlM9/YzH/vRSxHXHxvYT+nSuGnpcFvgba5lknosevRD0jaAMsUdWlqroTSAe65lmnKzAu9PwN4CQR2XOy1mAVpR1xQ1W/ADbsZZWuwHg1M7AZ7OqUTHRFV4R2xA1VXa2q34aeb8HmDMk7d3jMfy9FbEdcCP07Z4Zelg098o7qiejxK1ETQT3g11yvf2PP/yj+t47a5DmbsclxYklR2gFwXuiU/Q0RaZDP+/GiqO2NB8eFTu0/EpFDgw6mKEKXF47CfoHmFlffy17aAXHyvYhIaRGZA/wBfKqqBX4nkTh+JWoiSCbvAY1V9QjgU/76leCC8y1W0+VI4DHgnWDDKZyIVATeBG5U1f8GHU9xFdKOuPleVHW3qrbC5nJvIyKHRXN/iZoIVgK5fxnXDy3Ldx0RKQNUAdaXSHRFV2g7VHW9qu4IvRwDpJVQbNFQlO8t5qnqf3NO7dVm5ysrIjUDDqtAIlIWO3hOUNW38lklLr6XwtoRb98LgKpuwuZ275TnrYgevxI1EcwEmotIExFJwTpTJuZZZyLQK/S8GzBZQz0vMaTQduS5VtsFuzYaryYCPUOjVNoCm1V1ddBB7SsRqZ1zvVZE2mD/n8XajwzARgRhc4UvUNVRBawW899LUdoRL9+LiNQSkaqh5/sDpwA/5VktosevsOYsjlWqmiUi/YBJ2Mibsar6o4gMA2ap6kTsP5oXRWQJ1vHXI7iI81fEdlwvIl2ALKwdvQMLuBAi8go2cqOmiPwG3IV1hKGqT2PzWp8BLAG2AZcFE+neFaEd3YBrRCQL2A70iMEfGTnaAZcCP4SuSQPcCTSEuPpeitKOePle6gDjRKQ0lqxeU9X3o3n88hITzjmX5BL10pBzzrki8kTgnHNJzhOBc84lOU8EzjmX5DwROOdckvNE4JxzSc4TgXPOJbn/ByhvqRZC7dm4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "P = np.loadtxt('control_points.txt')\n",
    "print(P)\n",
    "\n",
    "draw_bezier(P)"
   ]
  }
 ],
 "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.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
