{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# EECS16A Discussion 1B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualizing Matrices as Operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This exercise is going to help you visualize matrices as operations. For example, when we multiply a vector by a rotation matrix, we will see it \"rotate\" in the true sense here. Similarly, when we multiply a matrix by a scalar matrix, we will see it \"scale\". The way we will see this is by applying the operation to all the vertices of a polygon and seeing how the polygon changes.\n", "Let's first do the necessary imports and define some useful functions to do this." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "\"\"\"Function that takes the vertices of a polygon and applies a matrix \"transformation\" to each of them, effectively\n", "\"transforming\" the polygon.\"\"\"\n", "def transform_the_polygon(polygon, T):\n", " \n", " transformed_polygon = []\n", " for point in polygon:\n", " transformed_point = np.dot(T, point)\n", " transformed_polygon.append(transformed_point)\n", " return transformed_polygon\n", "\n", "\"\"\"Function that plots a polygon in the x-y plane, given its vertices as x-y coordinates. The plot is defined in terms\n", "of line segments connecting all adjacent vertices of the polygon.\"\"\"\n", "def plot_the_polygon(polygon):\n", " fig = plt.figure(figsize=(5,5))\n", " ax = fig.add_subplot(111, xlim = [-4, 4], ylim = [-4, 4])\n", " for i in range(len(polygon) - 1):\n", " ax.plot([polygon[i][0], polygon[i+1][0]],\n", " [polygon[i][1], polygon[i+1][1]], linewidth=4)\n", " ax.plot([polygon[i+1][0], polygon[0][0]], [polygon[i+1][1], polygon[0][1]], linewidth=4)\n", " ax.grid(True)\n", " ax.axhline(y=0, color='k', linestyle = '--', linewidth = 2)\n", " ax.axvline(x=0, color='k', linestyle = '--', linewidth = 2)\n", " #plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we define our starting polygon, a square whose side is of length 1. Let's see what the square looks like." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit_square = [np.array([0,0]), np.array([1,0]), np.array([1,1]), np.array([0,1])]\n", "plot_the_polygon(unit_square)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part 1: Rotation Matrices as Rotations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Code for the following sections:\n", "\n", "(a) Given T1 (15 degree rotation) and T2 (30 degree rotation), describe how to rotate the unit square by 45 degrees. How about 60 degrees?\n", "\n", "(b) Try to rotate the unit squre by 60 degrees using only one matrix." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 15)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m15\u001b[0m\n\u001b[0;31m T3 = ????\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "# R is a \"rotation matrix.\"\n", "# Example:\n", "# angle = np.pi/2 # 90 degrees in radians\n", "# R = np.array([[np.cos(angle), -np.sin(angle)],\n", "# [np.sin(angle), np.cos(angle)]])\n", "\n", "angle1 = np.pi/12 # 15 degrees in radians\n", "T1 = np.array([[np.cos(angle1), -np.sin(angle1)],\n", " [np.sin(angle1), np.cos(angle1)]])\n", "\n", "angle2 = np.pi/6 # 30 degrees in radians\n", "T2 = np.array([[np.cos(angle2), -np.sin(angle2)],\n", " [np.sin(angle2), np.cos(angle2)]])\n", "\n", "T3 = ????\n", "\n", "rotated_square = transform_the_polygon(unit_square, T3)\n", "plot_the_polygon(rotated_square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And finally, we can \"reflect\" the square about the y-axis:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATsAAAE4CAYAAAAkSFRpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFANJREFUeJzt3W+sZHV9x/HPZzU1VGxvWhM1bPFqjDVg7IUHVGOaDFbi\nivVfNI3axl58ZhQhWtMKRKixDeWJ29j4SOutpoQmtlGxgK5hBmONSISR5Y9KGxG0haaJ1hATg/Dt\ng5l793BnZ+8Zzzlzvmd/71cyYc/u4cwnZ/Z+d85nzu9eR4QA4HR3qO8AALAODDsARWDYASgCww5A\nERh2AIrAsANQhNaGne1Dtu+0/cW2jgkAbWnznd1lku5r8XgA0JpWhp3tw5IulvTJNo4HAG1r653d\nxyR9UBLLMQCk1HjY2X6dpEcjYirJ8wcApOKma2Nt/42kP5X0S0lnSHqWpH+NiHfu2493fQA6EREH\nvslq/M4uIq6IiLMj4oWS3ibp1v2DrrJvisfVV1/dewaynPzB3xWyrPqoq8j77B588MG+I+whS26Z\nzglZmnl6mweLiNsk3dbmMVGWiND29nbfMXAaKvKdXaYvJrIsypJDIssymbLU1fgDitpPZMe6ngtA\nOWwr1vEBxRBNJpO+I+why6IsOSSyLJMpS11FDjsA5eEyFsCgcRmLQbItm0U4aF+Rwy5T30CW3DKd\nE7I0U+SwA1AeOjuksnsJy98V1EVnBwAVRQ67TH0DWXLLdE7I0kyra2OBpiJikF9IyI/ODsCg0dkB\nQEWRwy7TZRJZFmXJIZFlmUxZ6ipy2AEoD50dgEGjs8MgsTYWXSly2GXqG8iSW6ZzQpZmihx2AMpD\nZ4dUWBuLVdHZAUBFkcMuU99AltwynROyNMPaWKTC2lh0hc4OwKDR2QFAReNhZ/sZtm+3fZft47av\nbiNYlzJdJpFlUZYcElmWyZSlrsadXUT8wvaFEfFz20+T9O+2b46Ib7WQDwBa0WpnZ/vXJX1N0rsj\n4o59f0ZnB6B1a+3sbB+yfZekRyQd2z/ogLpYG4uutDLsIuLJiDhP0mFJv2/7nDaO25VMfQNZcst0\nTsjSTKv32UXEz2yPJR2RdN/+P9/e3tbm5qYkaWNjQ1tbWxqNRpJOnLzStndlyDOdTjkfifNkeH12\nt6fTaW/PP5lMtLOzI0l786SOxp2d7WdLejwi/s/2GZK+LOnaiLhp3350djgQa2OxqrqdXRvv7J4n\n6R9tH9Lssvif9w86AOhb484uIo5HxPkRsRURL4uIv24jWJf2X6L0iSy5ZTonZGmGtbFIhbWx6Apr\nYwEMGmtjAaCiyGGX6TKJLIuy5JDIskymLHUVOewAlIfODsCg0dlhkFgbi64UOewy9Q1kyS3TOSFL\nM0UOOwDlobNDKqyNxaro7ACgoshhl6lvIEtumc4JWZphbSxSYW0sukJnB2DQ6OwAoKLIYZfpMoks\ni7LkkMiyTKYsdRU57ACUh84OwKDR2WGQWBuLrhQ57DL1DWTJLdM5IUszRQ47AOWhs0MqrI3Fqujs\nAKCiyGGXqW8gS26ZzglZmmFtLFJhbSy6QmcHYNDW1tnZPmz7Vtv32j5u+31NjwkAbWujs/ulpPdH\nxLmSXiHpPbZf0sJxO5PpMoksi7LkkMiyTKYsdTUedhHxSERM579+TNL9ks5qelwAaFOrnZ3tTUkT\nSS+dD77qn9HZAWjd2u+zs32mpM9Jumz/oAPqYm0sutLKrSe2n67ZoPtsRHxh2X7b29va3NyUJG1s\nbGhra0uj0UjSiQ5gHdvVvqGP569u78/UZ57pdKrLL7+8t+evynA+dvH6LG4fPXq016/fnZ0dSdqb\nJ3W0chlr+zOS/jci3n+KfdJcxk4mk72T2DeyPFW25WIZzskuspxc3cvYxsPO9islfU3ScUkxf1wR\nEbfs2y/NsENe2YYd8lvbsKuLYYc6GHZYFd8I4BT290N9Iktumc4JWZphbSxSYW0susJlLIBB4zIW\nACqKHHaZLpPIsihLDoksy2TKUleRww5AeejsAAwanR0GibWx6EqRwy5T30CW3DKdE7I0U+SwA1Ae\nOjukwnIxrIrODgAqihx2mfoGsuSW6ZyQpRnWxiIV1saiK3R2AAaNzg4AKoocdpkuk8iyKEsOiSzL\nZMpSV5HDDkB56OwADBqdHQaJtbHoSpHDLlPfQJbcMp0TsjRT5LADUB46O6TC2lisis4OACqKHHaZ\n+gay5JbpnJClGdbGIhXWxqIrrXR2tj8l6Y8kPRoRL1uyD50dgNatu7P7tKTXtHQsAGhdK8MuIr4u\n6SdtHGsdMl0mpchiS7Ym8//29fBkMnscPSpnOC9K8vrMkaWZIj+gAFCetX5Asb29rc3NTUnSxsaG\ntra2NBqNJJ34l2Id26PRaK3PN4htPdXu9mid29OptLU1e0ynmqySv5DtXX3n2f29Pp5/MploZ2dH\nkvbmSR2t3VRs+/mSbuQDigFKshbV47F04YWzjfFYUfnCApbp46Zizx/pZeobMmTxNfPHn83+q4h+\nHglleH12kaWZVoad7eslfUPSi20/ZPuSNo4LAG1hbSzkv3rqG/K4up/XyZMJl7FYGWtjAaCiyGGX\nqW/IlEU/6DtAPpleH7I0w9pY5DIez25BAVpGZ4dcnV01B50daqCzA4CKIoddpr4hU5Y0nV2iy9hM\nrw9Zmily2AEoD50d6OwwaHR2GKYLLzxxYzHQoiKHXaa+IVOWNJ1dIpleH7I0U+SwA1AeOjvk6uxY\nG4sV0dkBQEWRwy5T35ApC53dokyvD1maYW0scmFtLDpCZ4dcnV01B50daqCzA4CKIoddpr4hU5Y0\nnV2iy9hMrw9Zmily2AEoD50d6OwwaHR2GCbWxqIjRQ67TH1DpixpOrtEMr0+ZGmmyGEHoDx0dsjV\n2bE2FiuiswOAiiKHXaa+IVMWOrtFmV4fsjTTytpY20ckHdVseH4qIv62jeOiQKyNRUcad3a2D0n6\nvqQ/lPRfku6Q9LaI+O6+/ejskkrV2VVz0NmhhnV2dhdIeiAifhgRj0u6QdIbWzguemL38wC61Maw\nO0vSw5XtH81/b4HthccyJ9u3rf0nk0mnx19l/93uI0Wep3R2XvJY+gzN99/9JPYkl7F9nZ9l3VSK\n14v9T7nPfmm+n93uX6pRzUuX02X/urrOox9IekTSC2onmv+35vFX3X861UT5Xi/273//X/XDkTY6\nu5dLuiYijsy3/1JS7P+Qgs4ur/2dna7p6XUaT56ySWeHOup2dm0Mu6dJ+p5mH1D8t6RvSXp7RNy/\nbz+GHQ60e1nC3xXUVXfYNe7sIuIJSe+V9BVJ90q6Yf+gyybTPUJkyS3TOSFLM610dhFxi6TfbeNY\nANAF1sYiFS5jsaq1XcYCwBAUOewy9Q1kyS3TOSFLM2nuswOk2eXrEL+QkB+dHYBBo7MDgIoih12m\nyySyLMqSQyLLMpmy1FXksANQHjo7AINGZ4dBWvXb9gB1FTnsMvUNZMkt0zkhSzNFDjsA5aGzQyqs\njcWq6OwAoKLIYZepbyBLbpnOCVmaYW0sUmFtLLpCZwdg0OjsAKCiyGGX6TKJLIuy5JDIskymLHUV\nOewAlIfODsCg0dlhkFgbi64UOewy9Q1kyS3TOSFLM0UOOwDlobNDKqyNxaro7ACgotGws/1W2/fY\nfsL2+W2F6lqmvoEsuWU6J2Rppuk7u+OS3izpthayAIoIjcfjvmPgNNRKZ2d7LOkDEXHnKfahswPQ\nOjo7AKg48Fs82T4m6TnV35IUkq6MiBtXebLt7W1tbm5KkjY2NrS1taXRaCTpRAewju1q39DH81e3\n92fqM890OtXll1/e2/PvPxd9PX91e38mXp/Z9tGjR3v9+t3Z2ZGkvXlSS0Q0fkgaSzr/gH0ii/F4\n3HeEPWRZlCVHBFmWyZRlPlsOnFNtdnZ/HhHfPsU+0cZzAUDVWjo722+y/bCkl0v6ku2bmxwPYG0s\nutJo2EXE5yPidyLijIh4XkS8tq1gXar2MX0jS26ZzglZmuHTWABFYG0sUmFtLFbFfXYAUFHksMvU\nN5Alt0znhCzN8HNjkUrwc2PRETo7AINGZwcAFUUOu0yXSWRZlCWHRJZlMmWpq8hhB6A8dHYABo3O\nDoPE2lh0pchhl6lvIEtumc4JWZopctgBKA+dHVJhbSxWRWcHABVFDrtMfQNZcst0TsjSDGtjkQpr\nY9EVOjsAg0ZnBwAVRQ67TJdJZFmUJYdElmUyZamryGEHoDx0dgAGjc4Og8TaWHSlyGGXqW8gS26Z\nzglZmily2AEoT6POzvZ1kl4v6ReS/lPSJRHxsyX70tnhQKyNxarW1dl9RdK5EbEl6QFJH2p4PADo\nRKNhFxFfjYgn55vflHS4eaTuZeobyJJbpnNClmba7OzeJenmFo+HAkWExuNx3zFwGjqws7N9TNJz\nqr8lKSRdGRE3zve5UtL5EfGWUxyHzg5A6+p2dgd+15OIuOiAJ9qWdLGkVx10rO3tbW1ubkqSNjY2\ntLW1pdFoJOnE22K22Wab7VNtTyYT7ezsSNLePKklIn7lh6Qjku6V9Ns19o0sxuNx3xH2kGVRlhwR\nZFkmU5b5bDlwXjXt7D4u6UxJx2zfafsTDY8HAJ1gbSyAQWNtLAaJtbHoSpHDbrfszIAsuWU6J2Rp\npshhB6A8dHZIhbWxWBWdHQBUFDnsMvUNZMkt0zkhSzP83FikEvzcWHSEzg7AoNHZAUBFkcMu02US\nWRZlySGRZZlMWeoqctgBKA+dHYBBo7PDILE2Fl0pcthl6hvIklumc0KWZoocdgDKQ2eHVFgbi1XR\n2QFARZHDLlPfQJbcMp0TsjTD2likwtpYdIXODsCg0dkBQEWRwy7TZRJZFmXJIZFlmUxZ6ipy2AEo\nD50dgEGjs8MgsTYWXSly2GXqG8iSW6ZzQpZmGg072x+x/R3bd9m+xfZz2woGAG1q1NnZPjMiHpv/\n+lJJ50TEu5fsS2eHA7E2FqtaS2e3O+jmninpySbHA4CuNO7sbH/U9kOS3iHpw80jdS9T30CW3DKd\nE7I0c+Cws33M9t2Vx/H5f18vSRFxVUScLemfJF3adWCc3iJC4/G47xg4DR34jQAi4qKax7pe0k2S\nrlm2w/b2tjY3NyVJGxsb2tra0mg0knTiX4p1bI9Go7U+35C2d/WZh9cn9+tTzdDH808mE+3s7EjS\n3jypo+kHFC+KiP+Y//pSSX8QEX+8ZF8+oADQunXdVHzt/JJ2KunVki5reLy12P+vZJ/IsihLDoks\ny2TKUlej72cXEW9tKwgAdIm1sQAGjbWxGCTWxqIrRQ67TH0DWXLLdE7I0kyRww5AeejskAprY7Eq\nOjsAqChy2GXqG8iSW6ZzQpZm+LmxSIWfG4uu0NkBGDQ6OwCoKHLYZbpMIsuiLDkksiyTKUtdRQ47\nAOWhswMwaHR2GCTWxqIrRQ67TH0DWXLLdE7I0kyRww5AeejskAprY7EqOjsAqChy2GXqG8iSW6Zz\nQpZmWBuLVFgbi67Q2QEYNDo7AKgocthlukwiy6IsOSSyLJMpS11FDjsA5aGzAzBodHYYJNbGoiut\nDDvbH7D9pO3fauN4XcvUN5Alt0znhCzNNB52tg9LukjSD5vHWY/pdNp3hD1kyS3TOSFLM228s/uY\npA+2cJy1+elPf9p3hD1kyS3TOSFLM42Gne03SHo4Io63lAcAOnHgcjHbxyQ9p/pbkkLSVZKu0OwS\ntvpn6T344IN9R9hDltwynROyNPMr33pi+6WSvirp55oNucOSfizpgoj4n5Psz30nADpR59aT1u6z\ns/0DSedHxE9aOSAAtKjN++xCA7mMBVCeta2gAIA+9bKCIsNNyLY/Yvs7tu+yfYvt5/aU4zrb99ue\n2v4X27/RR455lrfavsf2E7bP7ynDEdvftf1923/RR4Z5jk/ZftT23X1lqGQ5bPtW2/faPm77fT1m\neYbt2+dfN8dtX91XlnmeQ7bvtP3Fg/Zd+7BLdBPydRHxexFxnqR/k9TXi/YVSedGxJakByR9qKcc\nknRc0psl3dbHk9s+JOnvJb1G0rmS3m77JX1kkfTpeY4Mfinp/RFxrqRXSHpPX+clIn4h6cL5182W\npNfavqCPLHOXSbqvzo59vLNLcRNyRDxW2XympCd7yvHViNh97m9q9ql2LyLiexHxgPrrXi+Q9EBE\n/DAiHpd0g6Q39hEkIr4uKcWHbRHxSERM579+TNL9ks7qMc/P5798hma3r/XShc3fOF0s6ZN19l/r\nsMt2E7Ltj9p+SNI7JH247zyS3iXp5r5D9OgsSQ9Xtn+kHr+oM7K9qdk7qtt7zHDI9l2SHpF0LCLu\n6CnK7hunWsO29Z9Bkekm5FNkuTIiboyIqyRdNe+GLpV0TR855vtcKenxiLi+iwyrZEFOts+U9DlJ\nl+27Mlmr+ZXIefN++fO2z4mIWpeSbbH9OkmPRsTU9kg1Zknrwy4iLjrZ789vQt6U9B3PvofPYUnf\ntn3Sm5C7zHIS10u6SR0Nu4Ny2N7W7O34q7p4/lWy9OzHks6ubO/eqF4820/XbNB9NiK+0HceSYqI\nn9keSzqimr1Zi14p6Q22L5Z0hqRn2f5MRLxz2f+wtsvYiLgnIp4bES+MiBdodolyXleD7iC2X1TZ\nfJNmPUgfOY5o9lb8DfPyN4s+ers7JL3I9vNt/5qkt0k68FO2Dll57h39B0n3RcTf9RnC9rNt/+b8\n12dodqX23XXniIgrIuLsiHihZn9Pbj3VoJP6/eadfd+EfK3tu21PJb1as091+vBxSWdKOjb/CP0T\nPeWQ7TfZfljSyyV9yfZa+8OIeELSezX7hPpeSTdERF//CF0v6RuSXmz7IduX9JFjnuWVkv5E0qvm\nt3zcOf9Hsg/PkzSef93cLunLEXFTT1lWwk3FAIrAt2UHUASGHYAiMOwAFIFhB6AIDDsARWDYASgC\nww5AERh2AIrw/ww/YK/Hfgv4AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Re_y = np.array([[-1, 0], [0,1]])\n", "reflected_square = transform_the_polygon(unit_square, Re_y)\n", "plot_the_polygon(reflected_square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part 2: Commutativity of Operations" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "The next natural question to ask is the following: Does the *order* in which you apply these operations matter?\n", "\n", "a) Let's see what happens to the unit square when we rotate the matrix by 60 degrees, and then reflect it along the y-axis." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# As the name indicates, R_60 rotates the matrix by 60 degrees.\n", "rotation_angle = np.pi/3 # 60 degrees in radians\n", "R_60 = np.array([[np.cos(rotation_angle), -np.sin(rotation_angle)],\n", " [np.sin(rotation_angle), np.cos(rotation_angle)]])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATsAAAE4CAYAAAAkSFRpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHC1JREFUeJzt3XuUFPWd9/H3d2YAUUSMiUJEGQEhgpeRE8FE8+x4yUrM\nRhOTjbo+MeM+ZvMYRYiXeMGARuMG3VU4Xo4nMcmo+5Csu8kmujFGcpzRJCZIlFFQEVBBwEvcGEQk\ncpvv80f3MD3TPTM9VFXXr6c+r3PmMFVdU/U51cx3+vft+nWZuyMiMtDVpB1ARKQSVOxEJBNU7EQk\nE1TsRCQTVOxEJBNU7EQkE2IrdmZWY2ZPm9kDce1TRCQucb6ymwk8H+P+RERiE0uxM7PRwKnA3XHs\nT0QkbnG9srsVuBzQdAwRCVLkYmdmnwbedPc2wPJfIiJBsahzY83sRuB/AzuAocDewE/d/dxu2+lV\nn4gkwt37fJEV+ZWdu1/t7ge7+1jgLODR7oWuYNsgvubOnZt6BmUp/aX/K8rS369yZfI6uzVr1qQd\nYRdlCVtI50RZoqmLc2fu/hjwWJz7lGxxd5qamtKOIQNQJl/ZhfTLpCzFQskBytKTkLKUK/IbFGUf\nyMwrdSwRyQ4zwyvxBkU1am1tTTvCLspSLJQcoCw9CSlLuTJZ7EQkezSMFZGqpmGsVCUzw0yTcCR+\nmSx2IfUblCVsIZ0TZYkmk8VORLJHPTsJSscQVv9XpFzq2YmIFMhksQup36AsYQvpnChLNLHOjRWJ\nyt2r8hdJwqeenYhUNfXsREQKZLLYhTRMUpZioeQAZelJSFnKlcliJyLZo56diFQ19eykKmlurCQl\nk8UupH6DsoQtpHOiLNFkstiJSPaoZydB0dxY6S/17ERECmSy2IXUb1CWsIV0TpQlGs2NlaBobqwk\nRT07Ealq6tmJiBSIXOzMbIiZLTazpWa2zMzmxhEsSSENk5SlWCg5QFl6ElKWckXu2bn7VjM7wd23\nmFkt8Dsz+6W7PxlDPhGRWMTaszOzPYHHgQvcfUm3x9SzE5HYVbRnZ2Y1ZrYUeANY1L3QiZRLc2Ml\nKbEUO3dvd/ejgdHANDObFMd+kxJSv0FZwhbSOVGWaGK9zs7dN5lZCzAdeL77401NTdTX1wMwYsQI\nGhoaaGxsBDpPXtaWO4SQp62tTecj4DwhPD8dy21tbakdv7W1lebmZoBd9aQckXt2ZvZBYLu7v2Nm\nQ4FfAd9x94e6baeenfRJc2Olv8rt2cXxym4UcI+Z1ZAbFv9790InIpK2yD07d1/m7lPcvcHdj3T3\nb8cRLEndhyhpUpawhXROlCUazY2VoGhurCRFc2NFpKppbqyISIFMFruQhknKUiyUHKAsPQkpS7ky\nWexEJHvUsxORqqaenVQlzY2VpGSy2IXUb1CWsIV0TpQlmkwWOxHJHvXsJCiaGyv9pZ6diEiBTBa7\nkPoNyhK2kM6JskSjubESFM2NlaSoZyciVU09OxGRApksdiENk5SlWCg5QFl6ElKWcmWy2IlI9qhn\nJyJVTT07qUqaGytJyWSxC6nfoCxhC+mcKEs0mSx2IpI96tlJUDQ3VvpLPTsRkQKZLHYh9RuUJWwh\nnRNliUZzYyUomhsrSVHPTkSqWsV6dmY22sweNbPnzGyZmV0cdZ8iInGLo2e3A7jE3ScDHwMuNLOP\nxLDfxIQ0TFKWYqHkAGXpSUhZyhW52Ln7G+7elv9+M/ACcGDU/YqIxCnWnp2Z1QOtwOH5wlf4mHp2\nIhK7il9nZ2bDgP8EZnYvdCLl0txYSUosl56YWR25Qnefu/+8p+2ampqor68HYMSIETQ0NNDY2Ah0\n9gAqsVzYb0jj+IXL3TOlmaetrY1Zs2aldvxCIZyPDnp+ipfnz5+f6u9vc3MzwK56Uo5YhrFmdi/w\nP+5+SS/bBDOMbW1t3XUS06YsXYU2XSyEc9JBWUordxgbudiZ2XHA48AywPNfV7v7w922C6bYSbhC\nK3YSvooVu3Kp2Ek5VOykv/RBAL3o3h9Kk7KELaRzoizRaG6sBEVzYyUpGsaKSFXTMFZEpEAmi11I\nwyRlKRZKDlCWnoSUpVyZLHYikj3q2YlIVVPPTqqS5sZKUjJZ7ELqNyhL2EI6J8oSTSaLnYhkj3p2\nEhRNF5P+Us9ORKRAJotdSP0GZQlbSOdEWaLR3FgJiubGSlLUs5MBoX3nDmpq9bc7i9Szk8x45v7b\nWHnIcP74w2+nHUUClsliF9IwSVmKlZtj/fLf88THD+aoMy/mI+v+yr5Xf4vt729JJUslKEs0mSx2\nUt3e2/Yec1rm8MU7Gzn29+t2rR/3xjaeuPpLKSaTkKlnJ1XD3fnR8h/xjUXfYMO7GwD43s/h/KWd\n22zZawh7rlkPH/xgSiml0tSzk6rU09zYJRuWcPwPj+ecn56zq9ABzD4JNg3u3G7P97bC3LmViCpV\nJpPFLqR+g7L07vV3X+e8n5/H1Lun8sS6J4oetwMO4MUL/r7ryrvugmXLYjl+SOdEWaLJZLGT8G3d\nsZV5v53HhNsn0NzWXPT44NrBXHHcFaycsZJj5t0H48d3PtjeDjNngtomUkA9OwlKxxB23IJxvPSX\nl0puc/rE0/mXv/0Xxn+goMA9+CCcdlrXDX/6U/jc55KKKoHQfWOl6iz/03KOOOCI3MK1xY9P/tBk\n5k+fz8ljTy5+0B2mT4dHHulcN3YsPPcc7LFHInklDHqDohch9RuUBf685c9c9NBFHHXXUSUf33eP\nfbn9U7fT9n/bShc6ADO49Vaore1c9/LLMH9+pGx6fkoLKUu5MlnsJAzbd27ntsW3cehth3LHkjto\n9/bcK7ov5x6vtVouOuYiVs1YxYVTL6Supo/pYJMmwde+1nXdDTfAa68lEV+qTCzDWDP7PvB3wJvu\nfmQP22gYK7ssemkRs341i+ffer7k4yePPZlbT7mVw/c/vH87fvttOPTQ3L8dvvxlaG7e/bAStIr2\n7MzseGAzcK+KnfRm9durufSRS3ngxQdKPj5u33HccsotfGbCZ3b/XhR33gkXXth13eLFMHXq7u1P\nglbRnp27/xb4Sxz7qoSQ+g1ZybJp6yauWHQFk+6YVLLQDRs8jHknz+O5rz3H8NeHR7vpzj/9Exze\n7RXhbl6KkpXnp79CylIu9ewkUe3ezg+W/oAJt03gpiduYnv79i6PG8Z5DeexasYqvnHcNxhSNyT6\nQevqit+Y+MMfYOHC6PuWqlXRDwBramqivr4egBEjRtDQ0EBjYyPQ+ZeiEsuNjY0VPV41LXeIY3/L\n3lzGPe/cw1OvPwWv5Hd8SP7fV2Dy/pNpntXMRz/8UVpbW1nBivien9paOO44Gn/3u9wywMyZNJ5+\nOgwbFsz5TvP5ibLcsS6N47e2ttKc78F21JNyxHadnZmNAR5Uz07WvbOOK359BT9a/qOSj48ePpqb\nTr6Jsw4/q2i4GusNd156KfcO7bZtneuuuQauvz76viUYaVxnZ/mv4HX/K5mmgZTlf97Zwqdvvo6J\nt08sWej2qNuDOf9rDisuXMHZR5yd/M2wx42DSy7puu7mm2HNmrJ3MZCenziFlKVcsRQ7M1sIPAFM\nMLNXzey8OPYr1aG93Zn5vX9n5A0f4aEt1/LXHX8t2ubMyWey4sIVXHfCdew1eK/Khbv6ahg5snN5\n61a4/PLKHV+CoeliEtlJ37qeR31OyceOHnk0C6Yv4BNjPlHWvhK5b+w990BTU9d1ra3wN38T3zEk\nNZobKxWz5MX1TL13Igzu/Ej0Pdv3Z8Hp3+a8hvOorant5ae7SqTYtbfDscfCkiWd6446Cp56quv0\nMqlKmhvbi5D6DQMhyzETR3PikCtzCzsHwe8uY+u/ruQTe53fr0KXmJoaWLCg67pnnoHvf7/PHx0I\nz08SQspSrkwWO4nff8y6jL1e/D9w53JYdDM739un6L2Bcrg7LS0t8Qf82MfgnHO6rps9GzZujP9Y\nEiQNYyU2998PZ57Zdd0vfgGnnppOniLr18PEibCl4A5kX/863HJLepkkMvXspOLccz3/3/ymc93E\nifDsszB4cM8/V1E33ADf/Gbncl0dLF+eCypVST27XoTUbxhIWcxyrbHCy+defBHuuKOyOXp16aUw\nZkzn8o4dxdfiVSpLPylLNJksdpKco4+G88/vuu666+Ctt9LJU2To0NyFxYUeeij3JQOahrESuz/9\nKfeRcps2da776ldzN/0Kgjs0NsLjj3euC268LeXSMFZSs//+MKfbNcbf/S60tfX9sz3dNzZWcY23\npapkstiF1G8YqFlmzMi9uuvgDrNmBXR3w4YG+MpXuq4rMd4eqM9PVCFlKVcmi50kb/Dg3P1vCj32\nGPzkJ+nkKen662H4cADazbh32jS+ef/9KYeSpKhnJ4lxz11j9/DDnevGjIEXXsi9T1BKItPFenPL\nLSy++24unjGDJw87DGtv5+nhw2n46Ecrc3yJTD07SZ1Z7nrduoKPiF27NpxreF/bupVzTzmFY++8\nkycPOwwAr6lh1vLleHt7yukkbpksdiH1GwZ6lsMOK773zY03woYNsR+qbO/v3MmNa9cyYfFi7itx\nTczvP/xhnl+2DBj4z8/uCilLuTJZ7KSy5s6F/fbrXN6yBa68svS2ic2Nze/7J2+9xWFLljD7lVd4\nr8SrtzNWr+aF+nomH1X6ht1SvdSzk4q46y644IKu6554Ijc/vxKe2byZWatX09rDxP/D6+pYsHUr\nJ550UmUCSWw0N1aCsnMnTJmSu263wzHH5G76VZPg+OKtbduYs2YN333tNUp14farq+P6Qw7hK6NG\nUZdkEEmM3qDoRUj9hqxkqa0tvrvhkiXwb/+WTI7t7e0sWL+eCU8+yV0lCl0tcPGBB7Jy2jQuOPDA\nHgtdVp6f/gopS7kyWewkHSecAGec0XXdlVfCu+/Ge5yH//xnjvzjH5m1ejUbd+woevxv992XZ485\nhgWHHsoHBg2K9+ASLA1jpaJefjl3d8OtWzvXXXVV7h3aqFZu2cIlq1fzi7ffLvn4+KFDuXXcOD69\n337JT0mTilHPToI1e3bX4jZ4cO5C47Fjd++i4nd27OD6NWtYsGEDO0r83N61tcwZM4aLR49msPpy\nA456dr0Iqd+QxSxXXQWjRnUub9sGl13W//3sdOd7r73GoYsX86/r1xcVOgPOHzWKVdOmcdnBB+9W\nocvi81OOkLKUq67vTUTiNWwYzJsH557bue6//gsefbT8fTy+cSMzV6+mbfPmko8fv88+LBg/nil7\n7x0xrQwUGsZKKtrb4eMfh8WLO9cdcQQsW9b7MHbt++9z+Usv8R89fBroQUOGcPO4cXzxQx9SXy4j\n1LOT4C1enLuda1eli917O3cy79VXuXndOt4vMfNhaE0NVxx8MJcfdBB76l6wmaKeXS9C6jdkOcu0\nafClL/W+jbuz8M03mbh4MdevXVuy0J29//68OHUqc+vrYy90WX5+ehNSlnLFUuzMbLqZrTCzlWZ2\nRRz7lGz453+GvfYqXOOccUZubuySTZs4fulSznnhBTZs21b0s1OGDeM3DQ0snDSJg/bYozKBpWpF\nHsaaWQ2wEjgJeA1YApzl7iu6badhrJR04425y1E61HxoK6c98Ao/e/+NktsfMGgQN44dS9PIkdSo\nL5d5FevZmdmxwFx3/1R++UrA3X1et+1U7KSk99/PfRTUmg3t8Pn18KW1sOfOou0GmfH10aOZPWYM\nw+t0IYHkVLJndyCwrmB5fX5dyVDdv3pSatu4tm9tbU10//3ZvqP3EUKewj5MJfMMHWqsWWOwvRa+\n+jKsfKr4B044ge2Njdw0fjz7DBpUsfPTU28qhOdL2/fv5kzBvEHR2trar6anto9/+7Zybv9VoTy0\ntUFbG4cN3ZNHjjwy9TzaPpztd/fNkbiGsde6+/T8soaxslvuf2ozZ278I9SCvVvH59+t576//zB7\nDArmb7IEyKxyPbta4EVyb1C8DjwJnO3uL3TbTsVO+tQxLFn5xjYOPUCfSCJ9K7fYRf6T6e47gYuA\nR4DngB93L3ShCekaIWUpLZRCF9I5UZZoYnlLy90fBibGsS8RkSRoupgEpWMYq/8rUq6KDWNFRKpB\nJotdSP0GZQlbSOdEWaLRZegSFHevyl8kCZ96diJS1dSzExEpkMliF9IwSVmKhZIDlKUnIWUpVyaL\nnYhkj3p2IlLV1LOTqtTfj+0RKVcmi11I/QZlCVtI50RZoslksROR7FHPToKiubHSX+rZiYgUyGSx\nC6nfoCxhC+mcKEs0mhsrQdHcWEmKenYiUtXUsxMRKZDJYhfSMElZioWSA5SlJyFlKVcmi52IZI96\ndiJS1dSzk6qkubGSlEwWu5D6DcoStpDOibJEk8liJyLZo56dBEVzY6W/1LMTESkQqdiZ2RfMbLmZ\n7TSzKXGFSlpI/QZlCVtI50RZoon6ym4Z8DngsRiyiODutLS0pB1DBqBYenZm1gJc6u5P97KNenYi\nEjv17ERECvT5EU9mtgg4oHAV4MBsd3+wPwdramqivr4egBEjRtDQ0EBjYyPQ2QOoxHJhvyGN4xcu\nd8+UZp62tjZmzZqV2vG7n4u0jl+43D2Tnp/c8vz581P9/W1ubgbYVU/K4u6Rv4AWYEof23goWlpa\n0o6wi7IUCyWHu7L0JKQs+drSZ52Ks2d3mbs/1cs2HsexREQKVaRnZ2afNbN1wLHAf5vZL6PsT0Rz\nYyUpkYqdu//M3Q9y96HuPsrdPxVXsCQV9mPSpixhC+mcKEs0ejdWRDJBc2MlKJobK/2l6+xERApk\nstiF1G9QlrCFdE6UJRrdN1aC4rpvrCREPTsRqWrq2YmIFMhksQtpmKQsxULJAcrSk5CylCuTxU5E\nskc9OxGpaurZSVXS3FhJSiaLXUj9BmUJW0jnRFmiyWSxE5HsUc9OgqK5sdJf6tmJiBTIZLELqd+g\nLGEL6ZwoSzSaGytB0dxYSYp6diJS1dSzExEpkMliF9IwSVmKhZIDlKUnIWUpVyaLnYhkj3p2IlLV\n1LOTqqS5sZKUTBa7kPoNyhK2kM6JskSTyWInItkTqWdnZjcBnwG2Ai8B57n7ph62Vc9O+qS5sdJf\nlerZPQJMdvcGYBVwVcT9iYgkIlKxc/dfu3t7fvEPwOjokZIXUr9BWcIW0jlRlmji7Nn9I/DLGPcn\nGeTutLS0pB1DBqA+e3Zmtgg4oHAV4MBsd38wv81sYIq7f76X/ahnJyKxK7dn1+ennrj7J/s4UBNw\nKnBiX/tqamqivr4egBEjRtDQ0EBjYyPQ+bJYy1rWspZ7W25tbaW5uRlgVz0pi7vv9hcwHXgO2K+M\nbT0ULS0taUfYRVmKhZLDXVl6ElKWfG3ps15F7dndBgwDFpnZ02Z2Z8T9iYgkQnNjRaSqaW6sVCXN\njZWkZLLYdTQ7Q6AsYQvpnChLNJksdiKSPerZSVA0N1b6Sz07EZECmSx2IfUblCVsIZ0TZYlG942V\noLjuGysJUc9ORKqaenYiIgUyWexCGiYpS7FQcoCy9CSkLOXKZLETkexRz05Eqpp6dlKVNDdWkpLJ\nYhdSv0FZwhbSOVGWaDJZ7EQke9Szk6Bobqz0l3p2IiIFMlnsQuo3KEvYQjonyhKN5sZKUDQ3VpKi\nnp2IVDX17ERECmSy2IU0TFKWYqHkAGXpSUhZypXJYici2aOenYhUNfXspCppbqwkJZPFLqR+g7KE\nLaRzoizRRCp2ZvYtM3vGzJaa2cNmNjKuYCIicYrUszOzYe6+Of/9DGCSu1/Qw7bq2UmfNDdW+qsi\nPbuOQpe3F9AeZX8iIkmJ3LMzsxvM7FXgH4A50SMlL6R+g7KELaRzoizR9FnszGyRmT1b8LUs/+9n\nANz9Gnc/GPh/wIykA8vA5u60tLSkHUMGoD4/CMDdP1nmvhYCDwHX9rRBU1MT9fX1AIwYMYKGhgYa\nGxuBzr8UlVhubGys6PGqablDmnn0/IT9/BRmSOP4ra2tNDc3A+yqJ+WI+gbFeHdfnf9+BvAJd/9i\nD9vqDQoRiV2lLir+Tn5I2wacDMyMuL+K6P5XMk3KUiyUHKAsPQkpS7kifZ6du38hriAiIknS3FgR\nqWqaGytVSXNjJSmZLHYh9RuUJWwhnRNliSaTxU5Eskc9OwmK5sZKf6lnJyJSIJPFLqR+g7KELaRz\noizR6L6xEhTdN1aSop6diFQ19exERApkstiFNExSlmKh5ABl6UlIWcqVyWInItmjnp2IVDX17KQq\naW6sJCWTxS6kfoOyhC2kc6Is0WSy2IlI9qhnJ0HR3FjpL/XsREQKZLLYhdRvUJawhXROlCUazY2V\noGhurCRFPTsRqWrq2YmIFMhksQtpmKQsxULJAcrSk5CylCuTxU5Eskc9OxGpaurZSVXS3FhJSizF\nzswuNbN2M/tAHPtLWkj9BmUJW0jnRFmiiVzszGw08ElgbfQ4ldHW1pZ2hF2UJWwhnRNliSaOV3a3\nApfHsJ+K2bhxY9oRdlGWsIV0TpQlmkjFzsxOA9a5+7KY8oiIJKLP6WJmtgg4oHAV4MA1wNXkhrCF\njwVvzZo1aUfYRVnCFtI5UZZodvvSEzM7HPg1sIVckRsNbACmuvufSmyv605EJBHlXHoS23V2ZvYK\nMMXd/xLLDkVEYhTndXZOlQxjRSR7KjaDQkQkTanMoAjhImQz+5aZPWNmS83sYTMbmVKOm8zsBTNr\nM7OfmNnwNHLks3zBzJab2U4zm5JShulmtsLMVprZFWlkyOf4vpm9aWbPppWhIMtoM3vUzJ4zs2Vm\ndnGKWYaY2eL8780yM5ubVpZ8nhoze9rMHuhr24oXu4AuQr7J3Y9y96OBXwBpPWmPAJPdvQFYBVyV\nUg6AZcDngMfSOLiZ1QC3A6cAk4GzzewjaWQBfpjPEYIdwCXuPhn4GHBhWufF3bcCJ+R/bxqAT5nZ\n1DSy5M0Eni9nwzRe2QVxEbK7by5Y3AtoTynHr92949h/IPeudirc/UV3X0V6vdepwCp3X+vu24Ef\nA6enEcTdfwsE8Wabu7/h7m357zcDLwAHpphnS/7bIeQuX0ulF5Z/4XQqcHc521e02IV2EbKZ3WBm\nrwL/AMxJOw/wj8Av0w6RogOBdQXL60nxlzpEZlZP7hXV4hQz1JjZUuANYJG7L0kpSscLp7KKbez3\noAjpIuRessx29wfd/RrgmnxvaAZwbRo58tvMBra7+8IkMvQni4TJzIYB/wnM7DYyqaj8SOTofH/5\nZ2Y2yd3LGkrGxcw+Dbzp7m1m1kgZtST2Yufunyy1Pn8Rcj3wjOU+w2c08JSZlbwIOcksJSwEHiKh\nYtdXDjNrIvdy/MQkjt+fLCnbABxcsNxxoXrmmVkduUJ3n7v/PO08AO6+ycxagOmU2TeL0XHAaWZ2\nKjAU2NvM7nX3c3v6gYoNY919ubuPdPex7n4IuSHK0UkVur6Y2fiCxc+S64OkkWM6uZfip+Wbv6FI\no2+3BBhvZmPMbDBwFtDnu2wJMsK5dvQHwPPuviDNEGb2QTPbJ//9UHIjtRWVzuHuV7v7we4+ltz/\nk0d7K3SQ7od3pn0R8nfM7FkzawNOJveuThpuA4YBi/Jvod+ZUg7M7LNmtg44FvhvM6to/9DddwIX\nkXuH+jngx+6e1h+hhcATwAQze9XMzksjRz7LccA5wIn5Sz6ezv+RTMMooCX/e7MY+JW7P5RSln7R\nRcUikgn6WHYRyQQVOxHJBBU7EckEFTsRyQQVOxHJBBU7EckEFTsRyQQVOxHJhP8P9tQkBWAd3aUA\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "reflected_after_rotated_square = transform_the_polygon(unit_square, R_60)\n", "reflected_after_rotated_square = transform_the_polygon(reflected_after_rotated_square, Re_y)\n", "plot_the_polygon(reflected_after_rotated_square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Now, let's reflect *before* rotating." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n8L+meRkj3gNB2gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rotated_after_reflected_square = transform_the_polygon(unit_square, Re_y)\n", "rotated_after_reflected_square = transform_the_polygon(rotated_after_reflected_square, R_60)\n", "plot_the_polygon(rotated_after_reflected_square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also scale the square: " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# S is a \"scalar matrix.\"\n", "S = np.array([[2, 0],\n", " [0, 2]])\n", "scaled_square = transform_the_polygon(unit_square, S)\n", "plot_the_polygon(scaled_square)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "py36", "language": "python", "name": "py36" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 1 }