Skip to content

Instantly share code, notes, and snippets.

@danielbouman
Created August 26, 2016 11:38
Show Gist options
  • Save danielbouman/40aed52062810c413b24f5479f7cc816 to your computer and use it in GitHub Desktop.
Save danielbouman/40aed52062810c413b24f5479f7cc816 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib nbagg\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.86603774 0.49990511 0.00857446]\n"
]
}
],
"source": [
"a = -56.65*np.pi/180\n",
"# a = 0\n",
"# phi = 0\n",
"phi = 1*np.pi/180\n",
"k = [np.cos(a)*np.sin(phi),np.sin(a)*np.sin(phi),np.cos(phi)]\n",
"theta = 30*(np.pi)/180\n",
"\n",
"v = [1,0,0]\n",
"K = [[0,-k[2],k[1]],[k[2],0,-k[0]],[-k[1],k[0],0]]\n",
"R = np.add(np.add(np.identity(3),np.dot(K,np.sin(theta))),np.dot(np.linalg.matrix_power(K,2),1-np.cos(theta)))\n",
"\n",
"rot_v = np.dot(R,v)\n",
"print(rot_v)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"alpha` = 0.523510427105\n",
"phi` = 1.56222175761\n"
]
}
],
"source": [
"alpha_prime = np.arctan2(rot_v[1],rot_v[0])\n",
"phi_prime = np.arccos(rot_v[2])\n",
"print('alpha` = '+str(alpha_prime))\n",
"print('phi` = '+str(phi_prime))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"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",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\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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\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"alpha1 : -175.238910155\n",
"phi1 : 31.5106402819\n",
"alpha1 : -146.658077175\n",
"phi1 : 1.73196286808\n",
"alpha1 : -2.42653609539\n",
"phi1 : 8.54371804822\n",
"alpha1 : 0.761839122966\n",
"phi1 : 18.5195880973\n",
"alpha1 : 1.7536958225\n",
"phi1 : 28.5120895535\n"
]
}
],
"source": [
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"alpha = -56.648*np.pi/180.0\n",
"phi = 1.*np.pi/180.0\n",
"bottom_r = [np.cos(alpha+np.pi/2)*np.sin(np.pi/2),np.sin(alpha+np.pi/2)*np.sin(np.pi/2),0]\n",
"bottom_l = [np.cos(alpha-np.pi/2)*np.sin(np.pi/2),np.sin(alpha-np.pi/2)*np.sin(np.pi/2),0]\n",
"chip = [np.cos(alpha)*np.sin(phi),np.sin(alpha)*np.sin(phi),np.cos(phi)]\n",
"z = [0,0,chip[2],chip[2],0]\n",
"x = [bottom_l[0],bottom_r[0],bottom_r[0]+chip[0],bottom_l[0]+chip[0],bottom_l[0]]\n",
"y = [bottom_l[1],bottom_r[1],bottom_r[1]+chip[1],bottom_l[1]+chip[1],bottom_l[1]]\n",
"#x = [0,0,0,0,0]\n",
"#y = [0,0,0,0,0]\n",
"ax.plot(x, y, z)\n",
"\n",
"# Rodrigues' rotation\n",
"for i in [-32,-2,8,18,28]:\n",
" phi_sweep = phi + i*np.pi/180.0\n",
" theta = (60.0/360.)*2.0*np.pi\n",
" #theta = 0.8727\n",
" K = [[0,-chip[2],chip[1]],[chip[2],0,-chip[0]],[-chip[1],chip[0],0]]\n",
" R = np.add(np.add(np.identity(3),np.dot(K,np.sin(theta))),np.dot(np.linalg.matrix_power(K,2),1-np.cos(theta)))\n",
" v = [np.cos(alpha)*np.sin(phi_sweep),np.sin(alpha)*np.sin(phi_sweep),np.cos(phi_sweep)]\n",
" rot_v = np.dot(R,v)\n",
" ax.plot([0,rot_v[0]],[0,rot_v[1]],[0,rot_v[2]])\n",
" print('alpha1 : '+str(np.arctan2(rot_v[1],rot_v[0])*180.0/np.pi))\n",
" print('phi1 : '+str(np.arccos(rot_v[2])*180.0/np.pi))\n",
"ax.set_xlim3d(-1, 1)\n",
"ax.set_ylim3d(-1, 1)\n",
"ax.set_zlim3d(0, 1)\n",
"\n",
"ax.set_xlabel('X')\n",
"ax.set_ylabel('Y')\n",
"ax.set_zlabel('Z')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\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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CmDg0kQmQIAAAQIECFQEFMCKnlkCBAgQIECAQKCAAhi4NJEJECBAgAABAhUBBbCiZ5YAAQIECBAgECigAAYuTWQCBAgQIECAQEVAAazomSVAgAABAgQIBAoogIFLE5kAAQIECBAgUBFQACt6ZgkQIECAAAECgQIKYODSRCZAgAABAgQIVAQUwIqeWQIECBAgQIBAoIACGLg0kQkQIECAAAECFQEFsKJnlgABAgQIECAQKKAABi5NZAIECBAgQIBARUABrOiZJUCAAAECBAgECiiAgUsTmQABAgQIECBQEVAAK3pmCRAgQIAAAQKBAgpg4NJEJkCAAAECBAhUBBTAip5ZAgQIECBAgECggAIYuDSRCRAgQIAAAQIVAQWwomeWAAECBAgQIBAooAAGLk1kAgQIECBAgEBFQAGs6JklQIAAAQIECAQKKICBSxOZAAECBAgQIFARUAAremYJECBAgAABAoECCmDg0kQmQIAAAQIECFQEFMCKnlkCBAgQIECAQKCAAhi4NJEJECBAgAABAhUBBbCiZ5YAAQIECBAgECigAAYuTWQCBAgQIECAQEVAAazomSVAgAABAgQIBAoogIFLE5kAAQIECBAgUBFQACt6ZgkQIECAAAECgQIKYODSRCZAgAABAgQIVAQUwIqeWQIECBAgQIBAoIACGLg0kQkQIECAAAECFQEFsKJnlgABAgQIECAQKKAABi5NZAIECBAgQIBARUABrOiZJUCAAAECBAgECiiAgUsTmQABAgQIECBQEVAAK3pmCRAgQIAAAQKBAr8BxLsQy2C08oMAAAAASUVORK5CYII=\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"alpha = -56.648*np.pi/180.\n",
"phi = 1.*np.pi/180.\n",
"bottom_r = [np.cos(alpha+np.pi/2)*np.sin(np.pi/2),np.sin(alpha+np.pi/2)*np.sin(np.pi/2),0]\n",
"bottom_l = [np.cos(alpha-np.pi/2)*np.sin(np.pi/2),np.sin(alpha-np.pi/2)*np.sin(np.pi/2),0]\n",
"chip = [np.cos(alpha)*np.sin(phi),np.sin(alpha)*np.sin(phi),np.cos(phi)]\n",
"z = [0,0,chip[2],chip[2],0]\n",
"x = [bottom_l[0],bottom_r[0],bottom_r[0]+chip[0],bottom_l[0]+chip[0],bottom_l[0]]\n",
"y = [bottom_l[1],bottom_r[1],bottom_r[1]+chip[1],bottom_l[1]+chip[1],bottom_l[1]]\n",
"\n",
"ax.plot(x, y, z)\n",
"\n",
"# Rodrigues' rotation\n",
"# alpha1 = [-140.9954,-139.56922,-137.2201,-132.63435,-120.0934,-56.648,6.7974,19.33835,23.9241,26.2732,27.6994]\n",
"# phi1 = [10.04936,8.06185,6.08246,4.1229,2.23598,1.0,2.23598,4.1229,6.08246,8.06185,10.04936]\n",
"#alpha1 = [-145.648,-145.272,-144.686,-143.573,-140.360,-56.648,27.064,30.277,31.390,31.976,32.352,-56.648,-56.648,-120.093]\n",
"#phi1 = [45.009,36.012,27.17,18.027,9.055,1.,9.055,18.027,27.17,36.012,45.009,91,46,2.235]\n",
"#alpha1 = [-56.648,-56.648,-54.648,-120.093]\n",
"#phi1 = [1.,46.,90.999,2.235]\n",
"alpha1 = [-120.093,-56.648,-144.174,-54.74,125.415,-27.55,177.14]\n",
"phi1 = [2.236,91,22.022,20.999,29.001,28.87,1.24]\n",
"alpha1 = np.multiply(alpha1,np.pi/180)\n",
"phi1 = np.multiply(phi1,np.pi/180)\n",
"\n",
"for a,p in zip(alpha1,phi1):\n",
" sweep = [np.cos(a)*np.sin(p),np.sin(a)*np.sin(p),np.cos(p)]\n",
" ax.plot([0,sweep[0]],[0,sweep[1]],[0,sweep[2]])\n",
"\n",
"ax.set_xlim3d(-1, 1)\n",
"ax.set_ylim3d(-1, 1)\n",
"ax.set_zlim3d(0, 1)\n",
"\n",
"ax.set_xlabel('X')\n",
"ax.set_ylabel('Y')\n",
"ax.set_zlabel('Z')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"alpha : -120.093422021\n",
"phi : 2.23597714707\n"
]
}
],
"source": [
"print('alpha : '+str(np.arctan2(rot_v[1],rot_v[0])*180/np.pi))\n",
"print('phi : '+str(np.arccos(rot_v[2])*180/np.pi))"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.08236045, 0.03339391, 0.99604297])"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rot_v"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment