{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## This notebook plots a planar curve given its curvature.\n",
    "\n",
    "\n",
    "First import the python packages we will be using:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math               #basic mathematical functions.\n",
    "import numpy as np        #numerical methods package.\n",
    "from scipy.integrate import odeint #numerical ode integrater\n",
    "import matplotlib.pyplot as plt    #plotting library."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next input the domain $[a,b]$, of the curvataure function and\n",
    "the curvature function $k(s)$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#edit the values of a and b as required.\n",
    "a = 0\n",
    "b = 2*np.pi\n",
    "def k(s):\n",
    "    \"The curvature.  Edit as needed.\"\n",
    "    return s\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If $\\mathbf c\\colon [a,b]\\to \\mathbb R^2$ is a unit speed\n",
    "curve with curvature $k$ and given by $\\mathbf c(s) = (x(s),y(s))$, then the unit tangent is\n",
    "$$\n",
    "\\mathbf t = \\frac{d\\mathbf c}{ds} = \\left( \\frac{dx}{ds},\\frac{dy}{ds}\\right)\n",
    "$$\n",
    "and the unit normal is \n",
    "$$\n",
    "\\mathbf n = \\left( - \\frac{dy}{ds} , \\frac{dx}{ds}\\right).\n",
    "$$\n",
    "The basic equation defining curvature is\n",
    "$$\n",
    " \\frac{d \\mathbf t}{ds} = k(s) \\mathbf n \n",
    "$$\n",
    "In terms of the functions $x(s)$ and $y(s)$ and usng\n",
    "$\\mathbf c'(s)=\\mathbf t$ this becomes \n",
    "$$\n",
    "\\left( \\frac{d^2x}{ds^2}, \\frac{d^2y}{ds^2}\\right)\n",
    "  = k(s)\\left(- \\frac{dy}{ds}, \\frac{dx}{ds}\\right) .\n",
    "$$\n",
    "Equating the components gives\n",
    "\\begin{align}\n",
    "\\frac{d^2x}{ds^2}&= -k(s) \\frac{dy}{ds}\\\\\n",
    "\\frac{d^2y}{ds^2}&= k(s) \\frac{dx}{ds}.\n",
    "\\end{align}\n",
    "Unfortunately the numerical differential equation solver we are using \n",
    "does not like working directly with second (or higher) derivatives.\n",
    "But it does not mind have large numbers of dependent variables.\n",
    "So we just add some variables for the first derivatives.\n",
    "As $\\mathbf c'(x) = (x'(s),y'(s)) = \\mathbf t(s) =(t_1(s),t_2(s))$\n",
    "we use $t_1$ and $t_2$ as names for the first derivatives of $x$\n",
    "and $y$.  The the system of differential equations relating\n",
    "$x(s)$ and $y(s)$ to the curvature $k(s)$ becomes\n",
    "\\begin{align}\n",
    "\\frac{dx}{ds}&= t_1\\\\\n",
    "\\frac{dy}{ds}&= t_2\\\\\n",
    "\\frac{dt_1}{ds}&= -k(s) t_2\\\\\n",
    "\\frac{dt_2}{ds}&= k(s)t_1.\n",
    "\\end{align}\n",
    "The differential equation integrator wants all these \n",
    "variables packed into one list.  We call call this \n",
    "list $C=[x,y,t_1,t_2]$.  Here is the python code that defines\n",
    "the equation for the curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def curve_eqn(C,s):\n",
    "    \"\"\"\"\n",
    "    Given input a list [C[0],C[1],C[2],C[3]] = [x,y,t_1,t_2]\n",
    "    this function outputs the values of [dx/ds,dy/ds,dt_1/ds,dt_2/ds]\n",
    "    as given by the differential euqations above.\n",
    "    \"\"\"\n",
    "    return [C[2],C[3], -k(s)*C[3],k(s)*C[2]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tell python the initial conditions for the equation (we use\n",
    "$\\mathbf c(a) = (0,0)$ and $\\mathbf t(a) = (1,0)$) and the \n",
    "domain."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "C0 = [0,0,1,0]  #the initial condition\n",
    "domain = np.linspace(a,b,500) # the domain divided into 500 pieces."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Have the numerical differential equation package find the solution\n",
    "and then store the $x$ and $y$ values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "curve = odeint(curve_eqn,C0,domain)\n",
    "x = curve[:,0]\n",
    "y = curve[:,1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And plot the curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.06911586700114013,\n",
       " 1.4514332070239426,\n",
       " -0.06327408969824998,\n",
       " 1.3287558836632496)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,y)\n",
    "plt.axis('equal')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
