{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# EE16A Discussion 3B" ] }, { "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. 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": 16, "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=(6,6))\n", " ax = fig.add_subplot(111, xlim = [-3, 3], ylim = [-3, 3])\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 = 3)\n", " ax.plot([polygon[i+1][0], polygon[0][0]], [polygon[i+1][1], polygon[0][1]],linewidth = 3)\n", " ax.grid(True)\n", " ax.axhline(y=0, color='k', linestyle = '--', linewidth = 1.5)\n", " ax.axvline(x=0, color='k', linestyle = '--', linewidth = 1.5)\n", " #plt.show()\n", "\n", "Re_y = np.array([[-1, 0], [0,1]])\n", "T1=np.array([[ 0.96592583, -0.25881905],\n", " [ 0.25881905, 0.96592583]])\n", "T2=np.array([[ 0.8660254, -0.5 ],\n", " [ 0.5 , 0.8660254]])" ] }, { "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": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAFpCAYAAACI3gMrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAX7ElEQVR4nO3df2zV153m8edD4gZIaLJL3EkaSNvVFG/6S44myijsquuIzBQQLNMJA+0sdKzdyiyomloCzQxJyHSGFroqiTyaWTJYbUUCVYsVJrRhoW2guWIbHFrCmIILtkLpGI8jfuaauObHAJ/5gwOF2AGH88UHn7xfEhKXc+/1c7iXh8P5Hl/M3QUAyMew1AEAAMWi2AEgMxQ7AGSGYgeAzFDsAJAZih0AMhNd7GY23Mx+ZmY7zazVzP6miGAAgGtjsefYzcwk3eruPWZWIemnkr7s7q8WERAA8O7cHPsEfv5vhp5wsyL84LueACCRQvbYzewmM2uRdEjSS+6+rYjnBQC8e9Erdkly97OSqs3sDkkvmNkn3H33pfcxszpJdZI0fPjw37v33nuL+NI3pHPnzmnYsHyvS+c6P3fX2bNndfPNhfyxuCHl+tpdkPv82tvbj7h75dXuF73H3ucJzZ6U1Ovuy97pPlVVVd7W1lbo172RlEol1dTUpI5x3eQ8v5znJjG/oc7MXnP3B652vyJOxVSGlbrMbISkP5C0N/Z5gcG2fPlyrVu3LnUMIFoR/+a8W9KzZnaTzv9F0eTu6wt4XmBQNTU1qVwup44BRCviVMwvJN1fQBYAQAHyvcoAAO9RFDsAZIZiB4DM5HtgF3iXSqWSSqVS6hhANFbsAJAZih0Ili1bpjVr1qSOAURjKwYI1q9fzzl2ZIEVOwBkhmIHgMxQ7ACQGYodCEaMGKFbbrkldQwgGhdPgWDjxo2cY0cWWLEDQGYodiBYvHixnnvuudQxgGhsxQDB5s2bOceOLLBiB4DMUOwAkBmKHQAywx47EIwePVrnzp1LHQOIRrEDwdq1aznHjiywFQMAmWHFDgQLFy5UR0eHampqUkcBolDsQNDc3Mw5dmSBrRgAyAzFDgCZodgBIDPssQPBmDFjVFFRkToGEI1iB4LVq1dzjh1ZYCsGADLDih0I6uvr1dnZyTl2DHkUOxC0tLRwjh1ZYCsGADJDsQNAZih2AMgMe+xAMG7cOHV1daWOAUSj2IGgsbGRc+zIAlsxAJAZVuxAUFdXp66uLs6xY8ij2IGgvb2dc+zIAlsxAJAZih0AMkOxA0Bm2GMHgurqanV2dqaOAUSj2IGgoaGBc+zIAlsxAJAZVuxAMGvWLB08eJBz7BjyolfsZjbWzF42s1+aWauZfbmIYMBg6+zs1OHDh1PHAKIVsWI/I2m+u+8ws1GSXjOzl9z9lwU8NwDgXYpesbv7G+6+I/z8LUl7JN0T+7wAgGtT6B67mX1Y0v2StvUzViepTpIqKyuzPn3Q09PD/Iagcrmss2fPZjm3C3J97S7IfX4DVVixm9ltktZKqnf3428fd/dGSY2SVFVV5TlfoCqVSllfgMt1fpMmTVJHR0eWc7sg19fugtznN1CFFLuZVeh8qX/H3f+piOcEBtvSpUtZ7SELRZyKMUnfkrTH3Z+OjwQAiFHEiv2/SJotaZeZtYRfe8zdNxTw3MCgefTRR3X48GFt2bIldRQgSnSxu/tPJVkBWYCkjh49quPH+1weAoYcPlIAADJDsQNAZih2AMgMHwIGBBMmTND+/ftTxwCiUexAsGjRIs6xIwtsxQBAZlixA8GkSZN07NgxbdvW56OOgCGFFTsQnDhxQqdOnUodA4hGsQNAZih2AMgMxQ4AmeHiKRBMmTJF+/btSx0DiEaxA8GCBQs4x44ssBUDAJlhxQ4ENTU1KpfLamlpSR0FiMKKHQAyQ7EDQGYodgDIDMUOAJnh4ikQzJgxQ+3t7aljANEodiCYN28e59iRBbZigKC3t1cnT55MHQOIxoodCCZPnqxyuayJEyemjgJEYcUOAJmh2AEgMxQ7AGSGYgeAzHDxFAhqa2u1d+/e1DGAaBQ7ENTW1nKOHVlgKwYIjhw5ou7u7tQxgGis2IFg+vTpKpfLmjZtWuooQBRW7ACQGYodADJDsQNAZih2AMgMF0+BYO7cuWptbU0dA4hGsQPBzJkzOceOLLAVAwQHDhzQoUOHUscAorFiB4LZs2erXC5rxowZqaMAUVixA0BmKHYAyAzFDgCZodgBIDNcPAWC+fPna9euXaljANEodiCYOnWqRo0alToGEK2QrRgz+7aZHTKz3UU8H5BCW1ubOjo6UscAohW1x75S0sSCngtIYs6cOXr66adTxwCiFbIV4+5bzOzDRTwXkErvz36m90na85/v04yFGe9SPivt+jOuJeRs0N69ZlYnqU6SKisrs/5Mjp6eHuaHG1qurx/vzfMGrdjdvVFSoyRVVVV5TU3NYH3pQVcqlcT8cCPL9fXjvXlexv/eBK5dllsVX7k9dQIMEoodCOaMvjN1BKAQRR13/K6kZklVZtZpZv+riOcFBtP4W2/V+FtvTR0DiFbUqZjPF/E8QEp7Tp6UJN03fHjiJEActmKA4OuHDkqSnr33Q4mTAHH4EDAAyAzFDgCZodgBIDMUOwBkhounQFBfWZk6AlAIih0I7h8xMnUEoBBsxQDBP5/o1T+f6E0dA4hGsQNBw+HDajh8OHUMIBrFDgCZodgBIDMUOwBkhmIHgMxw3BEI/uoDv5M6AlAIih0I+Lhe5IKtGCDY+pvfaOtvfpM6BhCNFTsQrDh6RJL4X5Qw5LFiB4DMUOwAkBmKHQAyQ7EDQGa4eAoEX7nrrtQRgEJQ7EDwkffdkjoCUAi2YoDg5Z639HLPW6ljANFYsQPBymPHJEkP3zYqcRIgDit2AMgMxQ4AmaHYASAzFDsAZIaLp0Dw9bs/mDoCUAiKHQjurqhIHQEoBFsxQLDx+HFtPH48dQwgGit2IPhe+U1J0qT3vz9xEiAOK3YAyAzFDgCZodgBIDMUOwBkhounQNDwwXtSRwAKQbEDwX+4mT8OyANbMUDwQndZL3SXU8cAolHsQLCuu1vrurtTxwCiUewAkBmKHQAyQ7EDQGYodgDITCHnu8xsoqS/k3STpG+6+9eLeF5gMP3jmLGpIwCFiF6xm9lNkv6vpEmSPibp82b2sdjnBQbbiGHDNGIY/4jF0FfEu/hBSa+7+6/c/bSk70maVsDzAoPqu2++qe+++WbqGEC0IrZi7pF04JLbnZJ+/0oPOHDggGpqai77tRkzZmjevHnq7e3V5MmT+zymtrZWtbW1OnLkiKZPn95nfO7cuZo5c6YOHDig2bNn9xmfP3++pk6dqra2Ns2ZM6fP+BNPPKFHHnlELS0tqq+v7zO+ZMkSjR8/Xlu3btVjjz3WZ7yhoUHV1dXatGmTFixYoDvuuOOy8RUrVqiqqkovvviinnrqqT6PX7VqlcaOHas1a9bomWee6TP+/PPP684779TKlSu1cuXKPuMbNmzQyJEjtXz5cjU1NfUZL5VKkqRly5Zp/fr1l42NGDFCGzdulCQtXrxYmzdvvmx89OjRWrt2rSRp4cKF2rhx42XzGzNmjFavXi1Jqq+vV0tLy2WPHzdunBobGyVJdXV1am9vv2y8urpaDQ0NkqRZs2aps7PzsvGHHnpIS5culSQ9+uijOnr06GXjEyZM0KJFiyRJkyZN0okTJy4bnzJlihYsWCBJfd530m/fexveOq72U6f0w7eO6xf3fvLi+G2ffES3ffIRne3t1uF1S/s8ftT9k3XrfZ/WmeOHdWR939f2/Q9+ViN/9/f1b0c7dfRH/9Bn/Pbxn9OID1fr9MFf6djmxj7jd3z6zzR8zH062blH5S3P9hn/jxPq9L7f+U868esWdW/9Xp/x0Z/5kipGj9Hf/8u/6anm0+d/sfTb34eh9N5rbm6+bPzt771SqXTZe3OovPeutffeyaB9D7WZ1Umqk6SKigqVy+XLxtvb21UqlXTy5Mk+Y5K0d+9elUoldXd39zve2tqqUqmkQ4cO9Tu+a9cujRo1Sh0dHf2O79y5UzfffLNef/31fsd37Nih06dPa/fu3f2Ob9++XeVyWTt37tTZs2f73Gfbtm164403tGvXrn4f39zcrH379qm1tbXf8VdeeUW333679u7d2+/4li1bNHz4cLW3t/c7fuEP1759+/qMnzhx4uL4/v37+4yfO3fu4nhHR0ef+VVUVFwc7+zs7PP4rq6ui+NdXV19xjs7Oy+OHzx4sM94R0fHxfHDhw/r+Nv+l6P9+/dfHD927JhOnTp12fi+ffsujvf3e3Phvfdecunvw1B67719/O3vvbe/N4fKe+9ae++dmLsP+M79PoHZQ5K+4u6fCbcXSpK7913aBFVVVd7W1hb1dW9kpVKp37+dc5Hr/B4cOVKS9Oy9H9KkP1qWOE3xfj38T3974yt5fodtru/NC8zsNXd/4Gr3K2LF/nNJHzWzj0j6V0mfk/SnV34IcOMZ+eCDKpfLuq+lRb9OHea66M6++HBedLG7+xkz+5KkH+n8ccdvu3trdDIAwDUpZI/d3TdI2lDEcwGplEql99xeO/LEoV0AyAzFDgTLli3TmjVrUscAovFfxgDB+vXr39WRMuBGxYodADJDsQNAZih2AMgMxQ4EI0aM0C233JI6BhCNi6dAsHHjRs6xIwus2AEgMxQ7ECxevFjPPfdc6hhANLZigGDz5s2cY0cWWLEDQGYodgDIDMUOAJlhjx0IRo8erXPnzqWOAUSj2IFg7dq1nGNHFtiKAYDMsGIHgoULF6qjo4P/ExRDHsUOBM3NzZxjRxbYigGAzFDsAJAZih0AMsMeOxCMGTNGFRUVqWMA0Sh2IFi9ejXn2JEFtmIAIDOs2IGgvr5enZ2dnGPHkEexA0FLSwvn2JEFtmIAIDMUOwBkhmIHgMywxw4E48aNU1dXV+oYQDSKHQgaGxs5x44ssBUDAJlhxQ4EdXV16urq4hw7hjyKHQja29s5x44ssBUDAJmh2AEgMxQ7AGSGPXYgqK6uVmdnZ+oYQDSKHQgaGho4x44ssBUDAJlhxQ4Es2bN0sGDBznHjiGPYgeCzs5OzrEjC2zFAEBmKHYAyAzFDgCZiSp2M/sTM2s1s3Nm9kBRoYAUHnroIX384x9PHQOIFnvxdLekP5a0ooAsQFJLly7lHDuyEFXs7r5HksysmDQAgGiDdtzRzOok1UlSZWVl1iujnp4e5jcEPfnkkzpz5oyWLFmSOsp1k+trd0Hu8xuoqxa7mW2SdFc/Q4+7+/cH+oXcvVFSoyRVVVV5zt8EUiqVsv4ml1znN2zYMPX29mY5twtyfe0uyH1+A3XVYnf3RwYjCACgGBx3BIDMxB53/KyZdUp6SNL/M7MfFRMLAHCtYk/FvCDphYKyAElNmDBB+/fvTx0DiMaHgAHBokWLOFGBLLDHDgCZYcUOBJMmTdKxY8e0bdu21FGAKKzYgeDEiRM6depU6hhANIodADJDsQNAZih2AMgMF0+BYMqUKdq3b1/qGEA0ih0IFixYwDl2ZIGtGADIDCt2IKipqVG5XFZLS0vqKEAUVuwAkBmKHQAyQ7EDQGYodgDIDBdPgWDGjBlqb29PHQOIRrEDwbx58zjHjiywFQMEvb29OnnyZOoYQDRW7EAwefJklctlTZw4MXUUIAordgDIDMUOAJmh2AEgMxQ7AGSGi6dAUFtbq71796aOAUSj2IGgtraWc+zIAlsxQHDkyBF1d3enjgFEY8UOBNOnT1e5XNa0adNSRwGisGIHgMxQ7ACQGYodADJDsQNAZrh4CgRz585Va2tr6hhANIodCGbOnMk5dmSBrRggOHDggA4dOpQ6BhCNFTsQzJ49W+VyWTNmzEgdBYjCih0AMkOxA0BmKHYAyAzFDgCZ4eIpEMyfP1+7du1KHQOIRrEDwdSpUzVq1KjUMYBobMUAQVtbmzo6OlLHAKKxYgeCOXPmqFwu6wtf+ELqKEAUVuwAkBmKHQAyE1XsZvYNM9trZr8wsxfM7I6CcgEArlHsiv0lSZ9w909Jape0MD4SACBG1MVTd//xJTdflTQ9Lg6QzhNPPKGdO3emjgFEM3cv5onMXpS0xt1Xv8N4naQ6SaqsrPy9pqamQr7ujainp0e33XZb6hjXTc7zy3luEvMb6h5++OHX3P2Bq93vqsVuZpsk3dXP0OPu/v1wn8clPSDpj30Af1NUVVV5W1vb1e42ZJVKJdXU1KSOcd3kOr+WlhZt375dX/ziF1NHuW5yfe0uyH1+ZjagYr/qVoy7P3KVL1QraYqkCQMpdeBGVV9fr3K5nHWx470hao/dzCZK+gtJ/83de4uJBACIEXsq5h8kjZL0kpm1mNk/FpAJABAh9lTM7xYVBABQDL7zFAAyw4eAAcGSJUu0Y8eO1DGAaBQ7EIwfP16nT59OHQOIxlYMEGzdulW7d+9OHQOIRrEDwWOPPaZvfvObqWMA0Sh2AMgMxQ4AmaHYASAzFDsAZIbjjkDQ0NCg7du3p44BRKPYgaC6ulrlcjl1DCAaWzFAsGnTJr322mupYwDRKHYg+OpXv6pVq1aljgFEo9gBIDMUOwBkhmIHgMxQ7ACQGY47AsGKFSu0bdu21DGAaBQ7EFRVVemNN95IHQOIxlYMELz44ovaunVr6hhANIodCJ566ik1NTWljgFEo9gBIDMUOwBkhmIHgMxQ7ACQGY47AsGqVavU3NycOgYQjRU7EIwdO1Yf+MAHUscAolHsQLBmzRr95Cc/SR0DiEaxA8EzzzyjH/zgB6ljANEodgDIDMUOAJmh2AEgMxQ7AGSGc+xA8Pzzz+uVV15JHQOIxoodCO68807dfvvtqWMA0Sh2IFi5cqV++MMfpo4BRKPYgYBiRy4odgDIDMUOAJmh2AEgMxQ7AGSGc+xAsGHDBm3ZsiV1DCAaK3YgGDlypIYPH546BhCNYgeC5cuXa926daljANHYigGCpqYmlcvl1DGAaFErdjNbbGa/MLMWM/uxmX2wqGAAgGsTuxXzDXf/lLtXS1ov6cn4SACAGFHF7u7HL7l5qySPiwMAiBW9x25mX5P0BUndkh6OTgQAiGLuV15km9kmSXf1M/S4u3//kvstlDTc3f/6HZ6nTlJduPkJSbuvKfHQcKekI6lDXEc5zy/nuUnMb6ircvdRV7vTVYt9oMzsXkkb3P0TA7jvdnd/oJAvfANifkNXznOTmN9QN9D5xZ6K+eglN6dJ2hvzfACAeLF77F83sypJ5yT9i6T/HR8JABAjqtjd/dFrfGhjzNcdApjf0JXz3CTmN9QNaH6F7bEDAG4MfFYMAGQmWbHn/HEEZvYNM9sb5veCmd2ROlORzOxPzKzVzM6ZWTYnEMxsopm1mdnrZvZXqfMUycy+bWaHzCzLY8ZmNtbMXjazX4b35pdTZyqKmQ03s5+Z2c4wt7+56mNSbcWY2fsvfOeqmf25pI+5exYXX83sDyX9xN3PmNn/kSR3/8vEsQpjZvfp/AXzFZIWuPv2xJGimdlNktol/YGkTkk/l/R5d/9l0mAFMbNPS+qR9NxAjiQPNWZ2t6S73X2HmY2S9JqkP8rh9TMzk3Sru/eYWYWkn0r6sru/+k6PSbZiz/njCNz9x+5+Jtx8VdKYlHmK5u573L0tdY6CPSjpdXf/lbuflvQ9nT/CmwV33yLpWOoc14u7v+HuO8LP35K0R9I9aVMVw8/rCTcrwo8r9mXSPXYz+5qZHZD0P5TvB4j9T0kbU4fAVd0j6cAltzuVSTG815jZhyXdL2lb4iiFMbObzKxF0iFJL7n7Fed2XYvdzDaZ2e5+fkyTJHd/3N3HSvqOpC9dzyxFu9rcwn0el3RG5+c3pAxkfsCNxsxuk7RWUv3bdgWGNHc/Gz5Fd4ykB83sittp1/U/2nD3RwZ41+9I2iCp38+ZuRFdbW5mVitpiqQJPgTPlL6L1y4X/ypp7CW3x4RfwxAR9p/XSvqOu/9T6jzXg7uXzexlSRN1hc/bSnkqJtuPIzCziZL+QtJ/d/fe1HkwID+X9FEz+4iZvU/S5yT9IHEmDFC4wPgtSXvc/enUeYpkZpUXTtaZ2Qidv8B/xb5MeSpmraTLPo7A3bNYIZnZ65JukXQ0/NKruZz4kSQz+6ykv5dUKaksqcXdP5M0VAHMbLKkBkk3Sfq2u38tbaLimNl3JdXo/KcfHpT01+7+raShCmRm/1XS/5e0S+c7RZIec/cN6VIVw8w+JelZnX9fDpPU5O5/e8XHDMFdAgDAFfCdpwCQGYodADJDsQNAZih2AMgMxQ4AmaHYASAzFDsAZIZiB4DM/DsN8hKjxPvW1QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "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": [ "Let's use matrices $T_1$ and $T_2$ to rotate the square by 45 degrees." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "rotated_square_15 = transform_the_polygon(unit_square, T1)\n", "rotated_square_45 = transform_the_polygon(rotated_square_15, T2)\n", "plot_the_polygon(rotated_square_45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, let's use matrices $T_1$ and $T_2$ to rotate the square by 60 degrees." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "rotated_square_30 = transform_the_polygon(unit_square, T2)\n", "rotated_square_60 = transform_the_polygon(rotated_square_30, T2)\n", "plot_the_polygon(rotated_square_60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, lets find a single matrix $T_3$ that rotates the unit square by 60 degrees." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "T3=np.matmul(T2,T2)\n", "rotated_square_T3 = transform_the_polygon(unit_square, T3)\n", "plot_the_polygon(rotated_square_T3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And finally, we can \"reflect\" the square about the y-axis:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "reflected_square = transform_the_polygon(unit_square, Re_y)\n", "plot_the_polygon(reflected_square)" ] }, { "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", "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": 22, "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)]])\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAFpCAYAAACI3gMrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkbklEQVR4nO3de3wV1b338e+PEAggF4EgKli1SKR4fFBRD9S2sdAKFmqtiO2peDitDUVp4VFaC6K21aKtyMEeqkIppWIv5IhWQFALmgcVRC4GuUhiAAkh3OkGIuGSZD1/ZAhELgnMTiZ75fN+vXy9nL32nvkts/PNcs2aGXPOCQDgjwZRFwAAiC+CHQA8Q7ADgGcIdgDwDMEOAJ4h2AHAM6GD3cxSzOx9M1tpZmvM7JfxKAwAcHYs7Dp2MzNJzZxzRWaWLOkdScOdc+/Fo0AAwJlpGHYHrvwvQ1GwmRz8w1VPABCRuMyxm1mSmWVL2iHpn865JfHYLwDgzIUesUuSc65UUjczayXpZTO7wjm3+vj3mFmGpAxJSklJueaiiy6Kx6HrpLKyMjVo4O95aV/755xTaWmpGjaMy69FneTrz+4o3/uXm5u7yzmXWtX7Qs+xn7BDs4clHXDOjTvVe9LS0lxOTk5cj1uXZGVlKT09PeoyaozP/fO5bxL9S3Rmttw5172q98VjVUxqMFKXmTWR9DVJ68LuF6htzzzzjP7xj39EXQYQWjz+n/N8SX82sySV/6HIdM7NicN+gVqVmZmpWCwWdRlAaPFYFfOhpKviUAsAIA78PcsAAPUUwQ4AniHYAcAz/i7YBc5QVlaWsrKyoi4DCI0ROwB4hmAHAuPGjdOMGTOiLgMIjakYIDBnzhzWscMLjNgBwDMEOwB4hmAHAM8Q7ECgSZMmaty4cdRlAKFx8hQIzJs3j3Xs8AIjdgDwDMEOBB599FE9//zzUZcBhMZUDBBYsGAB69jhBUbsAOAZgh0APEOwA4BnmGMHAm3atFFZWVnUZQChEexAYObMmaxjhxeYigEAzzBiBwKjRo1Sfn6+0tPToy4FCIVgBwKLFy9mHTu8wFQMAHiGYAcAzxDsAOAZ5tiBQIcOHZScnBx1GUBoBDsQeOGFF1jHDi8wFQMAnmHEDgRGjBihgoIC1rEj4RHsQCA7O5t17PACUzEA4BmCHQA8Q7ADgGeYYwcCnTt3VmFhYdRlAKER7EBg8uTJrGOHF5iKAQDPMGIHAhkZGSosLGQdOxIewQ4EcnNzWccOLzAVAwCeIdgBwDMEOwB4hjl2INCtWzcVFBREXQYQGsEOBCZMmMA6dniBqRgA8AwjdiBw5513avv27axjR8ILPWI3s45m9paZrTWzNWY2PB6FAbWtoKBAO3fujLoMILR4jNhLJN3vnFthZs0lLTezfzrn1sZh3wCAMxR6xO6c2+qcWxH8+35JH0m6MOx+AQBnJ65z7GZ2saSrJC05SVuGpAxJSk1N9Xr1QVFREf1LQLFYTKWlpV727Shff3ZH+d6/6opbsJvZOZJmShrhnNv32Xbn3GRJkyUpLS3N+XyCKisry+sTcL72r2/fvsrPz/eyb0f5+rM7yvf+VVdcgt3MklUe6n9xzr0Uj30Cte3xxx9ntAcvxGNVjEn6o6SPnHPjw5cEAAgjHiP2L0oaJGmVmWUHr412zs2Nw76BWnPbbbdp586dWrhwYdSlAKGEDnbn3DuSLA61AJHavXu39u074fQQkHC4pQAAeIZgBwDPEOwA4BluAgYEevXqpY0bN0ZdBhAawQ4EHnroIdaxwwtMxQCAZxixA4G+fftqz549WrLkhFsdAQmFETsQKC4u1qFDh6IuAwiNYAcAzxDsAOAZgh0APMPJUyDQr18/rV+/PuoygNAIdiAwcuRI1rHDC0zFAIBnGLEDgfT0dMViMWVnZ0ddChAKI3YA8AzBDgCeIdgBwDMEOwB4hpOnQGDgwIHKzc2NugwgNIIdCNxzzz2sY4cXmIoBAgcOHNDBgwejLgMIjRE7ELj55psVi8XUp0+fqEsBQmHEDgCeIdgBwDMEOwB4hmAHatAn+e9oyYpJUZeBeoaTp0Bg8ODBWrduXVz2dWD/Vk1+/V79uShX55ZJszvfombntI/LvoGqMGIHAoMHDw6/Iqb0iPT+H1T2bE/N2vuRSsy0M8k06fVh8SkSqAaCHQjs2rVLe/fuPbsPOyflvi4921OaO1LnHNij/7snVtE8/dM8bdi7IT6FAlUg2IHAgAED9Mgjj5z5B7etlqZ/S/rrQGnXsVsS9Etuq6vPuUiSVOJK9cSSJ+Sci1O1wKkR7MDZ2r9dmvVjadKXpA1Zx15v3ELq/UvZvUs16san1MDKf80Wb12sN/PfjKZW1CsEO3CmjhRLC5+UfneVtOJ5yZWVv24NpO4/kH68QrphhJScostbX66BnQdWfPS3S3+r4pLiaOpGvUGwA9VVViZ9mCn9T3fpzcekI58ea+v0NWnoIqnfeOmc1EofG3bVMLVq3EqSVPhpoaaunlqLRaM+ItiB6ti0WJrSS3rph9K+gmOvp3aR7pwp3fmi1K7LST/asnFLDb96eMX21FVTtXn/5pquGPUYwQ4Ehg4dqm9+85uVX9yzQcq8S/pTH6lwxbHXm6VK/SZIP3pH6tS7yn3f2ulWdW3TVZJ0uOywnlz6ZBwrByoj2IHAHXfcoa9+9avlG8Ux6Y0x0u+vl9a+cuxNSY2lG+4rn0fv/l9SUvWu8UtqkKTR14+u2H5r81t6u+DtOFYPHEOwA4HNmzdr57ZC6f0/lJ8YXfQ/UunhY2+4YoD042VS70eklBZnvP8rU6/Utzp9q2L7N0t/o8PH7x+IE24pAEiScxo04Bsq3bVetw/6zK9Fh+ukm8ZKHa8NfZjhVw/Xgk0LtP/Ifm3at0nT107XD/7tB6H3CxyPETtw9AKj7WuVVHro2OutLpIG/En6wRtxCXVJatukre696t6K7UkfTtK2T7fFZd/AUQQ76q/926RXhknP3XDSC4x071Lpim9LZnE97B1pd6hTq06SpOKSYo1fNj6u+wcIdtQ/hw9I/+9J6XdXSx9Ml3TsMv9DjVtXusCoJjRs0LDSidR5n8zT0m1La+RYqJ8IdtQfZWXSyhnSxO7SWye5wOjCq1Xc5IITLjCqCde2v1Z9L+5bsT12yViVlJXU+HFRP3DyFPXDpkXS66Olwg8qv57aRbrpMalTb93fcrZWrVpVayXd1/0+ZRVkqbikWHmxPM3ImaHvdflerR0f/mLEDr/t2SDNGCT9qW/lUD/JBUb9+/dXz549a6209s3aK+PKjIrt33/we+0u3l1rx4e/4hLsZjbVzHaY2ep47A8IrTgmvf6gNPE66aNZx14/zQVGOTk5ys/Pr9Uy7/rCXfpci89JkvYf2a+nVzxdq8eHn+I1Yp8mKeSjZ4A4KD0iLZlcfoHR4olS2ZFjbVVcYDRkyBCNH1+7K1QaJTXSz6/7ecX2y3kv68OdH9ZqDfBPXILdObdQ0p547As4K85JOa9Jz/SQ5v1UKj7u69jhOukH86UBfyxfm17H3HDhDUrvmF6x/eslv1ZpWWl0BSHh1drJUzPLkJQhSampqcrKyqqtQ9e6oqIi+leLmhVtVKe8qTo3VnmkW5zSThsu/U/tTP2itP5TaX3WafcTi8VUWloaSd++UvoVvaN3VKISrd29Vk+8+oS+2PyLcT9OXfvZxZvv/auuWgt259xkSZMlKS0tzaWnp9fWoWtdVlaW6F8t2L+t/L7oH7yg49eiq3EL6Uv3q8n1P1LXM1iL3qpVK8Viscj6tj17u55b+Zwk6bVPX9Owrw9Ty8Yt43qMOvOzqyG+96+6WBWDxHOqC4xO8gSjRPL9K76vC5pdIEmKHYpp4gcTI64IiYpgR+Ko6gKjUzzBqLrGjBmjQYMGxanYM9ekYRP99NqfVmxn5mYqZ09OZPUgccVruePfJC2WlGZmBWbG7eoQX5sWSVO+Kr2cIe3bcuz1ajzBqLp69+6ta665JmSh4fS6qJd6nN9DklTmyjR2yVg556r4FFBZvFbFfNc5d75zLtk518E598d47Bf45OPVKvnbndW6wCis7Oxs5eXlxWVfZ8vM9PPrf66GVn76a8WOFXp146uR1oTEw1QM6qSivbv13nNDdcELX1bDnNnHGs7yCUbVMWLECE2cGP289qUtL9WgLxybEhq/bLw+PX7aCagCwY46aW3W/+rft/1Vjey49dwhn2CUSIb8nyFKbVJ+rmBn8U5NWjkp4oqQSAh21End+/1QuQ07S5KWl12mx9r/rs5eYFQTmiU3033d76vYnr52ujbs3RBhRUgkBDvqpAZJSbK+v9WwIz/RbYd/oSmftNWCj7ZHXVat+sYl39DV7a6WJJW4Ej2+5HFOpKJaCHbUWZddc6OaX3O7pPInGP1qzlodPFJ/LrU3M42+frQaWPmv6Xtb39OC/AURV4VEQLCjThv59TS1SCk/Qbpp9wFNebvmpiPGjh2ru+++u8b2fzbSWqdpYOeBFdtPLn1SxSXFEVaERECwo05rc05jjbwprWJ74lt52hKrmWDr2bOnrrjiihrZdxjDrhqmcxufK0kq/LRQU1dPjbgi1HUEO+q8/7juInU5v3wVzMEjZRr76kc1cpxFixZp9eq690iBlo1bavjVwyu2p66aqs37N0dYEeo6gh11XsOkBvrVLV0rtl9dtVXv5u2K+3FGjx6tKVOmxH2/8XDrZbeqa5vy/waHyw7ryaVPRlwR6jKCHQnh2otb61vdLqjYfmTWGh0pLYuwotrVwBpo9PWjK7bf2vyW3i54O8KKUJcR7EgYo27uomaNkiRJeTuK9OdFn0RbUC27MvVK3drp1ort3yz9jQ6XHo6wItRVBDsSxnktUjS892UV2xPmf6wd+w9GWFHtG371cDVPbi5J2rRvk55f+3zEFaEuItiRUAb3vESXpjaTJBUdKtET89ZFXFHtatOkje696t6K7ckfTta2T7dFWBHqIoIdCaVRwwb6Rf9jJ1JfWrFFyzfF53G7EyZM0LBhw+Kyr5p0R9od6tSqkySpuKRY45fV7gO4UfcR7Eg4X+6cqj5d21dsP/zKGpWWhb/Uvlu3burUqVPo/dS0hg0aVjqROu+TeVq6bWmEFaGuIdiRkMb066LGDcu/vmsK9+lv7+eH3uf8+fO1fPny0PupDde2v1Z9L+5bsT12yViVlJVEWBHqEoIdCanDuU11T/qx0fW4N3L0r0/DrRB57LHHNH369LCl1Zr7ut+nJg2bSJLyYnmakTMj4opQVxDsSFhDvnKpOrYuD7bYgSMa90b9ej5o+2btNeTKIRXbEz+YqF3F8b9wC4mHYEfCSklO0sP9jp1I/ev7+Vq9ZW+EFdW+QV8YpItbXCxJKjpSpKdXPB1tQagTCHYktN5d2ukrncufNOSc9PArq1UWhxOpiaJRUiM9cN0DFdvvLH9ZHy6efZpPoD4g2JHQzEyP9P+CkpPK79m+Ij+mlz7YEnFVteuGC2/Q19t+Sd/NKtWESaXaNeZhlZQcibosRIhgR8K7NPUc3f2lSyu2n5i3TvsOnnmwTZo0Sffdd1/Vb6xDXEmJ/jUjUz/89Qe6dbFTo1Lp/C0H9dYffhF1aYgQwQ4vDLuxk9q3SJEk7So6pKfnf3zG+0hLS9NFFyXOM1WL3nlXG2/9trY98ojcnljF61s6NNH5Xa6OrjBEjmCHF5o1bqjR3+hSsT1t0SfK3b7/jPYxe/ZsLVq0KN6lxd2hvDzlZ2Ro891369DHx/6AJZ13nrbd/x3d+Pr7uiL9tggrRNQIdnij/5Xn6/pLWkuSSsucfjFrzRk9/Pmpp55SZmZmTZUXWsnu3dr6y19qwy3f0qcLj92y15o2Verwn6jTa/N04w8fUVJSwwirRF1AsMMbZqZf3tJVSQ3KT6QuWr9bc1cl/g2yyg4d0u4pU7T+pj6K/e3vUmnwQG8ztbp9gD7/2jy1HTpUDZo0ibZQ1Bn8aYdXLm/fQnf1+Jz+9O4nkqTHXl2rGy9PVdNGifdVd85p/7x52vHUeB3ZUnmlT9Me/67zHnhAKZdfHlF1qMsYscM7I3p3VptmjSRJW/ce1O/fyou4ojNXnJ2tTd/9D2257/5Kod7okkvU4blnddHUqYQ6Tolgh3daNknWA32Phd4fFm7UJ7s+jbCi6juyZYu23D9Sn3znuyrOzq54PalVK503ZowunfWKmqeny8yiKxJ1XuL9/ylQDQOu7qC/LslX9uaYDpeW6Vdz1mrq4GtP+5np06dr8eLFtVRhZaVFRdo9+Q/aM22a3OHjbmaWnKzWgwap7Y+GKKlFi0hqQ+JhxA4vNWhg+tUtXXV0YPvmuh1a8NH2036mY8eOateuXS1Ud8zRC4zW39RHuydPrhTqzW+6SZ9/dY7O+9lPCXWcEYId3rqyQyt959qOFdu/mrNWB4+UnvL9M2bM0JtvvlkbpUmqfIFR6e7dFa+nXHGFPveXF9Th6QlqlEAXTKHuINjhtZ/edLlaNkmWJG3afUBT3t5wyvc+++yzmjVrVo3XdKoLjBq2b68LnvytLs6coabXXFPjdcBfBDu81rpZI438eueK7Ylv5WlLrDiSWk57gdGI4fr8vLlq2b+/rAG/lgiHbxC89x/Xf05dzi+foz54pExjX/2oVo9frQuMfvQjLjBC3BDs8F5ScCL1qFdXbdW7eTX/pCHnnPbNnasNN39DO8Y9pbKiooq2pj3+XZe8/JLOf/RRJdfyCVv4j2BHvXDtxa1161UXVmw/MmuNjpSW1djxTnmB0aWXcoERahzr2FFvjOp7ud5Ys02fHi5V3o4i/XnRJ5Xu4/7iiy/q3XffDXWMI1u2aMf4/9a+V1+t9HpSq1Zq++NhOnfgQFlycqhjAFVhxI56o12LFA3vfVnF9oT5H2vH/oMV223btlXLli3Pat+lRUXaMf6/tb7vzZVDPTlZrb//fX3+jdfV+nvfI9RRKwh21CuDe16iz6c2kyQVHSrRE/PWVbRNmzZNr7322hntjwuMUBcR7KhXGjVsoF9889iJ1JdWbNHyTXsknXmwn/ICo3/7Ny4wQqQIdtQ7X7osVX26tq/YfviVNSotq/4DOaq8wGjG37nACJHi5CnqpTH9uuitnB06VFKmNYX79Lf386v8TMnu3do5caJimf97bC26yi8wapvxQ7X+z/9kLTrqBIId9VKHc5vq3hs7afw/cyVJ497I0TmlJx+1lx06pH9Nn65dz02qtBZdDRqo1W3fVupPfqKGqam1UTZQLQQ76q2ML1+qF5cXKH/PAcUOHNG//nVA5x73G3G6Jxg169lD7R54QClpabVcNVC1uAS7mfWR9LSkJElTnHNPxGO/QE1KSU7SQ/2+oB8+v6z8hT4/19DrUiSVX2C0/YnfVHrYhVR+gdF5D/xMzb78ZR52gTordLCbWZKk30v6mqQCSUvNbJZzbm3YfQM1rXeXdkpPS1VWzk5ZwxTN/zCmbywZqf0nu8DoJz/Wubffzlp01HnxGLFfJynPObdBkszs75JukUSwo84zMz3Sv6s++OgNXfjaBF2242Ptb3XsIiVLTta5dw1S2yE8wQiJIx7BfqGkzcdtF0i6/nQf2Lx5s9LT0yu9NnDgQN1zzz06cOCAbr755hM+M3jwYA0ePFi7du3SgAEDTmgfOnSo7rjjDm3evFmDBg06of3+++9X//79lZOToyFDhpzQPmbMGPXu3VvZ2dkaMWLECe1jx45Vz549tWjRIo0ePfqE9gkTJqhbt26aP3++Ro4cqVatWlVqnzRpktLS0jR79mw99dRTJ3x++vTp6tixo2bMmKFnn332hPYXX3xRbdu21bRp0zRt2rQT2ufOnaumTZvqmWeeUWZm5gntWVlZkqRx48Zpzpw5ldqaNGmiefPmSZIeffRRLViwoFJ7mzZtNHPmTEnSqFGjNG/evEr969Chg1544QVJ0ogRI5T9memLzp07a/LkyZKkjIwM5ebmVmrv1q2bJkyYIEm68847VVBQUKm9R48eevzxxyVJt912m3Yft2Zcknr16qWHHnpIktS3b18VF1e+LW+/fv00cuRISTrheyeVf/ceLv2XHs9bqomHDmn+vpgkKal1azXq2FH/lZqqwS1aJMR377HHHjuh/fjv3kMPPXTCdzORvnuffXThZ797WVlZlfqXCN+9MLl3KrV28tTMMiRlSFJycrJisVil9tzcXGVlZengwYMntEnSunXrlJWVpb179560fc2aNcrKytKOHTtO2r5q1So1b95c+fn5J21fuXKlGjZsqLy8vJO2r1ixQocPH9bq1atP2r5s2TLFYjGtXLlSpaWlJ7xnyZIl2rp1q1atWnXSzy9evFjr16/XmjVrTtr+7rvvqmXLllq3bt1J2xcuXKiUlBTl5uaetP3oL9f69etPaC8uLq5o37hx4wntZWVlFe35+fkn9C85ObmivaCg4ITPFxYWVrQXFhae0F5QUFDRvn379hPa8/PzK9p37typffv2VWrfuHFjRfuePXt06NChSu3r16+vaD/Zf5vc3Fx9/mt9dGRSkiTpYHKKXLtUJTVrouLi4oT67p2s/fjv3sm+m4n03fts+2e/e5/tXyJ898Lk3qmYc9W/MOOkOzDrIekXzrmbgu1RkuSce/xUn0lLS3M5OTmhjluXZWVlnfSvsy987d9VaV1VXFysNRs+VlLDpKjLqRG+/uyO8r1/ZrbcOde9qvfF48rTpZIuM7NLzKyRpO9IqvnniwFx1vL8VKW0buFtqKP+CD0V45wrMbNhkl5X+XLHqc65NaErAwCclbjMsTvn5kqaG499AVHJysqqmA8FEhk3AQMAzxDsQGDcuHGaMWNG1GUAoXGvGCAwZ86cM1pSBtRVjNgBwDMEOwB4hmAHAM8Q7ECgSZMmaty4cdRlAKFx8hQIzJs3j3Xs8AIjdgDwDMEOBB599FE9//zzUZcBhMZUDBBYsGAB69jhBUbsAOAZgh0APEOwA4BnmGMHAm3atFFZWVnUZQChEexAYObMmaxjhxeYigEAzzBiBwKjRo1Sfn6+1w9DRv1AsAOBxYsXs44dXmAqBgA8Q7ADgGcIdgDwDHPsQKBDhw5KTk6OugwgNIIdCLzwwgusY4cXmIoBAM8wYgcCI0aMUEFBAevYkfAIdiCQnZ3NOnZ4gakYAPAMwQ4AniHYAcAzzLEDgc6dO6uwsDDqMoDQCHYgMHnyZNaxwwtMxQCAZxixA4GMjAwVFhayjh0Jj2AHArm5uaxjhxeYigEAzxDsAOAZgh0APMMcOxDo1q2bCgoKoi4DCI1gBwITJkxgHTu8wFQMAHiGETsQuPPOO7V9+3bWsSPhEexAoKCggHXs8AJTMQDgGYIdADxDsAOAZ0IFu5ndbmZrzKzMzLrHqyggCj169FDXrl2jLgMILezJ09WSvi1pUhxqASL1+OOPs44dXggV7M65jyTJzOJTDQAgtFpb7mhmGZIyJCk1NdXrkVFRURH9S0APP/ywSkpKNHbs2KhLqTG+/uyO8r1/1VVlsJvZfEntT9L0oHPuleoeyDk3WdJkSUpLS3M+XwSSlZXl9UUuvvavQYMGOnDggJd9O8rXn91RvvevuqoMdudc79ooBAAQHyx3BADPhF3ueKuZFUjqIelVM3s9PmUBAM5W2FUxL0t6OU61AJHq1auXNm7cGHUZQGjcBAwIPPTQQ6yogBeYYwcAzzBiBwJ9+/bVnj17tGTJkqhLAUJhxA4EiouLdejQoajLAEIj2AHAMwQ7AHiGYAcAz3DyFAj069dP69evj7oMIDSCHQiMHDmSdezwAlMxAOAZRuxAID09XbFYTNnZ2VGXAoTCiB0APEOwA4BnCHYA8AzBDgCe4eQpEBg4cKByc3OjLgMIjWAHAvfccw/r2OEFpmKAwIEDB3Tw4MGoywBCY8QOBG6++WbFYjH16dMn6lKAUBixA4BnCHYA8AzBDgCeIdgBwDOcPAUCgwcP1rp166IuAwiNYAcCgwcPZh07vMBUDBDYtWuX9u7dG3UZQGiM2IHAgAEDFIvFdMstt0RdChAKI3YA8AzBDgCeIdgBwDMEOwB4hpOnQGDo0KFas2ZN1GUAoRHsQOCOO+5gHTu8wFQMENi8ebN27NgRdRlAaIzYgcCgQYMUi8U0cODAqEsBQmHEDgCeIdgBwDMEOwB4hmAHAM9w8hQI3H///Vq1alXUZQChEexAoH///mrevHnUZQChMRUDBHJycpSfnx91GUBojNiBwJAhQxSLxXTXXXdFXQoQCiN2APAMwQ4AngkV7Gb2pJmtM7MPzexlM2sVp7oAAGcp7Ij9n5KucM5dKSlX0qjwJQEAwgh18tQ598Zxm+9JGhCuHCA6Y8aM0cqVK6MuAwjNnHPx2ZHZbEkznHMvnKI9Q1KGJKWmpl6TmZkZl+PWRUVFRTrnnHOiLqPG+Nw/n/sm0b9Ed+ONNy53znWv6n1VBruZzZfU/iRNDzrnXgne86Ck7pK+7arxlyItLc3l5ORU9baElZWVpfT09KjLqDG+9i87O1vLli3T3XffHXUpNcbXn91RvvfPzKoV7FVOxTjneldxoMGS+knqVZ1QB+qqESNGKBaLeR3sqB9CzbGbWR9JP5P0FefcgfiUBAAII+yqmImSmkv6p5llm9lzcagJABBC2FUxneJVCAAgPrjyFAA8w03AgMDYsWO1YsWKqMsAQiPYgUDPnj11+PDhqMsAQmMqBggsWrRIq1evjroMIDSCHQiMHj1aU6ZMiboMIDSCHQA8Q7ADgGcIdgDwDMEOAJ5huSMQmDBhgpYtWxZ1GUBoBDsQ6Natm2KxWNRlAKExFQME5s+fr+XLl0ddBhAawQ4EHnvsMU2fPj3qMoDQCHYA8AzBDgCeIdgBwDMEOwB4huWOQGDSpElasmRJ1GUAoRHsQCAtLU1bt26NugwgNKZigMDs2bO1aNGiqMsAQiPYgcBTTz2lzMzMqMsAQiPYAcAzBDsAeIZgBwDPEOwA4BmWOwKB6dOna/HixVGXAYTGiB0IdOzYUe3atYu6DCA0gh0IzJgxQ2+++WbUZQChEexA4Nlnn9WsWbOiLgMIjWAHAM8Q7ADgGYIdADxDsAOAZ1jHDgRefPFFvfvuu1GXAYTGiB0ItG3bVi1btoy6DCA0gh0ITJs2Ta+99lrUZQChEexAgGCHLwh2APAMwQ4AniHYAcAzBDsAeIZ17EBg7ty5WrhwYdRlAKExYgcCTZs2VUpKStRlAKER7EDgmWee0T/+8Y+oywBCYyoGCGRmZioWi0VdBhBaqBG7mT1qZh+aWbaZvWFmF8SrMADA2Qk7FfOkc+5K51w3SXMkPRy+JABAGKGC3Tm377jNZpJcuHIAAGGFnmM3s19LukvSXkk3hq4IABCKOXf6QbaZzZfU/iRNDzrnXjnufaMkpTjnHjnFfjIkZQSbV0hafVYVJ4a2knZFXUQN8rl/PvdNon+JLs0517yqN1UZ7NVlZhdJmuucu6Ia713mnOselwPXQfQvcfncN4n+Jbrq9i/sqpjLjtu8RdK6MPsDAIQXdo79CTNLk1QmaZOkH4UvCQAQRqhgd87ddpYfnRzmuAmA/iUun/sm0b9EV63+xW2OHQBQN3CvGADwTGTB7vPtCMzsSTNbF/TvZTNrFXVN8WRmt5vZGjMrMzNvViCYWR8zyzGzPDP7edT1xJOZTTWzHWbm5TJjM+toZm+Z2drguzk86prixcxSzOx9M1sZ9O2XVX4mqqkYM2tx9MpVM/uJpC8457w4+WpmX5f0pnOuxMx+I0nOuQciLituzKyLyk+YT5I00jm3LOKSQjOzJEm5kr4mqUDSUknfdc6tjbSwODGzL0sqkvR8dZYkJxozO1/S+c65FWbWXNJySd/y4ednZiapmXOuyMySJb0jabhz7r1TfSayEbvPtyNwzr3hnCsJNt+T1CHKeuLNOfeRcy4n6jri7DpJec65Dc65w5L+rvIlvF5wzi2UtCfqOmqKc26rc25F8O/7JX0k6cJoq4oPV64o2EwO/jltXkY6x25mvzazzZK+J39vIPZ9SfOiLgJVulDS5uO2C+RJMNQ3ZnaxpKskLYm4lLgxsyQzy5a0Q9I/nXOn7VuNBruZzTez1Sf55xZJcs496JzrKOkvkobVZC3xVlXfgvc8KKlE5f1LKNXpH1DXmNk5kmZKGvGZWYGE5pwrDe6i20HSdWZ22um0Gn3QhnOudzXf+hdJcyWd9D4zdVFVfTOzwZL6SerlEnBN6Rn87HyxRVLH47Y7BK8hQQTzzzMl/cU591LU9dQE51zMzN6S1Eenud9WlKtivL0dgZn1kfQzSd90zh2Iuh5Uy1JJl5nZJWbWSNJ3JM2KuCZUU3CC8Y+SPnLOjY+6nngys9SjK+vMrInKT/CfNi+jXBUzU1Kl2xE457wYIZlZnqTGknYHL73ny4ofSTKzWyX9j6RUSTFJ2c65myItKg7M7GZJEyQlSZrqnPt1tBXFj5n9TVK6yu9+uF3SI865P0ZaVByZ2Q2S3pa0SuWZIkmjnXNzo6sqPszsSkl/Vvn3soGkTOfcr077mQScJQAAnAZXngKAZwh2APAMwQ4AniHYAcAzBDsAeIZgBwDPEOwA4BmCHQA88/8Bmm8QHThTr/cAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "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)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's reflect *before* rotating." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "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)\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 1 }