{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# EE16A Discussion 2B" ] }, { "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": 3, "metadata": {}, "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": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\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": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAT4AAAEzCAYAAACopm/uAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHDNJREFUeJzt3Xl8VPW9//HXhxAWCUjRWBcE3ILVuiVRoba9RO2Vqtft2lbvdddM7NUuKrUqrf7UWvvTK1qvVhNwQ1yIrZbGpQrtoNUr1hmKisVE61IxKuKaiCwhn/tHFhlMSMicyTnMeT8fjzwezDdnvuedCbw5Z84y5u6IiMTJgLADiIj0NxWfiMSOik9EYkfFJyKxo+ITkdhR8YlI7ARWfGZWYGZ/M7MHg5pTRCQXgtzi+xGwJMD5RERyIpDiM7PRwGHAjCDmExHJpaC2+K4DzgdaA5pPRCRnBmY7gZkdDixz97SZTdrAcgkgATBkyJCyMWPGZLvqQLS2tjJgQDSO8ShLpoaGBgBKSkpCzdEhCq9JB2XpWkNDw3J3L+5xQXfP6gu4ElgKvA68A6wAZm3oOSUlJR4VyWQy7AidlCUT4G1/RaMhCq9JB2XpGpDyXvRW1jXt7he6+2h3HwccB/zZ3U/Idl4RkVyJxvapiEg/yvo9vnW5+3xgfpBziogETVt8IhI7Kj4RiZ1Ad3VFguTuzJ8/P+wYkoe0xScisaPiE5HY0a6uRFZZWRlNTU2dV3CIBEXFJ5G1cOHCsCNIntKurojEjopPRGJHxScisaPiE5HYUfGJSOzoqK5EVmVlJY2NjWHHkDyk4pPIqqmp0SVrkhPa1RWR2FHxSWSl02nq6+vDjiF5SLu6Elnl5eUAVFVVhZxE8o22+EQkdlR8IhI7Kj4RiR0Vn4jEjopPRGJHxScisaPTWSSyUqkUqVQq7BiSh1R8Elkdt54XCVrWu7pmNsTM/mpmz5nZi2Z2aRDBRERyJYgtvlXAge7ebGaFwJNm9oi7LwhgbomxRCJBY2MjkyZNCjuK5Jmsi8/dHWhuf1jY/uXZzisyffr0sCNIngrkqK6ZFZjZImAZMNfdnwliXhGRXLC2DbaAJjMbCTwA/MDdF6/3vQSQACguLi6rra0NbL3ZaG5upqioKOwYgLKsr6KiAoBkMhlqjg5ReE06KEvXKioq0u5e3uOC7h7oF3AJMGVDy5SUlHhUJJPJsCN0UpZMtL1lEnaMTlF4TTooS9eAlPeip4I4qlvcvqWHmQ0FDgZeynZeEZFcCeKo7jbAHWZWQNt7hrXu/mAA84qI5EQQR3WfB/YJIItIhtLSUp3ALDmhKzckstLptD5sSHJCNykQkdhR8YlI7GhXVyLLzAA6TpMSCYy2+EQkdlR8IhI7Kj4RiR0Vn4jEjopPRGJHxScisaPTWSSyqqurqa+vDzuG5CEVn0RWIpHQJWuSE9rVFZHYUfFJZNXU1FBXVxd2DMlDKj6JrKqqKqZNmxZ2DMlDKj4RiR0Vn4jEjopPRGJHxScisaPiE5HYUfGJSOzoyg2JLHfXlRuSE9riE5HYUfGJSOxoV1ciq6ysjKamJhoaGsKOInkm6+Izs+2BmcDWQCtQ4+6/znZekYULF4YdQfJUEFt8LcB57r7QzIYDaTOb6+5/D2BuEZHAZf0en7u/7e4L2//cBCwBtst2XhGRXAn04IaZjQP2AZ4Jcl4RkSBZUJ9Sb2ZFwOPAFe5+fxffTwAJgOLi4rLa2tpA1put5uZmioqKwo4BKMv6KioqAEgmk6Hm6BCF16SDsnStoqIi7e7lPS7o7ll/AYXAo8C5vVm+pKTEoyKZTIYdoZOyZAK87a9oNEThNemgLF0DUt6LDgriqK4BtwBL3F13jZTAVFZW0tjYGHYMyUNBHNU9ADgReMHMFrWPXeTuDwcwt8RYTU2NLlmTnMi6+Nz9ScACyCIi0i90yZpEVjqd1ufqSk7okjWJrPLytoNzVVVVISeRfKMtPhGJHRWfiMSOik9EYkfFJyKxo+ITkdhR8YlI7Oh0FomsVCpFKpUKO4bkIRWfRFbHredFgqZdXRGJHW3xSWQlEgkaGxuZNGlS2FEkz6j4JLKmT58OwLL3lrBV8VdCTiP5RLu6Eklv/PPJzj+fUfc9lr+3JMQ0km9UfBI5ry79X07505mdj18rcCrrvsvH770UYirJJyo+iZSGDxs49ckLWD4g8xaPu372KcPu/i589M+Qkkk+UfFJZCx5fwmnP3o6H6z6MGP8qKZmfvHe+wz88A247VD44LWQEkq+UPFJJCxevpjTHzudj1Z99IXvXbr8Awo6Hnz8Zlv5LX+lX/NJflHxSegWLVtE5WOVNK3OPFl52/HbsssuOzNg92Myn9DUCLcfCsv0np/0jYpPQpV6J0ViboLmNc0Z46fsfgpLlyylpmY6HDMd9vxe5hOb34XbD4N3X+zHtJIvVHwSmgVvL+D7877PZy2fZYxX7lHJuWXn0vbJpUDBQDjqJtj7hMwJViyH2w+Ht5/rp8SSL1R8Eoqn3nqKs/90NivXrswYP2vvs/hh6Q8/L70OAwrgiP+B8tMyxz/7AO74N1iaznFiySe6ckP63fw353Pu/HNZ07omY/zHpT/m9D1O73zcUX7u3jYwYAAcNg0KBsEzN3/+xJUfw8wj4YTfwZj9c55fNn3a4pN+Ne+NeZyTPOcLpfeT8p9klF63zGDyr+BrP8wcX90Edx4Nrz8VYFrJVyo+6TePvPYIUx6fQou3ZIxftP9FnLT7Sb2fyAy+dRl8Y0rm+JpPYda/w6vzsw8reS2Q4jOzW81smZktDmI+yT91/6jjgr9cwFpf2zlmGJdMvITjdz1+4yc0g4N+DhVTM8dbPoO7vwcvz8syseSzoLb4bgcmBzSX5JkHXn6AqU9OpdVbO8cG2AAuP+Byji05NrvJ/+V8OPj/ZY61rIR7j4f6R7KbW/JWIMXn7k8AHwQxl+SX2S/N5uL/vRjHO8cKrIBffv2XHLnzkcGs5OvnwCG/zBxbuxpmnwB/nxPMOiSv6D0+yZlZf5/FL575RcbYQBvIVd+8isN2PCzYlU08Cw7978yx1ha471R44bfBrks2edZ5qkC2E5mNAx5096928/0EkAAoLi4uq62tDWS92WpubqaoqCjsGEB+ZZn38TzmfJS5tVVAAacVn8aem+3Zqznq6upYtWoVxx7b+93hbRofo6ThN9g6W5jOAF7a9Qe8u/WBvZ6nK/n0+wlSlLJUVFSk3b28p+X6rfjWNX78eK+vrw9kvdmaP39+ZG5tni9Zqp+r5oZFN2SMDRowiOsqruMbo7+R+xyL7oE5/wXrvKcIBkdcD6UbcfQ4iCw5oixdM7NeFZ9OYJbAuDs3LrqR6uerM8aHFAzh+gOvZ+K2E/snyN7HQ0Eh3J+AzqPIDn/4Qdt7f/ue0T85JLKCOp3lHuBpYLyZLTWzXpyJKvnE3bl24bVfKL2hA4fym4N/06fSq6mpoa6urm+B9jgWvnMbDFjv//aHzoMFN/VtTskbQR3VPd7dt3H3Qncf7e63BDGvbBrcnauevYrbFt+WMT6scBjV36pm36337dO8VVVVTJs2re/BdjsSvntn2yVu6/rjBfDkdX2fVzZ5OqorWWn1Vq545gpmLZmVMT68cDg136phn632CSlZu10PhePugYLBmePzLoHHrwonk4ROxSd91uqtXPb0Zcyun50xvvngzZlxyAz2LO7d0duc2+Vg+M9aGDg0czx5Bfz5FxDQAT7ZdKj4pE9aVq3kkVMnUz/3vozxUUNGccu/3sJuW+wWUrJu7DgJTvgtFA7LHH/iap68+Sy8tbWrZ0meUvHJRlu9+jMePeMwdlzwJhfc18pe/2grjS2GbMGth9zK+FHjQ07YjXFfhxPvh0HDM4a//u5dPHNzlcovRlR8slFaW1v5Y+Xh7PhsIwCDWuD837Vy4BsjuG3ybew0cqeQE/ZgzAQ4aQ6rB47IGJ6wrJZ0zZndPEnyjYpPNsqAAQMYtvseGWOFa+HM2R+zxTMvh5Rq48xauiVHf/pTPvTPrzZY4wWsHXNAiKmkP6n4ZKMddP51/LNyvZvxrF3LW+ecy8cPPRTYetydZDIZ2HwAtz31Gj/7/WJe9B04bvXPWO4jWOvGCxOuYf9DTw50XRJdKj7pk0POu5a3zz6q7b54HdaupfEn5/PR738fXrANqH78H1xa9/fOx/U+hhNbfs7iidMo/fapISaT/qZL1qTPDjz7Sj7abn/evuiiz08JaW3l7QsvgpYWRm7EzQVy7X/+9DLXzG3IGBs0cADnn3AUe+26VUipJCwqPsnKyKOPwgYOpPGCC2Bt+3Wx7rz9s5/ja9bwpeP7cHfldmVlZTQ1NdHQ0NDzwt1wd66d28D1f34lY3xI4QCmn1TON3Yp7vPcsulS8UnWNv+3w7HCQt6aMgVaPv88jXcuvQxfs4ZRJ/XtjigLFy7MKpe78///WM/Nj/8jY3yzQQXccvK+TNxpi6zml02X3uOTQIyYfAijf30dFBZmjL/7yyt5f8aMfs/j7lz+4JIvlF7R4IHMPG0/lV7MqfgkMMMPOojtb7wBG5R5U4Bl/30Ny2/qvzuitLY6F895kVufei0z35CB3Hn6fpSPG9VvWSSaVHwSqKJvfpPtb74JGzIkY/y9X1/Pe9dfT1A3vu1Oa6tz0QMvcOeCNzLGR25WyN1nTGCfMV/K6fpl06Dik8AN+9rX2L6mGttss4zx5b+5ifeuuSZn5be21Zny2+e499k3M8ZHDRvE3WdMYI/Rm+dkvbLpUfFJTgzbbz/GzJjOgGGZNwV4f8YtvHvllYGXX8vaVs6ZvYj7F76VMb5l0WDuTUxgt21HdPNMiSMVn+TMZqWljLn1FgYMz7wpwIcz7+Sdyy7r8aYAlZWVHHZYz5/GtrqllR/c8zf+8FxjxviXRwxmdtUESr48vJtnSlyp+CSnhu61F2Nuv42CzTN3Mz+6517eueSSDZZfTU0NU6ZM2eD8q1rW8l93pXlk8TsZ49uNHEpt1UR2Ko7Gp39JtKj4JOeG7r47Y2beQcGozKOpH933W96+8CK848TnjbRyzVoSM9PMW7IsY3z7UUO5NzGBsVsM6+aZEncqPukXQ8aPZ+zMOyjYcsuM8Y/nzKHxJ+fja9Z84TnpdJruPob0s9VrOf2OZ3m84b2M8R22HMbsxES2H7VZl88TARWf9KPBO+/M2JkzGbhV5rWxnzz8MG+dNwVfvTpjvLy8nDPP/OI98j5d1cIpt/2Vp155P2N8p+JhzE5MYNuRQ7/wHJF1qfikXw3ecQfGzrqTgdtukzHe9NhjLP3Rj2ldr/zW98nKNZx061955rUPMsbHf3k49yYmstWIId08U+RzKj7pd4PGjGHcnXdSOHp0xnhzMsnSs86mdeXKLp/38Yo1nDjjGdJvfJgxvts2I7gnMYHi4YO7fJ7I+lR8EorC7bZj7Kw7GTR2bMb4p3/5C29+//u0rliRMf7hp6v5jxkLeG7pxxnje47enLsr92fUsPU+O1dkA1R8EprCrbdmzJ0zGbRT5ud0rHh6AW8mqjofL29exfHTF/Bi4ycZy5WOGcmsM/Zn5GYqPdk4gRSfmU02s3oze8XMLghiTomHwq22YuzMOxhcUpIxviKV6vzzcTULeOmdpozv77fDKGaevj8jhmTeDUakN7IuPjMrAG4Evg3sBhxvZhH7UFWJsoFbbMGYO25n8Fe+0uX331maeZ7e13bagttP3ZeiwbqdpPRNEFt8+wGvuPur7r4auBc4MoB5JUYGfulLjL39Nobs8fknuN03dhz3jR3HlU9VM2LVpwB8s6SYW0/Zl80GqfQkC+6e1RdwLDBjnccnAjf08Bzv7qu6uto7VFdXd7tcW/TPlZaWdrtcZWVl53KpVGqDc6ZSqc5lKysru12utLQ0Y/359jMlk8lQfqaWTz7x+mO/5/eNHaff0wZ+pmQymXc/U0C/p5T3oreC+G/TuhjzLyxklgASPU1WX1/P/PnzO/+8IR3LATQ1NXW7XGNjY6/nTKVSnXM1NjZ2u1xTU1PG+jdkU/yZmpubNzhnrn6mv6TTrDnlZJa+uhTeeL3bZeP+e2pubu7Vz7Up/Uy5+D11qzftuKEvYCLw6DqPLwQu3NBzSkpKPCrW/Z8zbMryueYPP/FDthvn39l8c//D0Sf5qpWrQs3jHv5rsi5l6Rr9uMX3LLCLme0AvAUcB/xHAPNKjA0bOZxH33odgLvurqFwsE5ZkeBkXXzu3mJmZwOPAgXAre7+YtbJRNoVDtEVGRKsQA6NufvDwMNBzCUikmu6ckNEYkfFJyKxo+ITkdjR6e8SWaWlpRs8n0ykr1R8ElnpdLrXJ7WKbAzt6opI7Kj4RCR2tKsrkWXWdhl425VIIsHRFp+IxI6KT0RiR8UnIrGj4hOR2FHxiUjsqPhEJHZ0OotEVnV1dd9vLS6yASo+iaxEIqFL1iQntKsrIrGj4pPIqqmpoa6uLuwYkodUfBJZVVVVTJs2LewYkodUfCISOyo+EYkdFZ+IxI6KT0RiR8UnIrGj4hOR2Mmq+MzsO2b2opm1mll5UKFEoO3Oy8lkMuwYkoey3eJbDBwDPBFAFhGRfpHVtbruvgQ+/2wEEZFNgW5SIJFVVlZGU1MTDQ0NYUeRPGM9fYKVmc0Dtu7iW1PdfU77MvOBKe6e2sA8CSABUFxcXFZbW9vXzIFqbm6mqKgo7BiAsqyvoqICIDLv80XhNemgLF2rqKhIu3vPxxvcPesvYD5Q3tvlS0pKPCqSyWTYETopSybA2/6KRkMUXpMOytI1IOW96CCdziIisZPt6SxHm9lSYCLwkJk9GkwsEZHcyfao7gPAAwFlERHpF9rVFZHY0eksElmVlZU0NjaGHUPykIpPIqumpkYfNiQ5oV1dEYkdFZ9EVjqd1ufqSk5oV1ciq7y87QT8qqqqkJNIvtEWn4jEjopPRGJHxScisaPiE5HYUfGJSOyo+EQkdnQ6i0RWKpUiler23rYifabik8jquPW8SNC0qysisaMtPomsRCJBY2MjkyZNCjuK5BkVn0TW9OnTw44geUq7uiISOyo+EYkdFZ+IxI6KT0RiR8UnIrGjo7oSWaWlpTqBWXJCxSeRlU6n9WFDkhPa1RWR2Mmq+MzsajN7ycyeN7MHzGxkUMFERHIl2y2+ucBX3X1PoAG4MPtIIm3MjIqKirBjSB7Kqvjc/TF3b2l/uAAYnX0kEZHcCvI9vtOARwKcT0QkJ8zdN7yA2Txg6y6+NdXd57QvMxUoB47xbiY0swSQACguLi6rra3NJndgmpubKSoqCjsGoCzr69jNTSaToeboEIXXpIOydK2ioiLt7uU9LujuWX0BJwNPA5v19jklJSUeFclkMuwInZQlE+Btf0WjIQqvSQdl6RqQ8l50UFbn8ZnZZOCnwL+4+4ps5hIR6S/Zvsd3AzAcmGtmi8zs5gAyiYjkVFZbfO6+c1BBRNZXXV1NfX192DEkD+mSNYmsRCKhS9YkJ3TJmojEjopPIqumpoa6urqwY0geUvFJZFVVVTFt2rSwY0geUvGJSOyo+EQkdlR8IhI7Kj4RiR0Vn4jEjopPRGJHV25IZLm7rtyQnNAWn4jEjopPRGJHu7oSWWVlZTQ1NdHQ0BB2FMkzKj6JrIULF4YdQfKUdnVFJHZUfCISOyo+EYkdFZ+IxI6KT0RiR0d1JbIqKytpbGwMO4bkIRWfRFZNTY0uWZOc0K6uiMSOik8iK51O63N1JSe0qyuRVV5eDrR96JBIkLLa4jOzy83seTNbZGaPmdm2QQUTEcmVbHd1r3b3Pd19b+BB4OIAMomI5FRWxefun6zzcBjg2cUREcm9rN/jM7MrgJOAj4GKrBOJiOSYuW94I83M5gFbd/Gtqe4+Z53lLgSGuPsl3cyTABIAxcXFZbW1tX0OHaTm5maKiorCjgEoy/oqKtr+H00mk6Hm6BCF16SDsnStoqIi7e7lPS7o7oF8AWOBxb1ZtqSkxKMimUyGHaGTsmSi7a2TsGN0isJr0kFZugakvBcdlNWurpnt4u4vtz88Angpm/lE1pVKpUilUmHHkDyU7Xt8vzKz8UAr8AZwZvaRRNp03HpeJGhZFZ+7/3tQQURE+ouu3JDISiQSNDY2MmnSpLCjSJ5R8UlkTZ8+PewIkqd0kwIRiR0Vn4jEjopPRGJHxScisaPiE5HY0VFdiazS0lKdwCw5oeKTyEqn0/qwIckJ7eqKSOyo+EQkdrSrK5FlZgAdtz0TCYy2+EQkdlR8IhI7Kj4RiR0Vn4jEjopPRGJHxScisaPTWSSyqqurqa+vDzuG5CEVn0RWIpHQJWuSE9rVFZHYUfFJZNXU1FBXVxd2DMlDKj6JrKqqKqZNmxZ2DMlDKj4RiR0Vn4jETiDFZ2ZTzMzNbMsg5hMRyaWsi8/Mtge+Bfwz+zgiIrkXxBbftcD5gG6aJiKbhKyKz8yOAN5y9+cCyiMiknM9XrlhZvOArbv41lTgIuBfe7MiM0sAifaHq8xscW9D5tiWwPKwQ7RTli/a0syikAOi85qAsnRnfG8Wsr7e1tvM9gD+BKxoHxoNNAL7ufs7PTw35e7lfVpxwJSla1HJEpUcoCzd2RSz9PlaXXd/AdhqnRW+DpS7e1SaX0SkSzqPT0RiJ7C7s7j7uI1YvCao9QZAWboWlSxRyQHK0p1NLkuf3+MTEdlUaVdXRGIn9OKLwuVuZna5mT1vZovM7DEz2zakHFeb2UvtWR4ws5Fh5GjP8h0ze9HMWs0slCN2ZjbZzOrN7BUzuyCMDO05bjWzZVE4BcvMtjezpJktaf/9/CjELEPM7K9m9lx7lkvDytKep8DM/mZmD/a0bKjFF6HL3a529z3dfW/gQeDikHLMBb7q7nsCDcCFIeUAWAwcAzwRxsrNrAC4Efg2sBtwvJntFkYW4HZgckjrXl8LcJ67fwWYAJwV4uuyCjjQ3fcC9gYmm9mEkLIA/AhY0psFw97ii8Tlbu7+yToPhxFSHnd/zN1b2h8uoO3cyFC4+xJ3D/MDL/YDXnH3V919NXAvcGQYQdz9CeCDMNa9Pnd/290Xtv+5ibZ/6NuFlMXdvbn9YWH7Vyj/dsxsNHAYMKM3y4dWfFG73M3MrjCzN4H/JLwtvnWdBjwSdogQbQe8uc7jpYT0DzyqzGwcsA/wTIgZCsxsEbAMmOvuYWW5jraNqNbeLJzTDxsK6nK3XGdx9znuPhWYamYXAmcDl4SRo32ZqbTt0tyViwwbkyVE1sWYTkFoZ2ZFwO+AH6+3x9Kv3H0tsHf7+9EPmNlX3b1f3ws1s8OBZe6eNrNJvXlOTovP3Q/uarz9crcdgOfMDNp26RaaWY+XuwWdpQt3Aw+Ro+LrKYeZnQwcDhzkOT7XaCNekzAsBbZf53HHJZGxZ2aFtJXeXe5+f9h5ANz9IzObT9t7of19EOgA4AgzOxQYAowws1nufkJ3TwhlV9fdX3D3rdx9XPuJz0uB0lyVXk/MbJd1Hh4BvBRSjsnAT4Ej3H1FT8vnuWeBXcxsBzMbBBwH/CHkTKGzti2FW4Al7h7qB5KYWXHHmQdmNhQ4mBD+7bj7he4+ur1LjgP+vKHSg/APbkTFr8xssZk9T9vud1inCNwADAfmtp9ac3NIOTCzo81sKTAReMjMHu3P9bcf5DkbeJS2N/Br3f3F/szQwczuAZ4GxpvZUjM7PYwc7Q4ATgQObP87sqh9SycM2wDJ9n83z9L2Hl+Pp5JEga7cEJHY0RafiMSOik9EYkfFJyKxo+ITkdhR8YlI7Kj4RCR2VHwiEjsqPhGJnf8Dj2j9aLt4q20AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "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", "# fill in as appropriate\n", "T3 = np.matmul(T1,T2)\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": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\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": 6, "metadata": {}, "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": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nIoH2/wFQ/NDqvtKvdgAAAABJRU5ErkJggg==\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": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nYII=\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": 9, "metadata": {}, "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": {}, "outputs": [], "source": [] } ], "metadata": { "kernel_info": { "name": "python3" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" }, "nteract": { "version": "0.12.3" } }, "nbformat": 4, "nbformat_minor": 1 }