Skip to content

Instantly share code, notes, and snippets.

@artificialsoph
Created May 25, 2021 21:07
Show Gist options
  • Save artificialsoph/a96a788cc8b78a6593ba16ff0a85852b to your computer and use it in GitHub Desktop.
Save artificialsoph/a96a788cc8b78a6593ba16ff0a85852b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "703ff0a3",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"%config InlineBackend.figure_format='retina'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7f6dded2",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.lines as lines\n",
"\n",
"import numpy as np\n",
"import random"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "51bfb3ec",
"metadata": {},
"outputs": [],
"source": [
"def forward(dist, state):\n",
" \n",
" unit_dir = np.array([np.sin(state[\"dir\"]*np.pi/180), np.cos(state[\"dir\"]*np.pi/180) ])\n",
" \n",
" displacement = unit_dir*dist\n",
" \n",
" new_loc = state[\"loc\"] + displacement\n",
" \n",
" plt.plot([state[\"loc\"][0], new_loc[0]], [state[\"loc\"][1], new_loc[1]], \n",
" color=\"black\", alpha=.5, marker=None)\n",
" \n",
" state[\"loc\"] = new_loc\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "b3df9179",
"metadata": {},
"outputs": [],
"source": [
"def turn(state):\n",
" if random.random() < .5:\n",
" state[\"dir\"] = (state[\"dir\"] + 90) % 360\n",
" else:\n",
" state[\"dir\"] = (state[\"dir\"] - 90) % 360"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "224b1d96",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"image/png": {
"height": 421,
"width": 572
}
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10,10), facecolor=\"white\")\n",
"ax.set_aspect(1)\n",
"\n",
"np.random.seed(1)\n",
"\n",
"n_iterations = 1000\n",
"\n",
"p_turn = .5\n",
"\n",
"state = {\"loc\": np.array([0,0]), \"dir\": 0}\n",
"\n",
"for i in range(n_iterations):\n",
" \n",
" if random.random() < p_turn:\n",
" \n",
" turn(state)\n",
" \n",
" forward(10,state)\n",
" \n",
" else:\n",
" \n",
" forward(10,state)\n",
" \n",
"plt.axis(\"off\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:metis] *",
"language": "python",
"name": "conda-env-metis-py"
},
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment