Skip to content

Instantly share code, notes, and snippets.

@Hasenpfote
Created January 22, 2018 01:17
Show Gist options
  • Save Hasenpfote/1d8d0f745fd03e32e9f75bea1782d8cc to your computer and use it in GitHub Desktop.
Save Hasenpfote/1d8d0f745fd03e32e9f75bea1782d8cc to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import sympy as sym\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"%matplotlib notebook"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def norm(v):\n",
" return sym.sqrt(sum([c**2 for c in v]))\n",
"\n",
"def frenet(x, y, z=0, *, symbol):\n",
" def norm(v):\n",
" return sym.sqrt(sum([c**2 for c in v]))\n",
" # Position\n",
" r = np.array([x, y, z])\n",
" # Tangent = r' / |r'|\n",
" dr = np.array([sym.diff(c, symbol) for c in r])\n",
" tangent = dr / norm(dr)\n",
" # Normal = T' / |T'|\n",
" dt = np.array([sym.diff(c, symbol) for c in tangent])\n",
" normal = dt / norm(dt) \n",
" # Binormal = T x N \n",
" binormal = np.cross(tangent, normal)\n",
" # Curvature = |T'|\n",
" curvature = norm(dt)\n",
" # Torsion = dot(-B', N) \n",
" db = np.array([sym.diff(c, symbol) for c in binormal])\n",
" torsion = np.dot(-db, normal)\n",
"\n",
" return (tangent, normal, binormal, curvature, torsion)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"t, R = sym.symbols('t, R')\n",
"\n",
"directrix = (R * sym.cos(t), R * sym.sin(t), t)\n",
"\n",
"tangent, normal, binormal, _, _ = frenet(directrix[0], directrix[1], directrix[2], symbol=t)\n",
"\n",
"np_position = sym.lambdify((t, R), [c for c in directrix], modules='numpy')\n",
"np_tangent = sym.lambdify((t, R), [c for c in tangent], modules='numpy')\n",
"np_normal = sym.lambdify((t, R), [c for c in normal], modules='numpy')\n",
"np_binormal = sym.lambdify((t, R), [c for c in binormal], modules='numpy')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" this.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nOzdeXTrdZ0//s9FQFkURBFBf19kUFyGERBBxA3GDcYRDqh8PYIOM4IKuOBXRAV1wHG8bggecbkqjo4LMy7wztZ0TZsmaZqmaZs0adJ9S5quafLpFpZ7n78/rvnYpE2atJ9P3rn3Ph/nvM6Be5NP3jftu3k/+3kvikJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERHQUAxERERHVNNnjRSJdye5QRERERFSa7PEika5kdygiIiIiKk32eJFIV7I7FBERERGVJnu8SKQr2R2KiIiIiEqTPV4k0pXsDkVEREREpckeLxLpSnaHIiIiIqLSZI8XiXQlu0MRERERUWmyx4tEupLdoYiIiIioNNnjRSJdye5QRERERFSa7PEika5kdygiIiIiKk32eJFIV7I7FBERERGVJnu8SKQr2R2KiIiIiEqTPV4k0pXsDkVEREREpckeLxLpSnaHIiIiIqLSZI8XiXQlu0MRERERUWmyx4tEupLdoYiIiIioNNnjRSJdye5QRERERFSa7PEika5kdygiIiIiKk32eJFIV7I7FBERERGVJnu8SKQr2R2KiIiIiEqTPV4k0pXsDkVEREREpckeLxLpSnaHIiIiIqLSZI8XiXQlu0MRERERUWmyx4tEupLdoYiIiIioNNnjRSJdye5QRERERFSa7PEika5kdygiIiIiKk32eJFIV7I7FBERERGVJnu8SKQr2R2KiIiIiEqTPV4k0pXsDkVER45Dhw7h2WefxVNPPYWnn34aBw8elN0kIqJjguzxIpGuZHcoIjoyHDp0CE8//TTW1tawuLiIVCqFdDqNlZUVbGxsMJAQERlI9niRSFeyOxQR1b6DBw8im81ifX0dq6urWF5eRiqVwtLSEhYXF7G0tITl5WUGEiIig8geLxLpSnaHIqLadejQITzzzDPY2NjA2toa1tfXsba2hnQ6jUwmA1VVkclkkE6nsby8zEBCRGQQ2eNFIl3J7lBEVJtyU65yoWNjYwPZbHZLACksBhIiIv3JHi8S6Up2hyKi2vPss89qYWN9fV0LH7lpWKUCCAMJEZH+ZI8XiXQlu0MRUe3YbsrV5vCxmwDCQEJEtHeyx4tEupLdoYioNhw8eBBPPfXUlilXhbXXAFJpIFldXWUgIaJjnuzxIpGuZHcoIpIrd7ZHsSlXRgeQvQSSQ4cOyX77iIiqQvZ4kUhXsjsUEclTbKF5qTI6gJQTSCKRCAYGBhhIiOiYIXu8SKQr2R2KiOTYfLZHueFDRgDZLpC4XC64XK4td0gymYwWSJ555hkGEiI6asgeLxLpSnaHIqLqKmeheS0HEFVV4Xa74Xa7d5yylQsk2WyWgYSIjmiyx4tEupLdoYioenYz5apWA4jL5ap4DQkDCREdqWSPF4l0JbtDEVF1VLLQ/EgOIJUGkrW1NQYSIqp5sseLRLqS3aGIyFh7nXK1XQDJZDJHTABhICGio4Hs8SKRrmR3KCIyzsGDB5FOpxGNRpHJZPYUPI7UOyDlBpJUKsVAQkQ1S/Z4kUhXsjsUEelv89keU1NTEEIglUrtOXwcjQGEgYSIjgSyx4tEupLdoYhIX4ULzROJxFEXQDweD9rb26vyWtsFklQqxUBCRFUle7xIpCvZHYqI9LPd2R4zMzMQQmBxcZEBxIBAsrS0xEBCRIaTPV4k0pXsDkVEe1dqoXkymWQAqVIgmZqagt1ux/T0NAMJEelK9niRSFeyOxQR7c1OZ3vMzc1BCIGFhQUGEIMrN91tenqad0iISFeyx4tEupLdoYho98o522N+fh5CCMzNzR1VAcTpdEoPHIUVj8chhEAikdD+jFO2iEgPsseLRLqS3aGIqHKVnO2xsLAAIQRmZ2d1CyCyzwHp6Og4YgJIYTGQENFuyB4vEulKdociosocPHgQTz31VNEpV4W1uLgIIQSSySQDSJUCyMzMTNnPYSAhonLIHi8S6Up2hyKi8mw+26OSE82Xlpa0QTEDiLE1PT1dcQDZbSB59tlnGUiIjiGyx4tEupLdoYhoZzstNC9VqVRKmxbEAFL7AWQ3geSpp55iICE6yskeLxLpSnaHIqLStjvbo5LAsLy8DCEE4vH4URVA2trapAeOYgEkmUwa9hqlDkZUVZWBhOgoJXu8SKQr2R2KiLZXyULzUpVOp7WtYY+WAOL1emsygExNTRkeQBhIiI5NsseLRLqS3aGIaKu9TLkqrEwmAyEEpqamdA0g6XSaAaRIAJmdnZXWhmKBJBdKGEiIjkyyx4tEupLdoYgo324WmpcqVVUhhMDk5CQDiME1OTkpPYAUCySzs7MQQmBwcBCpVEr7+q2vrzOQEB0BZI8XiXQlu0MR0WF6TbkqrJWVFQghMDExwQByDAaQXOXOgxkdHcXy8jJSqRQWFxe1OyQMJES1TfZ4kUhXsjsUEVV+tkcltbq6CiEExsfHGUAMromJCe3UedltKaz5+Xnt+2Dzn2cyGQYSoiOA7PEika5kdyiiY1nubI94PI54PK7bXY/Ntba2BiEExsbGjqoA0traKn1QfyQFkLm5Oe1OWKnHFQaS3La/DCREcskeLxLpSnaHIjpWbV5o7nQ64fP5dA0emwNDburN0RJAOjs7GUAqrNwakMnJyYqex0BCVBtkjxeJdCW7QxEdiwrP9nC5XPB6vYYEkI2NDQghMDIyolsAUVWVAWSbGh8fhxAC8/Pz0ttSWMlkUtsNbS/XYSAhkkP2eJFIV7I7FNGxpNhCc4/Hg46ODkMCSDabhRACw8PDDCDHcACZmZnRzoPR87oMJETVIXu8SKQr2R2K6FhR6myPjo4OeDwewwKIyWTC0NAQA0iVAsjCwoL0thQLIPF43NDXKRVIVlZWGEiIdkn2eJFIV7I7FNGxYKezPbxeL1wul2EBxGw2IxaLHVUBxOFwSB/UF9bY2FjNBpBEIgEhBBKJRFVft9xAcvDgQQYSohJkjxeJdCW7QxEdzco928Pn86G9vd2wAGKxWHQLIBsbG1BVuQHE5/MxgFRY8XgcQgjMzMxIbUexQFJ4UjsDCVE+2eNFIl3J7lBER6tKzvbo6upCW1ubYQHEZrMhGo3WXABpbFxFPH70BZDFxUXpbSms6elpCCGQTCaltyVXmUxGCyTRaFQLb4V3SJ5++mkGEjrmyR4vEulKdociOtrkzvbIZotPuSqs7u5utLa2GhZA6urqEIlEaiqALC2pOP74Q1CUQzjuuEOYmTnyA8jo6GjNBpCpqamaPaVdVVXEYjEIIZBOp3ecssVAQsci2eNFIl3J7lBER5NSC81LVSAQgMPhMCyA2O12hMPhmgogP/vZOhQFWkUiK2U/lwGk8pqcnKzpADIwMACTyZT3Z5vvkDCQ0LFO9niRSFeyOxTR0aLwbI9KTjTv6elBc3OzYQGkvr4e/f39NRNA0mkVF1zwbF4AcbtXy36+z+dDS0uL9EFzYeUCyNLSkvS2FFYtH5KoqioikQjMZnPJx5QTSDY2NhhI6Kgke7xIpCvZHYroSFfuQvNS1dfXh6amJsMCSENDA0KhUM0EkP/937W88KEogNm8Vvbzu7q6ajKAjIyM1GwAqeUtglVVRX9/P6xWa0XPqTSQEB3JZI8XiXQlu0MRHcl2O+WqsILBIBoaGgwLII2NjQgGg7pca21tDYODgxgbG8Py8vKuBptvetOzWwLIr3+9Xvbzaz2ApFIp6W0prFreoUtVVYRCIdhstj1dg4GEjmayx4tEupLdoYiOVJUuNC9V/f39qK+vNyyANDU1oa+vb8/XSaVSaG1thRACQgiYTCa0tbUhGAxienq6rLsi/f0rOOmkQ1sCyMMPb5Q90KzVADI8PFyzAaSW16eoqoq+vj7Y7XZdr7k5kCwtLWmBZHl5mYGEjjiyx4tEupLdoYiONHpMuSqscDiMuro6wwJIc3Mzent793SNyclJWK1WNDQ0IB6PIx6PIxKJwO12w2KxQAgBi8UCl8uFcDiMRCKBTCaz7cBwbGwFZ5xxEIoCnHXWQTz00AZ8vvLXgDCAVF61PD1MVVX09vaivr7e0NfIZDLaLlsMJHSkkT1eJNKV7A5FdCSp5GyPSmpgYAA2m82wANLS0oKenp5dPXd9fR19fX0QQqCjo0MbzG2+25FOpxGPxxEKheB0OmE2myGEgM1mQ0dHB6LRKGZnZ7VAMjOjYt++w3dBbr756YoHkn6/vyYDyNDQEIQQu56aZmTVcjhSVRWBQACNjY1VfU0GEjqSyB4vEulKdociOhLs5myPSioajcJisRgWQBwOBwKBQMXPW15eRmtrK0wmE2KxGDY2NspahL68vIzJyUn09fXB4XDAZDJBCAG73Y7Ozk784Q+T2tSr7363/KlXufL7/WhubpY+aC6sWg4gtdw2VVXR3d2NpqYmqW1gIKFaJnu8SKQr2R2KqNbptdC8VMViMZjNZsMCSGtrK7q7uyt6ztTUFGw2G+rr6zE7O6v9+W52wUqlUhgbG0MgEEBzczNuvz2oBZBf/CKKkZGRiqYGMYBUXoODg9pBf7Lbsl3V4rS6zYFkcXERNpsNsViMgYSkkD1eJNKV7A5FVMtyZ3u4XC5Eo1FDwkc2m8XQ0BBMJpNhAaStrQ1+v7+sx66vryMYDEIIAY/HA1VV8/5ej214b755A4oC7Nt3CE8+2awtam9ubkZPTw/Gx8dLThWq1QBSy4P83EnjxdblyK5aPVwyV8vLyxBCYHBwkHdISArZ40UiXcnuUES1qHChuZ7b2G5Xufn5RgUcp9OJrq6uHR+3vLyMtrY2mEymooFLjwBy0UWHt+E9//yDUFUV8/PzGBwchNfrRV1dnbbDVmtrK/r6+jA5OZn3egwglVc0GoUQQno7ipXX60VbW5v0dhSrpaUlCCEwOjqq/RmnbFE1yR4vEulKdociqjXbTbnSYxepUpXbInV9fd2Q67e3t8Pn85V8zPT0tDblKplMFn3cXgPI4qKKE044vAD9xhu3LkDPZDJIJpMYGBiAx+OB1WqFEAJmsxnt7e3o7++Hx+ORvl5gu6rlADIwMACTySS9HcWqo6MDTqdTejuK1cLCAoQQGB8fL/qYnQLJ6uoqAwntmuzxIpGuZHcoolpSbKG5w+HY9S5S5VTukLjV1VVDru9yudDZ2bnt3+005UrvAOJyrWrrPx58MLvj4zOZDOLxOPr7+9He3q7tsJVr78DAAJLJZE1MLarlaU6RSARms1l6O4qV2+2Gy+WS3o5iNTs7CyEEJicny35OJYHk0KFDsn/8UY2TPV4k0pXsDkVUC3Y622M3i7grqYmJCQghsLKyYsj13W43vF7vlj9Pp9NwOp0wmUwYGBgoawrYXgPIj3+8rgWQJ59cq/j56XQaHo8HNptN26FLCIG6ujp4vV7EYjHMz89LGaTWegCxWCzS21GsXC6XFoBrsWZmZiCEwPT09K6vwUBCeyF7vEikK9kdiki2cs72KHcNxW5rcnJSm59vxPU9Hg86Ojry/iw35cput5eccqV3APnEJ57SAsjY2MqurrF5y9bl5WWMj4+jp6cHLS0t2t2RhoYGdHV1YXh4uGqnf+cCiOzB8nYVDodhtVqlt6NYOZ3OvHNmaq3i8TiEEEgkErpds1QgyWQyWiB55plnGEiIAYSOLrI7FJEslZztUWoKkx41PT2trR0w4vodHR3weDzIZg9PuQqFQhBCwO12Q1UrCz17CSDj4+O46KIVKArwspcd3PXArdSZEUtLSxgZGYHf70djY2PeDluBQABjY2OGHcZXywu9Q6EQbDab9HYUq9bWVnR2dkpvR7GampqCEALJZNKw1ygnkGSzWQaSY5Ts8SKRrmR3KCIZKj3bY7s7CHpW7rerqVTKkOt7vV64XC5typUQApFIpPJdtxIJPGWzYb3ChdbDw8N4+OGHceed/4bjjz+8Be+rXz2Irq6uXQ3UKjm0bmFhAYODg+js7ITdbtd22HI4HOjt7cXk5KRu53bUegCpq6uT3o5i5XA44PP5pLejWOWmSc7NzVXtNUsFkoceegh33XUXg8gxRPZ4kUhXsjsUUbXlzvao5GBBr9cLt9ttWABJJBIQQmBpacmQ63d2dqKlpQV1dXWw2+2YmZkp63lP/eQneOa22/Dsu96FQy9/OXJzp5699NKyB+2jo6P44hc/j9tvvwqf/eyt2vSrN7zhMXzmM7ft6rfegUAAjY2NuxrQzc7OIhqNoqOjAzabTdthy+l0IhQKYXp6etfTy6LRaM3uNBUMBmG326W3o1g1NzfD7/dLb0exym0UUa3pfNvV5kBy8803441vfKPsH6dURbLHi0S6kt2hiKplp4XmOw3gXS6XYQEkmUxqgxu9r53bRlgIAZfLhUwmU9bzwuEwbCedhD8qCp5QFNgUBU2KAqeiwKso6Hrta9F3xRVYu/FGPHXbbcjecw82/vM/kXrkEWR+8xusWq1Y9Xjwu/378Zlbr8Kf//RhfP/7v9YCyH/8x4/wqU+9BV//+tcqHvDvNoBsN6BLJBIIh8NwuVywWCwQQsBiscDtdiMSiWBmZqbsReW1vNVtX19fTQeQpqYmdHd3S29HsRoZGdHuUspui6qquPHGG/GOd7xD9o9VqiLZ40UiXcnuUETVUOmUq8Lq6uqC0+k0LIDktvicn5/X9bqZTAaPP/447rjjDvzbv/0b7rnnHtx+++340Ic+hPe85z24/PLLccEFF+Css85CU1NT3nPvvPNOKIqyY03lEsVf671//fN9ioLnKgqeryh4saLgHEXBacp3tYc2Nf07fvjD9+HOOz+Cvr4+dHZ2IhaLlXVnRa8AUljpdBrT09MIBoPagYxCCNhsNnR0dCAWi5WcgjMwMFCzW9329vaivr5eejuKVUNDA3p6eqS3o1jV2hkv11xzDa655hrZP1qpimSNE4kMIbtDERmt3IXmpaq7uxutra2GBZD5+Xltfnm5z1lfX0ckEsFf/vIXfPOb38TNN9+MSy+9FAcOHEA2e3haV11dHb785S+XFST+93//N+/6XynzebPPfW5eALmq5ONfD0W5G8oJP4PouBmPP/5/cccdN8LtduPMM8+Eoih4znOeg5e97GW47LLLcP311+OOO+7AN7/5TfzqV7/SFs0bFUAKa3l5GRMTE+jt7YXD4dAWtNfX18Pn82FoaAgLCwva42v5rI2enp6qvGe7rfr6evT29kpvR7HKre+plS2W3/GOd+DGG2+U/eOVqqha40KiqpDdoYiMspcpV4WV2+LVqACSO2W51Ha48/PzePDBB/HhD38YF198MU466aRtB/mf+tSnEA6HIYRAe3s7nnjiiS2POfnkk3HOOefgta99Ld785jfj2muvRWNj45bQ9fjjj8NiNkM8/DD+dN11ePyMM/Cbffvw4299C9/73vewf//+w3cE5uexMjSE1a4ufPeOO3Dbu9+Nj73lLfjwxRfj7We8EG897Xl410tOwVtOOxFnna5AeY2CN/74Zfj+96/BXXfdgkAgUFbYuf7666GqfwsgAwMDuPbaa/Hxj38c3/72t1FfX494PG7YoG9paQmjo6PaIvhcIMlNH/L5fDU7BataoW23VVdXh2AwKL0dxarWwuVll12Gj370o7J/zFIVVXt8SGQo2R2KyAjlnO1RSfX19W2ZoqRnLS4uQgiBeDwOl8uFBx98EF//+tfzHpNKpbBv376ig/PjjjsOr3zlK3HrrbdCCIH+/n5sbGxgbm4O//3f/41f//rX2iFqu27r+jqyPh9WVlbKXoT+q1/9Cp/4xHvw299+EAMDn8M//vzvoDygQHlAwdWfuwDf+MY3MDs7ix/8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ScHRo0dlL5OIqEey60UiVclOKCIie8jNze11UrsQAr6+vrKXSUTUI3mVIhEREfXXUCHEnB7iP+LXBuQ5IcR90lZHREREREQXhNXi1wZknOR1EBERERHRBWC1YANCREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQk2/8CQUx9yD0WK9oAAAAASUVORK5CYII=\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"T = np.linspace(0, 3 * np.pi)\n",
"T2= T[::5]\n",
"\n",
"pv = np.array([np_position(t, 5) for t in T]).transpose()\n",
"rv = np.array([np_position(t, 5) for t in T2]).transpose()\n",
"tv = np.array([np_tangent(t, 5) for t in T2]).transpose()\n",
"nv = np.array([np_normal(t, 5) for t in T2]).transpose()\n",
"bv = np.array([np_binormal(t, 5) for t in T2]).transpose()\n",
"\n",
"# plot\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(1, 1, 1, projection='3d')\n",
"#ax.plot(rv[0], rv[1], rv[2], color='k', linestyle='dashed', marker='o', markersize=3, markerfacecolor='y', markeredgecolor='y')\n",
"ax.plot(pv[0], pv[1], pv[2], color='k', linestyle='dashed')\n",
"ax.scatter(rv[0], rv[1], rv[2], color='y', edgecolors='k')\n",
"ax.quiver(rv[0], rv[1], rv[2], tv[0], tv[1], tv[2], color='r')\n",
"ax.quiver(rv[0], rv[1], rv[2], nv[0], nv[1], nv[2], color='g')\n",
"ax.quiver(rv[0], rv[1], rv[2], bv[0], bv[1], bv[2], color='b')\n",
"ax.set_aspect('equal', adjustable='box')\n",
"plt.show()"
]
}
],
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment