Skip to content

Instantly share code, notes, and snippets.

@jakhog
Created December 19, 2016 17:36
Show Gist options
  • Save jakhog/870437b9baf5b09efabc413215e7806a to your computer and use it in GitHub Desktop.
Save jakhog/870437b9baf5b09efabc413215e7806a 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,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib notebook\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"import scipy.optimize as opt"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Rotation matrices\n",
"def rotate_x(ang):\n",
" return np.array([[1,0,0],[0,np.cos(ang),-np.sin(ang)],[0,np.sin(ang),np.cos(ang)]])\n",
"\n",
"def rotate_y(ang):\n",
" return np.array([[np.cos(ang),0,np.sin(ang)],[0,1,0],[-np.sin(ang),0,np.cos(ang)]])\n",
"\n",
"def rotate_z(ang):\n",
" return np.array([[np.cos(ang),-np.sin(ang),0],[np.sin(ang),np.cos(ang),0],[0,0,1]])\n",
"\n",
"def rotate_zyx(x,y,z):\n",
" #return np.matmul(rotate_z(z),np.matmul(rotate_y(y),rotate_x(x)))\n",
" return np.matmul(rotate_x(x),np.matmul(rotate_y(y),rotate_z(z)))\n",
"\n",
"## Rotation helpers\n",
"def transform_to_lh_view(pt, pose):\n",
" rotation = rotate_zyx(pose[3],pose[4],pose[5])\n",
" return np.matmul(pt-pose[0:3],rotation)\n",
"\n",
"def measure_samples(samples, pose):\n",
" output = np.zeros_like(samples)\n",
" for i in range(0,samples.shape[1]):\n",
" output[...,i] = transform_to_lh_view(samples[...,i],pose)\n",
" output[...,i] = output[...,i]/np.linalg.norm(output[...,i])\n",
" return output\n",
"\n",
"## Distance between lines\n",
"def line_distance(P,u,Q,v):\n",
" w0 = np.array(P)-np.array(Q)\n",
" a = np.dot(u,u)\n",
" b = np.dot(u,v)\n",
" c = np.dot(v,v)\n",
" d = np.dot(u,w0)\n",
" e = np.dot(v,w0)\n",
" \n",
" return np.linalg.norm(w0 + ((b*e-c*d)*u-(a*e-b*d)*v)/(a*c-b*b))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Plotting helper functions\n",
"def transform_to_pose(vec, pose):\n",
" rotated = np.matmul(rotate_zyx(pose[3],pose[4],pose[5]),vec)\n",
" return rotated+pose[0:3]\n",
"\n",
"def plot_axes(ax, pose, color):\n",
" scale = 0.5\n",
" ps = np.array([[0,0,1],[0,0,0],[0,1,0],[0,0,0],[1,0,0]]).T\n",
" ps = scale*ps\n",
" \n",
" transformed = np.zeros_like(ps)\n",
" for i in range(0,ps.shape[1]):\n",
" transformed[...,i] = transform_to_pose(ps[...,i],pose)\n",
" \n",
" ax.plot(transformed[0,...],transformed[1,...],transformed[2,...],'-o',markersize=5,markevery=10,color=color)\n",
" \n",
"def plot_measured_lines(ax, pose, samples, color, length):\n",
" rotation = rotate_zyx(pose[3],pose[4],pose[5])\n",
" measured = measure_samples(samples, pose)\n",
" for i in range(0,measured.shape[1]):\n",
" line = measured[...,i]/np.linalg.norm(measured[...,i])*length\n",
" rotated = np.matmul(rotation,line)+pose[0:3]\n",
"\n",
" ax.plot([pose[0],rotated[0]],[pose[1],rotated[1]],[pose[2],rotated[2]],'--',color=color)\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Create positions for Lighthouses\n",
"p1 = [0, 0, 0, 0, 0, 0]\n",
"p2 = [2, 0.2, 2, 0.5, 3*np.pi/2, np.pi]\n",
"\n",
"# Random points (in view)\n",
"N_points = 20\n",
"points_range = [[0.5,1.5], [-0.5,0.5], [0.5,1.5]]\n",
"\n",
"samples = np.random.rand(3,N_points)\n",
"samples[0,...] = samples[0,...]*(points_range[0][1]-points_range[0][0])+points_range[0][0]\n",
"samples[1,...] = samples[1,...]*(points_range[1][1]-points_range[1][0])+points_range[1][0]\n",
"samples[2,...] = samples[2,...]*(points_range[2][1]-points_range[2][0])+points_range[2][0]\n",
"\n",
"# Measure vectors from Lighthouses\n",
"meas1 = measure_samples(samples, p1)\n",
"meas2 = measure_samples(samples, p2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\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",
" 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 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);\n",
" canvas.attr('height', height);\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'];\n",
" var y0 = fig.canvas.height - msg['y0'];\n",
" var x1 = msg['x1'];\n",
" var y1 = fig.canvas.height - msg['y1'];\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;\n",
" var y = canvas_pos.y;\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",
" 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 + '\">');\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 dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\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,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crg9/fTT1kV+zz332IoXCGcfc8wx5vHHH7fxjn4NAjh79mybAa1NEVAEyoeAEsDyzVmheqwEsFDToZ0JgQBZu8T/rbrqqm2Onjt3rq3I8dZbb1lXcJXaiSeeaD777DNz77331oZ9+OGHWxxuv/12JYBVWgw61sogoASwMlOdzUCVAGaDq161OQj069fPnHbaadYaVqWGle/II480559/fm3YWEIhhEjeBFkAR4wYYV3A/FDh5IorrrDuY22KgCJQfASUABZ/jgrdQyWAhZ4e7VzFETjhhBPMqFGjbHwecXreBtElUWarrbYy5513niW/0m699VabMf3aa6/5ovjyyy+b1Vdf3SbPUOKO88mYpvQdhFCbIqAIFBsBJYDFnp/C904JYOGnSDtYYQT+9re/GRJfghri15C4OBZA7zUR215zzTXNAw88YGMrtSkCikCxEVACWOz5KXzvlAAWfoq0g4pAQwSIASQTmkxgaY1iAIMIIHqKSO9oUwQUgWIjoASw2PNT+N4pASz8FJWqgxdeeKGhXNvbb79tS7bts88+5uqrr7ZCzEHt008/NWeddZY9j+SO3r17W70/rFHawiFAFjC6h2QBgx9ZwMcee6yZM2dOYBbw5MmTzX777WcTRd5//33rAiZreMGCBe0SbML1Qo9SBBSBPBFQApgn2i14LyWALTipTRzSz372M3PEEUeYHXbYweC+POOMMwyxZvPmzQvsFYSF+rwTJ060cW4kM5DhO23atCaOpHy3JuHj4osvtuSbRI7hw4ebQw89tDaQTp06WWmYCy64wP7fIYccYmP+/vrXv5q1117b1kNGF3CLLbYo3+C1x4pABRFQAljBSU9zyEoA00RTr+VF4MUXX7QWKMq1+Vn0RLSYxAMICo2/U66N39WzHCraioAioAhUGQElgFWe/RTGrgQwBRD1EoEI4P4lG/XNN9/0PYZ4s6OOOspaC9220kor2Xi2Pn36KLqKgCKgCCgCPggoAdRlkQgBJYCJ4NOT6yDwyCOP2FJk9913X2BSwdixY23sGTIkblt//fWthMnRRx+tGCsCioAioAgoAWyHwHK6KpIhoAQwGX56tj8CDz74oBkwYIDVsDv44IMDYVILoK4gRUARUATiIaAWwHi46Vn/RkAJoC6FtBEYN26cGThwoCHLtJGeHHF+m2++uSFWUGIAJW6QZAaNAUx7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\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(0, 2)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Plot\n",
"fig1 = plt.figure()\n",
"ax1 = fig1.add_subplot(111, projection='3d')\n",
"\n",
"# Poses of LH\n",
"plot_axes(ax1,p1,'b')\n",
"plot_axes(ax1,p2,'g')\n",
"\n",
"# Samples points\n",
"ax1.plot(samples[0,...],samples[1,...],samples[2,...],'o',color='k')\n",
"\n",
"# Measured lines\n",
"plot_measured_lines(ax1,p1,samples,'k',3)\n",
"plot_measured_lines(ax1,p2,samples,'k',3)\n",
"\n",
"ax1.set_xlim([0,2])\n",
"ax1.set_ylim([-1,1])\n",
"ax1.set_zlim([0,2])"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully. (Exit mode 0)\n",
" Current function value: 1.72508830067e-07\n",
" Iterations: 39\n",
" Function evaluations: 395\n",
" Gradient evaluations: 39\n"
]
}
],
"source": [
"## Solve optimization problem\n",
"# Initial guess\n",
"q1 = [0, 0, 0, 0, 0, 0]\n",
"q2 = [1/np.sqrt(2), 0, 1/np.sqrt(2), 0, 3*np.pi/2, np.pi] # Pretty good guess to start with\n",
"#q2 = [0, 0, 0, 0, 0, 0]\n",
"\n",
"# Objective function\n",
"def objective(pose):\n",
" sum = 0\n",
" P = q1[0:3]\n",
" Q = pose[0:3]\n",
" rotation = rotate_zyx(pose[3],pose[4],pose[5])\n",
" \n",
" for i in range(0,samples.shape[1]):\n",
" u = meas1[...,i]\n",
" v = np.matmul(rotation,meas2[...,i])\n",
" sum += line_distance(P,u,Q,v)\n",
"\n",
" return sum\n",
"\n",
"# Constraints\n",
"def distance(pose):\n",
" return np.linalg.norm(pose[0:3])-1\n",
"cstr_distance = { 'type': 'eq', 'fun': distance }\n",
"\n",
"def point_opposite(pose):\n",
" rotation = rotate_zyx(pose[3],pose[4],pose[5])\n",
" z1 = np.array([0,0,1])\n",
" z2 = np.matmul(rotation, np.array([0,0,1]))\n",
" return -np.dot(z1,z2)\n",
"cstr_point_opposite = { 'type': 'ineq', 'fun': point_opposite}\n",
"\n",
"def point_towards(pose):\n",
" rotation = rotate_zyx(pose[3],pose[4],pose[5])\n",
" z1 = np.array(pose[0:3])\n",
" z2 = np.matmul(rotation, np.array([0,0,1]))\n",
" return -np.dot(z1,z2)\n",
"cstr_point_towards = { 'type': 'ineq', 'fun': point_towards}\n",
"\n",
"# Bounds (translation positive in z - in front of other lighhouse, and rotations in [0,2*pi])\n",
"bounds = [\n",
" (-1, 1),\n",
" (-1, 1),\n",
" (0, 1),\n",
" (0, 2*np.pi),\n",
" (0, 2*np.pi),\n",
" (0, 2*np.pi)\n",
"]\n",
"\n",
"## Do optimization\n",
"res = opt.minimize(objective,q2,\n",
" method='SLSQP',\n",
" jac=False,\n",
" bounds=bounds,\n",
" constraints=[cstr_distance,cstr_point_opposite,cstr_point_towards],\n",
" options={'disp': True, 'ftol': 1e-9, 'maxiter': 1000}\n",
")\n",
"\n",
"#print(res)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\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",
" 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 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);\n",
" canvas.attr('height', height);\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'];\n",
" var y0 = fig.canvas.height - msg['y0'];\n",
" var x1 = msg['x1'];\n",
" var y1 = fig.canvas.height - msg['y1'];\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;\n",
" var y = canvas_pos.y;\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",
" 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 + '\">');\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 dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\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,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Z3dJgARIgARIgARIgAKQc4AESIAESIAESIAELCNAAWjZgLO7JEACJEACJEACJEAByDlAAiRAAiRAAiRAApYRoAC0bMDZXRIgARIgARIgARKgAOQcIAESIAESIAESIAHLCFAAWjbg7C4JkAAJkAAJkAAJUAByDpAACZAACZAACZCAZQQoAC0bcHaXBEiABEiABEiABCgAOQdIgARIgARIgARIwDICFICWDTi7SwIkQAIkQAIkQAIUgJwDJEACJEACJEACJGAZAQpAywac3SUBEiABEiABEiABCkDOARIgARIgARIgARKwjAAFoGUDzu6SAAmQAAmQAAmQAAUg5wAJkAAJkAAJkAAJWEaAAtCyAWd3SYAESIAESIAESIACkHOABEiABEiABEiABCwjQAFo2YCzuyRAAiRAAiRAAiRAAcg5QAIkQAIkQAIkQAKWEaAAtGzA2V0SIAESIAESIAESoADkHCABEiABEiABEiABywhQAFo24OwuCZAACZAACZAACVAAcg6QAAmQAAmQAAmQgGUEKAAtG3B2lwRIgARIgARIgAQoADkHSIAESIAESIAESMAyAhSAlg04u0sCJEACJEACJEAC/we3c8ckC8AxTwAAAABJRU5ErkJggg==\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(0, 2)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Plot resulting estimate\n",
"fig2 = plt.figure()\n",
"ax2 = fig2.add_subplot(111, projection='3d')\n",
"\n",
"# Shift estimate to position of 2nd LH\n",
"pest1 = res['x']\n",
"pest2 = np.concatenate((pest1[0:3]*np.linalg.norm(p2[0:3]), pest1[3:6]))\n",
"\n",
"# Poses of LH\n",
"plot_axes(ax2,p1,'b')\n",
"plot_axes(ax2,p2,'g')\n",
"#plot_axes(ax2,pest1,'c')\n",
"plot_axes(ax2,pest2,'r')\n",
"\n",
"ax2.set_xlim([0,2])\n",
"ax2.set_ylim([-1,1])\n",
"ax2.set_zlim([0,2])"
]
}
],
"metadata": {
"anaconda-cloud": {},
"gist_id": "a567928735514bf13bdb9ebd2271d41f",
"kernelspec": {
"display_name": "Python [default]",
"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": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment