{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt1" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib widget" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b2770ffd07584667aa28bf7453fd13df", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def Rotx(l,rot):\n", " xr = [0*np.cos(rot)-0*np.sin(rot),(l[0])*np.cos(rot)-0*np.sin(rot),(x)*np.cos(rot)-y*np.sin(rot)]\n", " return xr\n", "\n", "def Roty(l,rot):\n", " yr=[0*np.sin(rot)+0*np.cos(rot),(l[0])*np.sin(rot)+0*np.cos(rot),(x)*np.sin(rot)+y*np.cos(rot)]\n", " return yr\n", "\n", "\n", "#Set the number of fibonacci triangles to display\n", "n=500\n", "\n", "fig, ax1= plt1.subplots(figsize=(10, 10))\n", "\n", "p= np.loadtxt(\"Primetable.txt\", delimiter=\",\", unpack=False)\n", "counter=np.arange(1,len(p)+1)\n", "\n", "tempcount=np.arange(1,n)\n", "\n", "ax1.clear()\n", "\n", "rot=0\n", "rot0=0\n", "x0=[0,0,0]\n", "y0=[0,0,0]\n", "\n", "for i in tempcount:\n", "\n", " #Select 3 following primes\n", " l=p[(i-1):(i)+2]\n", " #print(l)\n", "\n", " #Determine triangle charesteristics (cosine rule)\n", " alpha=np.arccos((l[1]**2+l[2]**2-l[0]**2)/(2*l[1]*l[2]))\n", " beta=np.arccos((l[0]**2+l[2]**2-l[1]**2)/(2*l[0]*l[2]))\n", " gamma=np.arccos((l[0]**2+l[1]**2-l[2]**2)/(2*l[0]*l[1]))\n", "\n", " #Height Fibonacci Prime Triangle\n", " x=l[0]+l[1]*np.cos(np.pi-gamma)\n", " y=l[2]*np.cos(np.pi/2-beta)\n", "\n", " #Apply Rotation\n", " rot=rot+np.pi-rot0\n", " rot0=gamma\n", " xr=Rotx(l,rot)\n", " yr=Roty(l,rot)\n", " \n", " #Triangle not translation\n", " xr =xr+x0\n", " yr =yr+y0\n", " x0=x*np.cos(rot)-y*np.sin(rot)+x0\n", " y0=x*np.sin(rot)+y*np.cos(rot)+y0\n", "\n", " color=str(i/n)\n", " ax1.fill(xr,yr,zorder=(-i),c=color)\n", "\n", "ax1.axis([-1.5*l[2],1.5*l[2], -1.5*l[2],1.5*l[2]])\n", "ax1.text(0.05,0.95, 'Prime Triangle: [' +str(l[0]) +', '+ str(l[1]) +', '+ str(l[2]) + ']', transform=ax1.transAxes, fontsize=10,\n", " verticalalignment='top')\n", "ax1.axes.get_xaxis().set_visible(False)\n", "ax1.axes.get_yaxis().set_visible(False)\n", "plt1.show()\n", "#plt1.savefig('Fibonacci Prime Traingle 5000', dpi=500, bbox_inches='tight')\n", "\n", "\n", " \n", " " ] }, { "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.8.3" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "44c092b33b7342b7abad0eec60fc9dd0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "4a694c5b277849f3a0a79e125be05d91": { "model_module": "jupyter-matplotlib", "model_module_version": "^0.7.3", "model_name": "ToolbarModel", "state": { "layout": "IPY_MODEL_44c092b33b7342b7abad0eec60fc9dd0", "toolitems": [ [ "Home", "Reset original view", "home", "home" ], [ "Back", "Back to previous view", "arrow-left", "back" ], [ "Forward", "Forward to next view", "arrow-right", "forward" ], [ "Pan", "Pan axes with left mouse, zoom with right", "arrows", "pan" ], [ "Zoom", "Zoom to rectangle", "square-o", "zoom" ], [ "Download", "Download plot", "floppy-o", "save_figure" ] ] } }, "9cc99c365ea94f7893b79747daae54b1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "b2770ffd07584667aa28bf7453fd13df": { "model_module": "jupyter-matplotlib", "model_module_version": "^0.7.3", "model_name": "MPLCanvasModel", "state": { "_cursor": "default", "_figure_label": "Figure 1", "_height": 1000, "_image_mode": "diff", "_width": 1000, "layout": "IPY_MODEL_9cc99c365ea94f7893b79747daae54b1", "toolbar": "IPY_MODEL_4a694c5b277849f3a0a79e125be05d91", "toolbar_position": "left" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }