Skip to content

Instantly share code, notes, and snippets.

@bnaul
Created August 19, 2016 19:23
Show Gist options
  • Save bnaul/87dcbc0636ceac3c259570c9b67d77d1 to your computer and use it in GitHub Desktop.
Save bnaul/87dcbc0636ceac3c259570c9b67d77d1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRHzs/wP/0qAcNIst5QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d32b0f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.rcParams[\"figure.figsize\"] = (6, 6)\n",
"\n",
"dt = 1e-6\n",
"t = np.arange(0., 1., step=dt)\n",
"N = len(t)\n",
"c = np.pi / 2.0\n",
"\n",
"me = np.c_[np.ones(N), t]\n",
"ram = np.zeros((N, 2))\n",
"for i in range(1, N):\n",
" v = me[i - 1] - ram[i - 1]\n",
" v /= np.linalg.norm(v)\n",
" ram[i] = ram[i - 1] + c * v * dt\n",
"\n",
"plt.plot(me[:, 0], me[:, 1], 'o')\n",
"plt.plot(ram[:, 0], ram[:, 1], '-')\n",
"\n",
"any(ram[:, 0] >= 1 - np.sqrt(dt))"
]
}
],
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment