{ "cells": [ { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import division\n", "import sympy\n", "from sympy import *\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sympy import pprint as pp\n", "\n", "# Enable LaTeX-based rendering\n", "#%load_ext sympy.interactive.ipythonprinting\n", "# New way of setting printing:\n", "from sympy import init_printing\n", "init_printing()\n", "\n", "from IPython.display import display\n", "from IPython.display import Image" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1 - Design parameters\n", "Omnistereo Geometric Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "w, h, b, d, c1, c2, k1, k2, r_sys, r_ref = symbols(\"w, h, b, d, c_1, c_2, k_1, k_2, r_{sys}, r_{ref}\", real=True)\n", "# Constraints for hyperboloids:\n", "k1_constraint = k1 > 2\n", "k2_constraint = k2 > 2\n", "c1_constraint = c1 > 0\n", "c2_constraint = c2 > 0\n", "xw, yw, zw = symbols(\"x_w, y_w, z_w\", real=True)\n", "# Local image:\n", "# Image(filename='../images/geometric_model.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## System Height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`, we obtain:\n", "\n", "$h=\n", "\\left\\lvert{\\dfrac{c_{1}}{2} + \\dfrac{c_{2}}{2} - d + \\sqrt{\\dfrac{c_{1}^{2} \\left(k_{1} - 2\\right)}{4 k_{1}} + w^{2} \\left(\\dfrac{k_{1}}{2} + 1\\right)} + \\sqrt{\\dfrac{c_{2}^{2} \\left(k_{2} - 2\\right)}{4 k_{2}} + w^{2} \\left(\\dfrac{k_{2}}{2} + 1\\right)}}\\right\\rvert\n", "$" ] }, { "cell_type": "code", "execution_count": 322, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left\\lvert{\\frac{c_{1}}{2} + \\frac{c_{2}}{2} - d + \\frac{1}{2} \\sqrt{\\frac{1}{k_{1}} \\left(c_{1}^{2} \\left(k_{1} - 2\\right) + 2 k_{1} w^{2} \\left(k_{1} + 2\\right)\\right)} + \\frac{1}{2} \\sqrt{\\frac{1}{k_{2}} \\left(c_{2}^{2} \\left(k_{2} - 2\\right) + 2 k_{2} w^{2} \\left(k_{2} + 2\\right)\\right)}}\\right\\rvert$$" ], "text/plain": [ "│ _________________________________ _________________\n", "│ ╱ 2 2 ╱ 2 \n", "│ ╱ c₁ ⋅(k₁ - 2) + 2⋅k₁⋅w ⋅(k₁ + 2) ╱ c₂ ⋅(k₂ - 2) + 2\n", "│ ╱ ─────────────────────────────── ╱ ────────────────\n", "│c₁ c₂ ╲╱ k₁ ╲╱ k\n", "│── + ── - d + ────────────────────────────────────── + ──────────────────────\n", "│2 2 2 2 \n", "\n", "________________│\n", " 2 │\n", "⋅k₂⋅w ⋅(k₂ + 2) │\n", "─────────────── │\n", "₂ │\n", "────────────────│\n", " │" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "b - c₁ - c₂ + d\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGwAAAAZBAMAAAAmp9aMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iiXYyVM3vq5kQ\nZkSv+zKwAAABdklEQVQ4EWMQUjJgIBHwKakwKJCoB6zcim7a+CQ3MJBjG38BNm08hILo/QFs2tgD\nCASSEwNZ2rph2lhcwxA2wG1zCU1AiMJYzEvCvkO1MaszdMCEGRhg2owKOBoQojDWSwPGP1BtnA4M\nyxnYBKAyMG1TGLgKWDbugamH0DxzGbgboNr2H2BgYNulAJGA2cYNNJTBmWEFSPSEEgi0AVlAUSYH\nqLaJQD4DuwKIZOnoaJrR0bGBgYETZLsyQ74BSBgOgKLnH0C08XwBiUK0gRgBIC7DeQcgMY/B/gGQ\nQgCgaD3DAUgE/AWqxdDGf4GBoYCBof4AQg+Qdb6AQYLdAKJtFwPPNgxt3AsYTicwMKii6GLgCODV\nYoH6jcX3KqYjGVzuAl3LsgFVG89SN6s4qDawDLrfIMpvo+qC8RA5AK6ND+gpGOBz4EuAsZFpJG0T\nkMWh7IzywgNYhBFJmXnTL6BX0MH8///RhcB8hG1YpXEJ0lubEjnlpBYAQD5LOr7wOr0AAAAASUVO\nRK5CYII=\n", "text/latex": [ "$$\\begin{bmatrix}c_{1} + c_{2} - d\\end{bmatrix}$$" ], "text/plain": [ "[c₁ + c₂ - d]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h_eqn = abs((c1/2)+(c2/2) - d + sqrt((k1-2)*(c1)**(2)/(4*k1)+ (w**2)*(1+k1/2))+ sqrt((k2-2)*(c2)**(2)/(4*k2)+ (w**2)*(1+k2/2)))\n", "h_eqn\n", "display(simplify(h_eqn))\n", "baseline_eqn = b-(c1 + c2 - d)\n", "pp(baseline_eqn)\n", "#print(sympy.latex(h_eqn))\n", "#h_eqn\n", "#print(sympy.latex(baseline_eqn))\n", "baseline_sln = solve(baseline_eqn, b)\n", "display(baseline_sln)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lens Hole Radius" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`, we obtain:\n", "\n", "$\\beta = arctan\\left (\\dfrac{r_{sys}}{\\dfrac{c_{1}}{2}+\\sqrt{\\dfrac{c_{1}^{2}\\cdot \\left (-2+k_{1}\\right )}{4\\cdot k_{1}}+r_{sys}^{2}\\cdot \\left (-1+\\dfrac{k_{1}}{2}\\right )}}\\right )$\n", "\n", "$r_{\\beta} =\\begin{array}{l}\\dfrac{\\sqrt{k_{1}}\\cdot r_{sys}\\cdot \\left (2\\cdot d\\cdot \\sqrt{k_{2}}-c_{2}\\cdot \\sqrt{k_{2}}-c_{2}\\cdot \\sqrt{-2+k_{2}}\\right )}{\\sqrt{k_{2}}\\cdot \\left (c_{1}\\cdot \\sqrt{k_{1}}+\\sqrt{-2\\cdot c_{1}^{2}+c_{1}^{2}\\cdot k_{1}-4\\cdot k_{1}\\cdot r_{sys}^{2}+2\\cdot k_{1}^{2}\\cdot r_{sys}^{2}}\\right )}\\\\d-\\dfrac{c_{2}}{2}-\\dfrac{c_{2}\\cdot \\sqrt{-2+k_{2}}}{2\\cdot \\sqrt{k_{2}}}>0\\end{array}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2 - Mirror profiles (expressions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mirror 1 (Top)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align}\n", " {\\left(z_1 - \\frac{{{c_1}}}{2} \\right)^2} - ({x_1^2} + {y_1^2})\\left(\\frac{{{k_1}}}{2} - 1\\right) &= \\frac{{c_1^2}}{4}\\left(\\frac{{{k_1} - 2}}{{{k_1}}}\\right)\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 294, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x1, y1, z1 = symbols(\"x_1, y_1, z_1\", real=True)" ] }, { "cell_type": "code", "execution_count": 324, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{c_{1}^{2}}{2 k_{1}} - c_{1} z_{1} - \\frac{k_{1} x_{1}^{2}}{2} - \\frac{k_{1} y_{1}^{2}}{2} + x_{1}^{2} + y_{1}^{2} + z_{1}^{2}$$" ], "text/plain": [ " 2 2 2 \n", "c₁ k₁⋅x₁ k₁⋅y₁ 2 2 2\n", "──── - c₁⋅z₁ - ────── - ────── + x₁ + y₁ + z₁ \n", "2⋅k₁ 2 2 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nAVTcXjRYYjmcAAAAAElFTkSuQmCC\n", "text/latex": [ "$$- \\frac{c_{1}}{2} + z_{1} - \\left\\lvert{\\sqrt{\\frac{c_{1}^{2} \\left(k_{1} - 2\\right)}{4 k_{1}} + \\left(\\frac{k_{1}}{2} - 1\\right) \\left(x_{1}^{2} + y_{1}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _____________________________________│\n", " │ ╱ 2 │\n", " c₁ │ ╱ c₁ ⋅(k₁ - 2) ⎛k₁ ⎞ ⎛ 2 2⎞ │\n", "- ── + z₁ - │ ╱ ──────────── + ⎜── - 1⎟⋅⎝x₁ + y₁ ⎠ │\n", " 2 │╲╱ 4⋅k₁ ⎝2 ⎠ │" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$$- \\frac{c_{1}}{2} + z_{1} - \\left\\lvert{\\sqrt{\\frac{c_{1}^{2}}{4} - \\frac{c_{1}^{2}}{2 k_{1}} + \\frac{k_{1} x_{1}^{2}}{2} + \\frac{k_{1} y_{1}^{2}}{2} - x_{1}^{2} - y_{1}^{2}}}\\right\\rvert$$" ], "text/plain": [ " │ __________________________________________│\n", " │ ╱ 2 2 2 2 │\n", " c₁ │ ╱ c₁ c₁ k₁⋅x₁ k₁⋅y₁ 2 2 │\n", "- ── + z₁ - │ ╱ ─── - ──── + ────── + ────── - x₁ - y₁ │\n", " 2 │╲╱ 4 2⋅k₁ 2 2 │" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mirror_1_eqn = (z1 - c1/2)**2 - (x1**2 + y1**2)*(k1/2 - 1) - (c1**2/4)*((k1 - 2)/k1) \n", "display(expand(mirror_1_eqn))\n", "mirror_1_eqn_top = z1 - c1/2 - abs(sqrt((x1**2 + y1**2)*(k1/2 - 1) + (c1**2/4)*((k1 - 2)/k1)))\n", "display(mirror_1_eqn_top)\n", "display(expand(mirror_1_eqn_top))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Line passing through points $P_w$ and $F_1$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Line equations:" ] }, { "cell_type": "code", "execution_count": 296, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG0AAAAPBAMAAAAc6lw0AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2ZruZIu9E\nVKvjoGqaAAABbElEQVQoFWNgIAwYFxBWg00FbwI2UcJi+PWxppVAjBDLW5OKYgNMH2Paq2NhGNao\nMHQyMHgwMDAGsJsxKyBLw/SJMhQnGCFLgNhcHxgcGTwfMzCwCrB+5F2ALA3TF8gQL3ALJiFkDAIq\nDIy/5wCFLgPtY2BqgElCaJg+AQYNVAkw78T/BrA+Bgb+BCRpViUl5U1KShPAQt+QJKDMtQxiv6D6\n/B0YBHjiGBYx7oLIwexjYPkCdM3RB1wK0gvgBmgzMHwA6+MVyGdgE2DlF8hg0EHVd5HtA0MiQ8BH\ntgamA3B9LQxsCWB95y/0MyxnWHiY4RlDFoo+nr8cH7gKuGQM+BLYFsD1LUvPBbKB4SKXJhZewMAw\nlWEPQwCKPsZnianlDAycAdwHWOHaoAygPiiwYfzIkABhw/0H5jIfkBdggyqCU7fhLBWeD+wLIDwe\noPUIwORwnqEKwQWzVto/g4n4pVWCHI4JWJ6lT7vAAADq7VAxrw41rAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- s_{1} x_{w} + x_{w}$$" ], "text/plain": [ "-s₁⋅x_w + x_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAQBAMAAADngUwAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2ZruZIu9E\nVKvjoGqaAAABiklEQVQoFYWPMUgCURzGv0vv0vPUI6ilSDG3GoKgKci2WuqmoCXepFlEDi01OUTU\nEiElDUFXQxAhWENDNBxE0abQ6CJFzgpRYEG9u3d3PUHyP7z3ve97v/f+f6BjCXrHK20uBEkbs6P1\nLyUm160HhAWCS5V7y6F685CvON+ScewC04AYLGKNDx1Kq0Cq8wHVch1TmHkFCv4odvjQpuRyDr6s\nHfSMmRWH8HVMnWdADRB8tKEE3CBM+MDUTz9Zi0JJ9b67oRiLDV3HYvvUUBqYS7gBEwX0NRmVg1RU\nFnEm3LLEmYt2voKHqhzt1112GKCj0g6xB19VDKtLGGmlfFUaaQ0p22W41BYkwqgjlDKn96hhuZXy\nZ5VPeWA0RCTdpc5Tq1Sbfw3On+g4xB00FjodCm/pJvxawBBdyBYmBeSACaEBYh3gUACdzGNEVIn5\nf2sFCEWFbyCu1Lt15isZtr8gYqArUcImO7vrxWQNHuIjwGxyw+yYr3FsA95aKl/mXVsryYM2LrUe\n0wkn+AWLnlqeNEJZmAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- s_{1} y_{w} + y_{w}$$" ], "text/plain": [ "-s₁⋅y_w + y_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJgAAAAVBAMAAABIwjoUAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiXZmMs27mSIQ70RU\nq93rZ8ecAAACJElEQVQ4EbVSS2gTURQ9M5m08zJpHSziShhTfwsXtigVVwFBcVF10UEwIoMIuoxF\n6EJSgyIiKAyCIrowG6XQzYigu1jcCC4kBJciARGkikbcWEH0vjf3tWOmTWfjhZl7zz3nnfcF/lsc\nXN85V15foxR2kEH4NoNGSvJhBmE+g0ZKtmbRmS6r7vVXz/WnY1Y0WPWyr9rp9KU1eYqL1cyM0l5m\njSoVxsZtelQiN+etPRpu5kKbOYvR8iuYwjngkBQMkN7+Ah9WwHqdxJmdNV1jH1fa7G5ppsUtu4sj\nOPxeouEFoODinVXrSJgIAVvrgTdMaLMQt7RU/LpEpRIUIuBySKjYkaw4/ZXiY1nWmFR/9TvGpTaD\ntTLRsz9BwuyxVMZmPEYlp7qClNkm31/0/ROq+3yZu4nbP9mMtim+SyJt9oq6T1r28ft1oCklFHpl\nRZrI2YJrYg4ngS6byQv4QVZpM9IPwV0yg3yE1AXQRC1jQ7gDFZyF6bGZ0QJqEBfTZkfHxiv2g86Q\nZ9aBGbksCl6Z9WFke3SjiTZ24crobiLUBchHa4yMr7LNau5RhEG3EBmkrdAng80GcYA6FzAPN+7z\ndX9ilD4zSQxHD0OTXmKDVfrMFPwsluAx8VrlCUbFBhf/pHz5BfbT2j3uPuWs0pTTzdXjxvVvbVkM\nxNCe/e1J2BNWe3R6AbjT047hZGlCHlci7CAB1irPr0X09q/2NtJYbybNAH8BICJ27ih6OIQAAAAA\nSUVORK5CYII=\n", "text/latex": [ "$$s_{1} \\left(c_{1} - z_{w}\\right) + z_{w}$$" ], "text/plain": [ "s₁⋅(c₁ - z_w) + z_w" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lambda1, s1 = symbols(\"lambda_1, s_1\", real=True)\n", "pos_F1 = (0, 0, c1)\n", "\n", "x1_on_line = xw + s1 * (pos_F1[0]-xw)\n", "display(x1_on_line)\n", "\n", "y1_on_line = yw + s1 * (pos_F1[1]-yw)\n", "display(y1_on_line)\n", "\n", "z1_on_line = zw + s1 * (pos_F1[2]-zw)\n", "display(z1_on_line)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $\\lambda_1 = 1 - s_1$, so that:" ] }, { "cell_type": "code", "execution_count": 297, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC0AAAARBAMAAAC7jDh/AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKuJ70RUuyJ23TLN\nmWb8I+xeAAAA1ElEQVQYGWNgEFJgwAoYP2MVZmBQwSEen4BdgqUAuzjzR6g440yNSEuEGo6fQPZ2\nIBZmeDVhDUKc8RcDw14tIN+QwV4gAyEuPn8DA0MWkC/AcBwhysBxgv8CRJyBAWQiDHRt4HWAinP/\nZmBkCFbgOCDSwMDtysD9DSKeyPmBYSKDwUfOAp4Ahv0PGBiWg8VZv7F/4HjAIbqAaQJnA0Ml0Lz3\nDSB7GTUnTn7HwMBrwBLADLME7B4IhytAXoATLp4CZ/FsiGd4AeP1rteEMbk1591MYAAA7Eku9GkR\nNRQAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\lambda_{1} x_{w}$$" ], "text/plain": [ "λ₁⋅x_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACsAAAASBAMAAAAwBjqWAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKuJ70RUuyJ23TLN\nmWb8I+xeAAAA6ElEQVQYGWNgEFJgwAYYP2MTZWBQwS4cn4BVnKUAqzDzR6iw8E0GDke4Eo6fQOZ2\nIDZIYeD8ABdm/MXAsFeLgYEj4Q4DO8JA8fkbGBiyGBgYGTwZ+CfAVHOc4L8AFmZg/ciwH6gCAro2\n8DpAhHkPMExhCFbgOCDSwMDtysD9DSLMrsBQxGDwkbOAJ4Bh/wMGhuVQ1QWs/zhEFzBN4GxgqAQa\n9b4BZCUDo/LcHwy8BiwBzEAOBICEGRiApnMFyAtwQsSAZAoQ6zDIBzDwbIhneAET7l2vycCwEmQi\nt+a8mwkwYTAdORfuagA11jHVblOanQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\lambda_{1} y_{w}$$" ], "text/plain": [ "λ₁⋅y_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKcAAAARBAMAAABKq6G3AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2IlTvq5m7\nZkT3Gyx5AAAB8klEQVQ4EYWTPUgcQRTH/3vu3d6HX9iEaPBkEVIIcpAUEQQXrBIFD0G74BViI+IR\nSwsXBEFsjkC6IAeCqNVBRPCaXHW1jVqFLEhKETF+oAjOvtmZnb3Rc4qZ937v/f87MzcHaKO7rKGX\ngbH3ck2tGNdq9lqczb/Wweu7kbY3kUwkkqZLAjVfL1y1vqYmMpa0/U6ypkGqppalXIUI6c8Ib0ji\n07MBiV+qJSmfmnNCLilmOgN6tmkehQ0UWZ9gw6z5sXXDpnE/8oeQL7mxPp0CKwWQzqjPV0mgTKk8\ndsxqzifGFTC2JWrC9AfSrk6BbA6kM2CVhabrgz/68ds/RZJM3y06wKpoCEwzdCeNlO2g/l/ovgiJ\nXOm+ydR631ERppO2PWTbA6yL/3rcNKTAt+JDYNrOVNHBXzyZLjmZkjBlTcFO+SPXdmp9xGFgusGa\n/5WtvrdFaf3ISnR8cxMme3uN8o4jwNUoPnuYcEmXrCCN/GWiFvOkaRXGPhUnmHpYN82U0eNopibb\nS0uNdKPHJ4NWby5dSIQ7jX894ceos+/8LWpyTP0p6J9qZaztlkwrbd89ZPIpLy43ygO6Ux42Hr8Z\nJVNqaPGynQneKudkSYbrIjoXgb8+TyF1MecCp6qA/ZV+3RcCsjyyHa1R9jxVdOb2woGLJ1/icstz\n7utHAAAAAElFTkSuQmCC\n", "text/latex": [ "$$- c_{1} \\lambda_{1} + c_{1} + \\lambda_{1} z_{w}$$" ], "text/plain": [ "-c₁⋅λ₁ + c₁ + λ₁⋅z_w" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s1_eqn = 1 - lambda1\n", "\n", "xr1_on_line = simplify(x1_on_line.subs({s1: s1_eqn}))\n", "display(xr1_on_line)\n", "\n", "yr1_on_line = simplify(y1_on_line.subs({s1: s1_eqn}))\n", "display(yr1_on_line)\n", "\n", "zr1_on_line = expand(z1_on_line.subs({s1: s1_eqn}))\n", "display(zr1_on_line)" ] }, { "cell_type": "code", "execution_count": 298, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nG/4Ppxp0hum/oxMAAAAASUVORK5CYII=\n", "text/latex": [ "$$- c_{1} \\lambda_{1} + \\frac{c_{1}}{2} + \\lambda_{1} z_{w} - \\left\\lvert{\\sqrt{\\frac{c_{1}^{2} \\left(k_{1} - 2\\right)}{4 k_{1}} + \\left(\\frac{k_{1}}{2} - 1\\right) \\left(\\lambda_{1}^{2} x_{w}^{2} + \\lambda_{1}^{2} y_{w}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _______________________________________________│\n", " │ ╱ 2 │\n", " c₁ │ ╱ c₁ ⋅(k₁ - 2) ⎛k₁ ⎞ ⎛ 2 2 2 2⎞ │\n", "-c₁⋅λ₁ + ── + λ₁⋅z_w - │ ╱ ──────────── + ⎜── - 1⎟⋅⎝λ₁ ⋅x_w + λ₁ ⋅y_w ⎠ │\n", " 2 │╲╱ 4⋅k₁ ⎝2 ⎠ │" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mirror_1_intersection = mirror_1_eqn_top.subs({x1: xr1_on_line, y1: yr1_on_line, z1:zr1_on_line})\n", "display(mirror_1_intersection)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solving for intersection point $P_1$ " ] }, { "cell_type": "code", "execution_count": 299, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{1} k_{1} \\left(c_{1} - z_{w}\\right) - \\sqrt{k_{1} \\left(k_{1} - 2\\right) \\left(c_{1}^{2} - 2 c_{1} z_{w} + x_{w}^{2} + y_{w}^{2} + z_{w}^{2}\\right)} \\left\\lvert{c_{1}}\\right\\rvert}{k_{1} \\left(2 c_{1}^{2} - 4 c_{1} z_{w} - k_{1} x_{w}^{2} - k_{1} y_{w}^{2} + 2 x_{w}^{2} + 2 y_{w}^{2} + 2 z_{w}^{2}\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________________________________________ \n", "⎜ ╱ ⎛ 2 2 2 2⎞ \n", "⎜c₁⋅k₁⋅(c₁ - z_w) - ╲╱ k₁⋅(k₁ - 2)⋅⎝c₁ - 2⋅c₁⋅z_w + x_w + y_w + z_w ⎠ ⋅│c₁\n", "⎜─────────────────────────────────────────────────────────────────────────────\n", "⎜ ⎛ 2 2 2 2 2 2⎞ \n", "⎝ k₁⋅⎝2⋅c₁ - 4⋅c₁⋅z_w - k₁⋅x_w - k₁⋅y_w + 2⋅x_w + 2⋅y_w + 2⋅z_w ⎠ \n", "\n", " ⎞\n", " ⎟\n", "│ ⎟\n", "─,⎟\n", " ⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{1} k_{1} \\left(c_{1} - z_{w}\\right) + \\sqrt{k_{1} \\left(k_{1} - 2\\right) \\left(c_{1}^{2} - 2 c_{1} z_{w} + x_{w}^{2} + y_{w}^{2} + z_{w}^{2}\\right)} \\left\\lvert{c_{1}}\\right\\rvert}{k_{1} \\left(2 c_{1}^{2} - 4 c_{1} z_{w} - k_{1} x_{w}^{2} - k_{1} y_{w}^{2} + 2 x_{w}^{2} + 2 y_{w}^{2} + 2 z_{w}^{2}\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________________________________________ \n", "⎜ ╱ ⎛ 2 2 2 2⎞ \n", "⎜c₁⋅k₁⋅(c₁ - z_w) + ╲╱ k₁⋅(k₁ - 2)⋅⎝c₁ - 2⋅c₁⋅z_w + x_w + y_w + z_w ⎠ ⋅│c₁\n", "⎜─────────────────────────────────────────────────────────────────────────────\n", "⎜ ⎛ 2 2 2 2 2 2⎞ \n", "⎝ k₁⋅⎝2⋅c₁ - 4⋅c₁⋅z_w - k₁⋅x_w - k₁⋅y_w + 2⋅x_w + 2⋅y_w + 2⋅z_w ⎠ \n", "\n", " ⎞\n", " ⎟\n", "│ ⎟\n", "─,⎟\n", " ⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lambda1_sln = solve([mirror_1_intersection], lambda1)\n", "lambda1_sln_minus = simplify(lambda1_sln[0])\n", "display(lambda1_sln_minus)\n", "lambda1_sln_plus = together(lambda1_sln[1])\n", "display(lambda1_sln_plus)" ] }, { "cell_type": "code", "execution_count": 300, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lambda1_func_minus = lambdify([c1, k1, xw, yw, zw], lambda1_sln_minus, modules=['numpy'])\n", "lambda1_func_plus = lambdify([c1, k1, xw, yw, zw], lambda1_sln_plus, modules=['numpy'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\lambda_1$, can be simplified to be\n", "\n", "\\begin{align}\n", " \\lambda_1=\\frac{c_1}{L_{v_1} \\sqrt{k_1\\cdot(k_1 - 2)} \n", " + k_1 \\left(c_1 - z_w \\right)}\n", "\\end{align}\n", "\n", "where $L_{v_1} = ||{\\vec{f_1} - \\vec{p_w}}|| =|\\sqrt{x_w^2+y_w^2+(c_1 - z_w)^2} |$, which is the distance between $P_w$\n", "and mirror 1's focus point $F_1$.\n" ] }, { "cell_type": "code", "execution_count": 301, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n/we+EBZYSMhd1gAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\frac{c_{1}}{k_{1} \\left(c_{1} - z_{w}\\right) + \\sqrt{k_{1} \\left(k_{1} - 2\\right)} \\sqrt{x_{w}^{2} + y_{w}^{2} + \\left(c_{1} - z_{w}\\right)^{2}}}$$" ], "text/plain": [ " c₁ \n", "──────────────────────────────────────────────────────────────\n", " ___________________________\n", " _____________ ╱ 2 2 2 \n", "k₁⋅(c₁ - z_w) + ╲╱ k₁⋅(k₁ - 2) ⋅╲╱ x_w + y_w + (c₁ - z_w) " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "L1w = sqrt(xw**2 + yw**2 + (c1-zw)**2)\n", "lambda1_simple = c1/(L1w*sqrt(k1*(k1-2)) + k1*(c1-zw))\n", "display(lambda1_simple)\n", "lambda1_simple_den = (abs(sqrt(k1*(k1-2)*xw**2 + yw**2 + (c1-zw)**2)) + k1*(c1-zw))\n", "den1_simple = lambda1_simple_den*lambda1_simple_den" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mirror 2 (Bottom)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align}\n", " {\\left(z_2 - \\left(d - \\frac{c_2}{2}\\right) \\right)^2} - ({x_2^2} + {y_2^2})\\left(\\frac{{{k_2}}}{2} - 1\\right) &= \\frac{{c_2^2}}{4}\\left(\\frac{{{k_2} - 2}}{{{k_2}}}\\right)\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 325, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/latex": [ "$$\\frac{c_{2}^{2}}{2 k_{2}} - c_{2} d + c_{2} z_{2} + d^{2} - 2 d z_{2} - \\frac{k_{2} x_{2}^{2}}{2} - \\frac{k_{2} y_{2}^{2}}{2} + x_{2}^{2} + y_{2}^{2} + z_{2}^{2}$$" ], "text/plain": [ " 2 2 2 \n", "c₂ 2 k₂⋅x₂ k₂⋅y₂ 2 2 2\n", "──── - c₂⋅d + c₂⋅z₂ + d - 2⋅d⋅z₂ - ────── - ────── + x₂ + y₂ + z₂ \n", "2⋅k₂ 2 2 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{c_{2}}{2} - d + z_{2} + \\left\\lvert{\\sqrt{\\frac{c_{2}^{2} \\left(k_{2} - 2\\right)}{4 k_{2}} + \\left(\\frac{k_{2}}{2} - 1\\right) \\left(x_{2}^{2} + y_{2}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _____________________________________│\n", " │ ╱ 2 │\n", "c₂ │ ╱ c₂ ⋅(k₂ - 2) ⎛k₂ ⎞ ⎛ 2 2⎞ │\n", "── - d + z₂ + │ ╱ ──────────── + ⎜── - 1⎟⋅⎝x₂ + y₂ ⎠ │\n", "2 │╲╱ 4⋅k₂ ⎝2 ⎠ │" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x2, y2, z2, = symbols(\"x_2, y_2, z_2\", real=True)\n", "mirror_2_eqn = (z2 - (d-c2/2))**2 - (x2**2 + y2**2)*(k2/2 - 1) - (c2**2/4)*((k2 - 2)/k2)\n", "display(expand(mirror_2_eqn))\n", "mirror_2_eqn_bottom = z2 - d + c2/2 + abs(sqrt((x2**2 + y2**2)*(k2/2 - 1) + (c2**2/4)*((k2 - 2)/k2)))\n", "display(mirror_2_eqn_bottom)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Line passing through points $P_w$ and $F_2$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Line equations:" ] }, { "cell_type": "code", "execution_count": 303, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG0AAAAPBAMAAAAc6lw0AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2ZruZIu9E\nVKvjoGqaAAABgUlEQVQoFYWQMUvDUBSFz2ubVGNqH4JdFC2xg6CDKHQQh+oPsHFRcNB0aCqCWlCQ\nOnVwcbIOioNDdNBFERxFsCCKW+smgigOHZxSEAdFapr0pQkVe5d37jn3ezcvQPMiWvOZvyYCyl9u\nc+9/jlPXrCtCy6dJ1wbGEfX9brphTQRb4PZ3QGR/1Bt2xozrxKoy7AyqWtAxjlm8gaNcOaA5Y8ZN\nYZ4+saBjpFoRkO8DYBRxjcCTZaF1Mo6i3x2Y3X0liyuc54Gg4og5Seq7kKScaX06gpo8Q+jLkC8U\niMdAxTkckUsrY/vg+wDB7asQ7tJqFDAA6EYTRYCugKdckC5g0M098DoSkMt81pO3uU3wCsDlUChu\n4wSHNyhh0cWJPy26kBa6h9oVXrO549SSoTNAjxqaSQO7xmNlF0dKieQ60Cq35Tkbs4Qoi7GaNUbK\nUCxtv89svfleyteG2DHx/Gj8F7Miou7XLCka6+vliRWwUW9NdV2pMGdSzVQ/vLF8pdReEb9lMFOs\nSyLJYwAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- s_{2} x_{w} + x_{w}$$" ], "text/plain": [ "-s₂⋅x_w + x_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAQBAMAAADngUwAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2ZruZIu9E\nVKvjoGqaAAABmUlEQVQoFYWPsUsCYRjGn1Pv0vPUI6ilSLncaggCh2iw/oC8KaghvkmziBxabHKI\nqCVKShyCroaWkKyhIYIOomjTMYhIhJwVosAC+87PO26QfOGee7/n9z0f7wv0LE7reaXLBR/pYva0\n/k3x8Y32A9wCwYVse8tMDeQgXtn8dhvGLvj8AXhfEet2aKbUVwh1O6C9WMcMFlFFwRPCjh12UmI5\nC3emA/onjQqD+zkGphDTZC/BV5cUhxsEiB0Y/XMrgztc6ijJrk8L8ooyeq0o+9SQGohFLcCaAgab\ntHuXkYVQlJZwxt0yYu5FJ1/FY0UMDWkMUB0DjFUjwB7cFT4gL2OcQTPlrlCkNoSMQ2eA6hYEAvB0\nlDxKqdMH1LDCoJnyZKRvcXjCTwSNAarniTWqafqNzJ9oOKI7qgyaKe4j2YRH9eo88y2VVClKD1lg\nmmuAMN9MAXQzpx6UBeZbOvv2IvtD3C8Qlup9GvOlFPtXEdThiJawyc6W3rdacBI3AebiaWNie0Ww\nDbhqiVzZ7nZ6KX7YxaXWUzJqgj+Wx14ZNZBvUAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- s_{2} y_{w} + y_{w}$$" ], "text/plain": [ "-s₂⋅y_w + y_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMwAAAAVBAMAAAD4PRwmAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiXZmMs27mSIQ70RU\nq93rZ8ecAAACz0lEQVRIDcVVT0gUURz+Zv/ozM5qixJ2CVbt36GDSWF0iIUI6mBKOAQpIhFop7ao\nJEIaig5B0hAUYUReNMFDI4XdTDpUB6lF6tbBikAsYqNLlrD93szvzb92a6FDD3be9/u+773vvZn3\nWOA/tH3/khnPVTlaHfi7cfZ+Rc/rikpYSFrhumy1VpYVZLKiEhaaw6VfaaaH9VUPRkEsw8ztqBKu\np8KlX6WzHlaWPBgF2jgzT6NKqNaXQmWgCMQk8wE+Avu4LhejtOxkVQnOoDRs8ifxYkYbuuZ9WqC5\n6USbZJoYyBh9xfbObg8GoZw7T44azw+on2GgadByB8oYfQonmeIZtWNbRxgCuxjJmFstwwWm1CIO\nYgPeUFk/zxx1qQzeKmZdt8vImLE2nPU9AmlQ5UzAS9ZkjIVR6dZ+XACW0WXS1DZw84toPbhoUayZ\n+O7aZAyx74jR+oXpY84RO12LeHYxlDFI+EuYLQ1gGtcpQsTINkkgZas/qVMMo3/CMPIEJ6EJJth0\nwXNzYtYbxophHHGox1LBNdwQS35lhV6a9tUxpPmS8G6ITRc1b6gDntNzpqB2j5l0HFiSu0nTEvSN\nuKJN4ShQJPU9/YJH4BuQpuCsO1DGrKGm+4VL8ZNmqkNmNTaQtH8/ArSEgrLO2oJeHEeM5nLOslLw\nZxiBdgaQJ1R+m8PYW8j4JkKHdrT3qneW6rIxExhmiXeT+NC42b46h0Vsw6XW7SR2CEPweiqN7UA8\nz+NkzN3mA4u06kDLxyds1GZStkJkLwscU4s9xJyiL89L0zN6jizLbJPdDB65UMZIIdLX2/esGN21\nceY5xq0+aavIunD/wjOLkLMnlxHPRN/CCbfS23y2DErmnmA3vfksaw+5d7oevRg3XeJBqSRADZcu\niVSpVGT45y6x2Hp6nu5cWVdnS4f4LIFWzd9awB6FQ1GiUn25klANL19NOe8vlJ6dD9f4428AAAAA\nSUVORK5CYII=\n", "text/latex": [ "$$s_{2} \\left(- c_{2} + d - z_{w}\\right) + z_{w}$$" ], "text/plain": [ "s₂⋅(-c₂ + d - z_w) + z_w" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lambda2, s2 = symbols(\"lambda_2, s_2\", real=True)\n", "pos_F2 = (0, 0, d - c2)\n", "\n", "x2_on_line = xw + s2 * (pos_F2[0]-xw)\n", "display(x2_on_line)\n", "\n", "y2_on_line = yw + s2 * (pos_F2[1]-yw)\n", "display(y2_on_line)\n", "\n", "z2_on_line = zw + s2 * (pos_F2[2] - zw) \n", "display(z2_on_line)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $\\lambda_2 = 1 - s_2$, so that:" ] }, { "cell_type": "code", "execution_count": 304, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC0AAAARBAMAAAC7jDh/AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKuJ70RUuyJ23TLN\nmWb8I+xeAAAA8ElEQVQYGWNgEFJgwAoYP2MVZmBQwSEen4BdgqUAuzjzR6g440yNSEuEGo6fDAzM\n1y8yMAgzvJqwBiHO+IuBwYJBh4HBkMFeIAMhLj5/A8MKhv0NDAIMxxGiDBwn+C8wuDL0BwDFgCbC\nQdcGXgcgJ1+AgYH7NwMjQ7ACxwGRBgZuVwbub0DxlQwMiZwfGCYyGHzkLOAJYNj/gIFhOdBBFxhY\nv7F/4HjAIbqAaQJnA0MlUO37Boa3DAyMmhMnv2Ng4DVgCWAGCoIBqwHrBiiTK0BegBPKZtiTlg60\nFwx4NsQzvICJ+///D2Nya867mcAAAAWeNXny/4+WAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\lambda_{2} x_{w}$$" ], "text/plain": [ "λ₂⋅x_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACsAAAASBAMAAAAwBjqWAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKuJ70RUuyJ23TLN\nmWb8I+xeAAAA+klEQVQYGWNgEFJgwAYYP2MTZWBQwS4cn4BVnKUAqzDzR6iw8E0GDke4Eo6fDAzM\n1y8yMBikMHB+gAsz/mJgsGDQYeBIuMPAjjBQfP4GhhUM+xsYGTwZ+CfAVHOc4L/A4MrQH8DA+pFh\n/waYcNcGXgcgO1+AgfcAwxSGYAWOAyINDNyuDNzfgMIrGRjYFRiKGAw+chbwBDDsf8DAsBzolAsM\nDLwFrP84RBcwTeBsYKgEqnzfwPAWSDEqz/3BwGvAEsAM5IABqwEryDKg6VwB8gKcUFGGPWnpAkCn\nywcw8GyIZ3gBE/b//x9kK9BEbs15NxNgwmA6ci7c1QDBhDhaGmB7pAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\lambda_{2} y_{w}$$" ], "text/plain": [ "λ₂⋅y_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAAAVBAMAAACOB66tAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARN3vMmYQu3aZqyJU\nic384Ct+AAADR0lEQVRIDc1WPWgUQRT+9n72fvbuXIIiFuJptDJKUgUJhKDYxCKHWiSIspIioGDS\nKBELt1CMaCSghQmoByoEsTgQDaSIwUrR4ppAkkIvQUQhLKdoQBKJb97sz+V292wd2Dfvfe97883M\nvj0O+A9HrNBwUyft7NGGrJBkvCskwfAUoD4LIXwB0rJYGwqhELz9UGjuSWiGErQ6BsuBjKlVgiuc\nyhk8BZv1YJjQXEDmvI0lhWi6NYCBgQmhPMopaYNYgCJodHMlf5pXr4Pf2nFU8JXgXSfFkv1M7LDp\nQVM2z2jG9CfVgCM5yk1Mb/cXEcLKuVnylDyZsJEb40yQMlaotlnf1J6O8gJXfTKClmXlrFhXmvlr\nAazp+Z5Zhl3lpjbve6HlB0bGi7V1jvJFBl+bwMJlo5ZAPivHK+QlCoDWAstPUjpw1SAG4Cirwzcn\nGBDmDGBg2g2F4yi3MDqYR7aUrrDvGVbO5AmIzALRMp77Sf0FPJQVrjK0okTIvqEn5oUCd5TbRKAO\n/0SkFFsT7vIeGge7BMzKsSp5UR14ZNAOfCRCDwiud2agWwLC9tCzwwvx0bKaLeubQFh5pvSbFte+\n11CEu1lZdKGf1A5VlGUta7nTskRPQGErPFbOUKgsYka1vw/nzOK2tb24S1NGfpeiQA5WVvIU0G2r\nfxisIxGaqaoyY/IEvKN5Z1Gr9JcA+nQoLGa3GDewJPOOsuiwIzpEf0ZMmXItK7sd9ov25iOp60hU\n3nOF857pjGmUV5NDOV10WGzf3B39VRMmcUsu7CgvUgfQmpEham5X0nZYOUWXhWwRmIB6z0/6iuPF\nMvMd5cOne5e0s/m0mSwB40jhBB32Ab1WSXM7jK4jYQLxNcSFRO1IPf7xlH56dcKUPKnP9RKvnnRu\n9NikYHgdNhbv1JEqR/UsgfYNY7e6ClOwvN6OlGRMrwZbHbd2fsHBfhsKIYmsc2ZmRvRBI0kd1GrX\nfVaqcVtpmw25h4itfLhkY5umeY76JBZGElmlIDlsc127cIruybSx7pG+2zVpdq/YQHRjo1qfo1it\nMJiQGw4h+etik9fvzwIX/BkPoX8GjYYt2eifQYNy51iBFK32kvwMujIeL/2pfyP0av8CAaLL2dS1\nGc0AAAAASUVORK5CYII=\n", "text/latex": [ "$$z_{w} + \\left(\\lambda_{2} - 1\\right) \\left(c_{2} - d + z_{w}\\right)$$" ], "text/plain": [ "z_w + (λ₂ - 1)⋅(c₂ - d + z_w)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPYAAAARBAMAAAAcfUzBAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiXYyIt1Uze+rmRC7\nZkTTotXTAAACtElEQVRIDY2UTWgTQRiG32WTNMk2m7R4USjGKHoR3IOgHiR7KaV4aP33oJKD9CCC\nwVpzKxUKgpQaevDntuLBXzA3rRRaetSDRRCkIEbEiwhGrT1YNH4zu7Ozs7sJfofdb5533nl3docF\n/DLu+O1/NV+vo7OFRKXm68owMlgsRFBXsA50tpAYLON7cBTtM1NR1oWYG4BqMWx/OhOpJLntS7GN\nGXrW2EkSaqOAakkVfZWJVJJ8q3DQ8TLTUYkTehyiikUmgYvB7PRS3Bp9JcvDWxtxuta/PQYP95cr\nhBWLn+2JwWzN/Qj0qk41D4r1Bis9Ve3JYzYcKQJbXoYeIHECtSg1p/GaTVQsIluIwezED4DHLJQe\n1VkYq6vIVDbhFmsXR6HZmSprZaULuBmlz1dwn81RLCJbiMFs4xfAYxoYFotn2bs4hrJNh3L5J5K2\nvsakZ8dZjVP3lLbnUWOCwZOWSw/TLWiRSWRhIpV4GmBhj+XF6P62+RmYxUgTGLJ/I91M/OUu/8JO\nUxw12LyARavVJq7Vag7RGXAxQJC4nHfgxnyhGW55f4eLDSSO4gGxlDgUru79FKI01TLCFm+XZGEi\nK3/fg1Z2isYUk3LovG3GkDGN/ApQAY4A+5tgRzdZhFJ/aIUINdbRWz0XtohsV2SriGx9Fjr7e1DM\neaCu5Ru7MYlsHS8saA50Ckku0UFnnkA9hHEvSi/hbb0QtogkLvIlBCnTDk/TQaeYMwO7moc+Yw47\ngL73RWAV6KVbbg05h5vkRRt4Q0KYzm/bO9cMW0QSF/kKgizT6IPNYrJ4NwncpW9fcDPMgmm5HT7i\nk9cFb/E0bBFJ0qkSGXPW2EDRnbZv7ELD7fQrY6+kVXTx1FOlaNKbVUslMmbcbOVsd+qNdtvzpNvt\nlmpno3ja1RJdBJAxB0qrO/EPtxHQpR6fB9EAAAAASUVORK5CYII=\n", "text/latex": [ "$$c_{2} \\lambda_{2} - c_{2} - d \\lambda_{2} + d + \\lambda_{2} z_{w}$$" ], "text/plain": [ "c₂⋅λ₂ - c₂ - d⋅λ₂ + d + λ₂⋅z_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPYAAAAVBAMAAACH7A7XAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKuJ70RUuyJ23TLN\nmWb8I+xeAAADEklEQVRIDc2WPWgUQRTH/+ve3p25fBxBiEWKK0QICh5WBkxIE5JCyYGFEFFTxQ8Q\nY6dFcE0pooGAGhRyaPws5LCyEC+NQc0KMRYWGtzCRomYIAa18HxvPvZmNol3pQ9uZt5/fvN/N7Oz\nxwH/ezyr5ws2lyRVFwxBt+ZqGqdHaiI4uB87BGXCG3k3ZiFo53tNY0ZrxioaBWPCG3inz5OhoLdt\nZOv4amaiJgF4K9icZ86Cbe+t0scZ3UW1BX10SEpr2uS4kvrXTCkhIgC3CKeHZQu2vU+oZZii2oJO\njGgp1mtnrxibiFJNkNA4D8xS7xWpicL2tmoL2l1RqDddsO6odnbJNgq380Y0hiYw1lkeArpoxoIR\neYs1dm2m079oxbs3QNvkYk4wqtHOqbCqpu8iQNconRmHJrx+8PVZIikVUhNF5C0UuzbTzm9gD3YC\nWYxFi3ignRuGqnIij+2uv2lGKprYEuIDKSfpY8KGt+Dt2ky3TZVwH2UfyOQEohvtnCgA7Q855vCR\nttfgZ35KRhOk3ialTB8TNr15gV2b6PSLlnn04goVOMyACjcIXu0LgnlK2U5Hn8jTP6gziD44rOja\nGja9sTcIpoPgtZjje870xVJTD41OZ5GkQt5uXHLUa6J3ZRyj+rFIquupCFKTyw4wSD4GbHrTTHzf\ng8j0IrNK+gPgFJBzW7LX8FyQ0fNOhTLn9g9dAyowLhVdexWpmeNr75rhLXj7zJdQDoF74tXIPOq+\nWbgwiA5ct5zh5mTO7QKc9/Jl4kyfzEt8yeWBRZJMuOrNcHzfizhH2jcfX4EmfKINv6VnTzYc2tkr\ncibD7f4MNNPDEaGJ1oknHQWI8/KKcorbqrfU9L4XBm6Fkmbdy3slOX/HWcG4HGpnegvsOIBDMUKk\n6R7u4rDhrWsbNA2fDh/LCgVz3nKzL4deKHs+FDMys8NnZB4RInXFd47BpvcR00XSpAxUKkp/PPn1\nqonwOOVbSqJSWbYElbSLPgab3tYiSVvSeon5d2C9eaWdFX2dMCT9Dzs1dbk2QjfQl1RdMNN/AR9+\n2NuH3ldfAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\lambda_{2} z_{w} + \\left(- c_{2} + d\\right) \\left(- \\lambda_{2} + 1\\right)$$" ], "text/plain": [ "λ₂⋅z_w + (-c₂ + d)⋅(-λ₂ + 1)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s2_eqn = 1 - lambda2\n", "\n", "xr2_on_line = simplify(x2_on_line.subs({s2: s2_eqn}))\n", "display(xr2_on_line)\n", "\n", "yr2_on_line = simplify(y2_on_line.subs({s2: s2_eqn}))\n", "display(yr2_on_line)\n", "\n", "zr2_on_line = simplify(z2_on_line.subs({s2: s2_eqn}))\n", "display(zr2_on_line)\n", "display(expand(zr2_on_line))\n", "display(zw*lambda2 + (d-c2)*(1-lambda2))" ] }, { "cell_type": "code", "execution_count": 305, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/latex": [ "$$\\frac{c_{2}}{2} - d + z_{w} + \\left(\\lambda_{2} - 1\\right) \\left(c_{2} - d + z_{w}\\right) + \\left\\lvert{\\sqrt{\\frac{c_{2}^{2} \\left(k_{2} - 2\\right)}{4 k_{2}} + \\left(\\frac{k_{2}}{2} - 1\\right) \\left(\\lambda_{2}^{2} x_{w}^{2} + \\lambda_{2}^{2} y_{w}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _______________________________\n", " │ ╱ 2 \n", "c₂ │ ╱ c₂ ⋅(k₂ - 2) ⎛k₂ ⎞ ⎛ 2 \n", "── - d + z_w + (λ₂ - 1)⋅(c₂ - d + z_w) + │ ╱ ──────────── + ⎜── - 1⎟⋅⎝λ₂ ⋅x\n", "2 │╲╱ 4⋅k₂ ⎝2 ⎠ \n", "\n", "________________│\n", " │\n", " 2 2 2⎞ │\n", "_w + λ₂ ⋅y_w ⎠ │\n", " │" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mirror_2_intersection = mirror_2_eqn_bottom.subs({x2: xr2_on_line, y2: yr2_on_line, z2:zr2_on_line})\n", "display(mirror_2_intersection)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solving for intersection point $P_2$ " ] }, { "cell_type": "code", "execution_count": 306, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{2} k_{2} \\left(c_{2} - d + z_{w}\\right) - \\sqrt{k_{2} \\left(k_{2} - 2\\right) \\left(c_{2}^{2} - 2 c_{2} d + 2 c_{2} z_{w} + d^{2} - 2 d z_{w} + x_{w}^{2} + y_{w}^{2} + z_{w}^{2}\\right)} \\left\\lvert{c_{2}}\\right\\rvert}{k_{2} \\left(2 c_{2}^{2} - 4 c_{2} d + 4 c_{2} z_{w} + 2 d^{2} - 4 d z_{w} - k_{2} x_{w}^{2} - k_{2} y_{w}^{2} + 2 x_{w}^{2} + 2 y_{w}^{2} + 2 z_{w}^{2}\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________________________________________\n", "⎜ ╱ ⎛ 2 2 \n", "⎜c₂⋅k₂⋅(c₂ - d + z_w) - ╲╱ k₂⋅(k₂ - 2)⋅⎝c₂ - 2⋅c₂⋅d + 2⋅c₂⋅z_w + d - 2⋅d⋅z_\n", "⎜─────────────────────────────────────────────────────────────────────────────\n", "⎜ ⎛ 2 2 2 2 \n", "⎝ k₂⋅⎝2⋅c₂ - 4⋅c₂⋅d + 4⋅c₂⋅z_w + 2⋅d - 4⋅d⋅z_w - k₂⋅x_w - k₂⋅y_w + 2⋅\n", "\n", "________________________ ⎞\n", " 2 2 2⎞ ⎟\n", "w + x_w + y_w + z_w ⎠ ⋅│c₂│ ⎟\n", "─────────────────────────────,⎟\n", " 2 2 2⎞ ⎟\n", "x_w + 2⋅y_w + 2⋅z_w ⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{2} k_{2} \\left(c_{2} - d + z_{w}\\right) + \\sqrt{k_{2} \\left(k_{2} - 2\\right) \\left(c_{2}^{2} - 2 c_{2} d + 2 c_{2} z_{w} + d^{2} - 2 d z_{w} + x_{w}^{2} + y_{w}^{2} + z_{w}^{2}\\right)} \\left\\lvert{c_{2}}\\right\\rvert}{k_{2} \\left(2 c_{2}^{2} - 4 c_{2} d + 4 c_{2} z_{w} + 2 d^{2} - 4 d z_{w} - k_{2} x_{w}^{2} - k_{2} y_{w}^{2} + 2 x_{w}^{2} + 2 y_{w}^{2} + 2 z_{w}^{2}\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________________________________________\n", "⎜ ╱ ⎛ 2 2 \n", "⎜c₂⋅k₂⋅(c₂ - d + z_w) + ╲╱ k₂⋅(k₂ - 2)⋅⎝c₂ - 2⋅c₂⋅d + 2⋅c₂⋅z_w + d - 2⋅d⋅z_\n", "⎜─────────────────────────────────────────────────────────────────────────────\n", "⎜ ⎛ 2 2 2 2 \n", "⎝ k₂⋅⎝2⋅c₂ - 4⋅c₂⋅d + 4⋅c₂⋅z_w + 2⋅d - 4⋅d⋅z_w - k₂⋅x_w - k₂⋅y_w + 2⋅\n", "\n", "________________________ ⎞\n", " 2 2 2⎞ ⎟\n", "w + x_w + y_w + z_w ⎠ ⋅│c₂│ ⎟\n", "─────────────────────────────,⎟\n", " 2 2 2⎞ ⎟\n", "x_w + 2⋅y_w + 2⋅z_w ⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{1} k_{1} \\left(c_{1} - z_{w}\\right) + \\sqrt{k_{1} \\left(k_{1} - 2\\right) \\left(c_{1}^{2} - 2 c_{1} z_{w} + x_{w}^{2} + y_{w}^{2} + z_{w}^{2}\\right)} \\left\\lvert{c_{1}}\\right\\rvert}{k_{1} \\left(2 c_{1}^{2} - 4 c_{1} z_{w} - k_{1} x_{w}^{2} - k_{1} y_{w}^{2} + 2 x_{w}^{2} + 2 y_{w}^{2} + 2 z_{w}^{2}\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________________________________________ \n", "⎜ ╱ ⎛ 2 2 2 2⎞ \n", "⎜c₁⋅k₁⋅(c₁ - z_w) + ╲╱ k₁⋅(k₁ - 2)⋅⎝c₁ - 2⋅c₁⋅z_w + x_w + y_w + z_w ⎠ ⋅│c₁\n", "⎜─────────────────────────────────────────────────────────────────────────────\n", "⎜ ⎛ 2 2 2 2 2 2⎞ \n", "⎝ k₁⋅⎝2⋅c₁ - 4⋅c₁⋅z_w - k₁⋅x_w - k₁⋅y_w + 2⋅x_w + 2⋅y_w + 2⋅z_w ⎠ \n", "\n", " ⎞\n", " ⎟\n", "│ ⎟\n", "─,⎟\n", " ⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lambda2_sln = solve([mirror_2_intersection], lambda2)\n", "lambda2_sln_minus = simplify(lambda2_sln[0])\n", "display(lambda2_sln_minus)\n", "lambda2_sln_plus = simplify(lambda2_sln[1])\n", "display(lambda2_sln_plus)\n", "display(lambda1_sln_plus)" ] }, { "cell_type": "code", "execution_count": 307, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lambda2_func_minus = lambdify([c2, k2, xw, yw, zw, d], lambda2_sln_minus, modules=['numpy'])\n", "lambda2_func_plus = lambdify([c2, k2, xw, yw, zw, d], lambda2_sln_plus, modules=['numpy'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\lambda_2$, can be simplified to be\n", "\n", "\\begin{align}\n", " \\lambda_2=\\frac{c_2}{L_{v_2} \\sqrt{k_2\\cdot(k_2 - 2)} \n", " - k_2 \\left(d-c_2-z_w \\right)}\n", "\\end{align}\n", "\n", "where $L_{v_2} = ||{\\vec{f_2} - \\vec{p_w}}|| =|\\sqrt{x_w^2+y_w^2+(d-c_2-z_w)^2} |$, which is the distance between $P_w$\n", "and mirror 2's focus point $F_2$.\n" ] }, { "cell_type": "code", "execution_count": 308, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOEAAAARBAMAAADZD9ZQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2IlTvq5m7\nZkT3Gyx5AAACs0lEQVQ4EY1TS2gTURQ9k8x08mk+uBE/mDAKCgUpKP5wEXSlmwS1uhBxFsWNqIPd\nuemspKDQUnCnMQgWdRVBBItgdBEQN91YFyIOaBcuJBY/FUTjfZl3571pU+1dzDv3nHvPzZ28AVaE\n8WAF9S8i/7KJjY2+FWt2KtX69q9GFnwY3/uLa3XKTOn9hqdnjNczADpF4L5KdRR30pU4zv/U85Sr\nZ4yvMgCOE+z4KtdQ3EkTlsObOvHfiUNUnW7pLQrHnBQdIuvkKFNn6T1FEU0cOVeJSPCO9t1R8Uas\nRSXpKHL6UDfndIGwvQ8OTr/qzRp3wRDgiWN+omw9fSjbeOInb1AMs3/Q1EiUNXSwk9E+P6vYEKVr\nuGd5mbLISsNgqCbeQMY/hTthNe9o3EJWtBhfASXKGjrYyYDdYHbdLhHb8Iy2S3rmEvFG+xtDyuSO\nWbHKXlS9sFHuSGyyRszmSxUW2VDUaU5Hwz7tKf7jdGD/oeOy94uh5Thbpx2nKe9GHeMBFRxznP2O\nMyQ6WigRY28vNCFFYqNQTnmyiIf8hlO0ib0bT0gUUITcUX7Mk8WQlTsSO4kixirZKeJZDEtiTteI\nW2jY5Q0ei/hN3vReXeBIgKofQlDIiYU5gNg9gqLgiT5epDyzDlPcWBZ7FfRQTqkmMqgtDrQSAYuY\nhfGIbihg0uxkqwd7opyYbWBTBVZTNsiJCTd3wEKVfs1BuqwsyhrN6fDr+Z32luGMO+BJkcrPzAM5\n6hl06VzqwZ4oJ2LkHQlvuV5ONGZOXLmINrHvPSXKIs2pmZsOkK2lA4sN5LmAj8xEkCcKIV/LV8IC\nOTFMwqcSdZb+PjZNBqXiQFwzd0w8l4yCeXplHIcmrhdD/JkpdSpRcYSUU6LSwZuYhnS3+0UyGtRq\nbne7WrYMriIqJ3PmwmMffwH22LzfhWzN6wAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- c_{2} \\lambda_{2} + c_{2} + d \\lambda_{2} - \\lambda_{2} z_{w}$$" ], "text/plain": [ "-c₂⋅λ₂ + c₂ + d⋅λ₂ - λ₂⋅z_w" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOEAAAARBAMAAADZD9ZQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMol2IlTvq5m7\nZkT3Gyx5AAACs0lEQVQ4EY1TS2gTURQ9k8x08mk+uBE/mDAKCgUpKP5wEXSlmwS1uhBxFsWNqIPd\nuemspKDQUnCnMQgWdRVBBItgdBEQN91YFyIOaBcuJBY/FUTjfZl3571pU+1dzDv3nHvPzZ28AVaE\n8WAF9S8i/7KJjY2+FWt2KtX69q9GFnwY3/uLa3XKTOn9hqdnjNczADpF4L5KdRR30pU4zv/U85Sr\nZ4yvMgCOE+z4KtdQ3EkTlsObOvHfiUNUnW7pLQrHnBQdIuvkKFNn6T1FEU0cOVeJSPCO9t1R8Uas\nRSXpKHL6UDfndIGwvQ8OTr/qzRp3wRDgiWN+omw9fSjbeOInb1AMs3/Q1EiUNXSwk9E+P6vYEKVr\nuGd5mbLISsNgqCbeQMY/hTthNe9o3EJWtBhfASXKGjrYyYDdYHbdLhHb8Iy2S3rmEvFG+xtDyuSO\nWbHKXlS9sFHuSGyyRszmSxUW2VDUaU5Hwz7tKf7jdGD/oeOy94uh5Thbpx2nKe9GHeMBFRxznP2O\nMyQ6WigRY28vNCFFYqNQTnmyiIf8hlO0ib0bT0gUUITcUX7Mk8WQlTsSO4kixirZKeJZDEtiTteI\nW2jY5Q0ei/hN3vReXeBIgKofQlDIiYU5gNg9gqLgiT5epDyzDlPcWBZ7FfRQTqkmMqgtDrQSAYuY\nhfGIbihg0uxkqwd7opyYbWBTBVZTNsiJCTd3wEKVfs1BuqwsyhrN6fDr+Z32luGMO+BJkcrPzAM5\n6hl06VzqwZ4oJ2LkHQlvuV5ONGZOXLmINrHvPSXKIs2pmZsOkK2lA4sN5LmAj8xEkCcKIV/LV8IC\nOTFMwqcSdZb+PjZNBqXiQFwzd0w8l4yCeXplHIcmrhdD/JkpdSpRcYSUU6LSwZuYhnS3+0UyGtRq\nbne7WrYMriIqJ3PmwmMffwH22LzfhWzN6wAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- c_{2} \\lambda_{2} + c_{2} + d \\lambda_{2} - \\lambda_{2} z_{w}$$" ], "text/plain": [ "-c₂⋅λ₂ + c₂ + d⋅λ₂ - λ₂⋅z_w" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(expand(d - lambda2*zw - (d - c2)*(1 - lambda2)))\n", "display(expand(c2 + lambda2*(d - c2 - zw)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fielf of View Angles" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`, we obtain:\n", "\n", "\n", "\\begin{align}\n", "\\theta_{1,max} = -arctan\\left (\\dfrac{c_{1}\\cdot \\sqrt{k_{1}}-\\sqrt{-2+k_{1}}\\cdot \\sqrt{c_{1}^{2}+2\\cdot k_{1}\\cdot r_{sys}^{2}}}{2\\cdot \\sqrt{k_{1}}\\cdot r_{sys}}\\right )\n", "\\end{align}\n", "\n", "or by `Mathematica`:\n", "\n", "\\begin{align}\n", "\\frac{\\arctan \\left(\\sqrt{\\frac{(k_1-2) \\left(c_1^2+2 k_1 r^2_{sys} \\right)}{k_1}}-c_1\\right)}{2 r_{sys}}\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 309, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/latex": [ "$$- \\operatorname{atan}{\\left (\\frac{c_{1}}{2 r_{{sys}}} - \\frac{\\sqrt{k_{1} - 2}}{2 \\sqrt{k_{1}} r_{{sys}}} \\sqrt{c_{1}^{2} + 2 k_{1} r_{{sys}}^{2}} \\right )}$$" ], "text/plain": [ " ⎛ _____________________ ⎞\n", " ⎜ ╱ 2 2 ________⎟\n", " ⎜ c₁ ╲╱ c₁ + 2⋅k₁⋅r_{sys} ⋅╲╱ k₁ - 2 ⎟\n", "- ⎜───────── - ───────────────────────────────────⎟\n", " ⎜2⋅r_{sys} ____ ⎟\n", " atan⎝ 2⋅╲╱ k₁ ⋅r_{sys} ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "theta_1_max_eqn = -atan((c1* sqrt(k1)-sqrt(-2+k1)* sqrt(c1**2 + 2* k1 * r_sys**2))/(2*sqrt(k1) * r_sys))\n", "display(ratsimp(theta_1_max_eqn))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`, we obtain:\n", "\n", "$$\\theta_{1,min} = \\arctan\\left (\\dfrac{\\dfrac{-d}{2}+c_{1}}{r_{ref}}\\right )$$" ] }, { "cell_type": "code", "execution_count": 310, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAALwAAAAyBAMAAAAU3awwAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAZnaJVN0imavvMkQQ\nzbsZbzSbAAAEPElEQVRYCa1XTYgURxR+6/bOz3bPugqyQkCbWQh70mH2IuTgXCJ4cQfEqEjMXBJz\nEGZzEISQOBiSiHgQRAV1ZRTRQBJ3QLwIuo2X3SWE3UhCBFEGkiAJGDdRY6KL5lVVV3XV658S1jp0\nf9/3vnpdXV39uhogo72VEbOFvJbN0Ttuc2TFr2cFWWyDzUDjN05qSs+8RhKgcyZBzJYe6+FfdBLH\ns524lq24i3p8tqazGL4fU2xCb113OEd1RrFjDIVGE3lp3JC3GoyQPs07Wm6TaAL9sDpZM+SxhkFN\nsjYKvl8rzcNlMxxj7gl4GBiqPkAjwMjuSDkGhdqlzyOeiGYH4RMz0JMxvf3PlTfPbW8rngwOBEAm\n2/s72cnUfPTci10m2NKfBS8aEesAcFecko7FllLnKgxa0nuPwFnwVB8O1jdMrrHJQUWWI6xZ0z+G\ngflNqg8HTd/kGtOunG/BdNuWHm7Bqha/zSiJmNWIa+h3DY+u8K2TAzPDFw92tE4IB46aXGNnNcyh\nZe6pnfHef0LVpVHvKVU2U8HOe+RSmqZel67ZPe8dpB4r75dJhqjVMUo3jb4il1PgxKZi2bNXTJFp\n+xdg5bAPq58cqnHw7cnzIz7rkZdPJbO7LfgCnHdgP8B2CME9P8cTv570E+CcgqmAp+cAl/tfbEyF\njGpnG3MUPw7QP3ygwdIL8ACAP+7CAjctfxlrqHs/bcP2bptZYnEhiO47wbvXmGyz9AL8aaZnCZbQ\ndkKpDpPfBNvBF0CmFzV+CZl5122A1Xbs6/ZtqAgg06v3eUlXOA5Y1TaeC/ZBRQCZ/vWs+wnIfVm+\neQsKnzU4+Orl4S3/tXDEqlwsafQv0no7shqlGZS+59M/FCZAFgUiI42VtLhFKLjR3kjKvLKqkqYU\nCdIvLB3huRBAMe2rkVEXJ0iaNFqsQyGt/GUsv4dp+YheWkxPH776pAen6wN+unLkSjkprGt9i+6G\n76q+LgmMaz2thdvRyoMaVjnVpqsKRmCq0jvwo/7Zlq6mH5kIEtuo/toOuKZFqqMakXA3XOhruW1J\nAaRL28xEQYHyvOZ5ZGN3h9qQ57sQzBlrU7p+S3CHkiveK4dfRdmSvgIjGB1TDgakS37JjWBI2CcA\nhzaPBeKjlV+AV8VHvObpYBiNTs44fMC33kMrRhqGK2sDDmsDlqJYwfRTnV3wfTCDCC9G2yWAN+EY\nqm887+sYrlKLejVeHGek2QHYuw7BofIg3gvXNBNAbuvo/noOZzJ3s0tcUw3DaRLx63aViWwDdZqB\nAbwEaSX8+NXdOqoFn7iyfy1/VolOIXoGHk5VR2lxUGybLstvdxPtvOUW8PQr4NzPBUJJPDaJy/Lb\n7bA7Zs3t4mGm7APwqUKS2G6gqruy5wbY9oq0IcKTqXD1dJOjSmXPymg/HDZoCgld11PCkfxxBDlK\nqorEglS4vCMs8j8kwTL4YEzpgAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\operatorname{atan}{\\left (\\frac{c_{1}}{r_{{ref}}} - \\frac{d}{2 r_{{ref}}} \\right )}$$" ], "text/plain": [ " ⎛ c₁ d ⎞\n", "atan⎜─────── - ─────────⎟\n", " ⎝r_{ref} 2⋅r_{ref}⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "theta_1_min_eqn = atan((-d/2+c1)/(r_ref))\n", "display(cancel(theta_1_min_eqn))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`, we obtain:\n", "\n", "$\\theta_{2,min} = arctan\\left (\\dfrac{\\dfrac{-c_{2}}{2}+\\sqrt{\\dfrac{c_{2}^{2}\\cdot \\left (-2+k_{2}\\right )}{4\\cdot k_{2}}+r_{sys}^{2}\\cdot \\left (-1+\\dfrac{k_{2}}{2}\\right )}}{r_{sys}}\\right )$" ] }, { "cell_type": "code", "execution_count": 311, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nykg6P3kAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\operatorname{atan}{\\left (\\frac{1}{r_{{sys}}} \\left(- \\frac{c_{2}}{2} + \\sqrt{\\frac{c_{2}^{2} \\left(k_{2} - 2\\right)}{4 k_{2}} + r_{{sys}}^{2} \\left(\\frac{k_{2}}{2} - 1\\right)}\\right) \\right )}$$" ], "text/plain": [ " ⎛ __________________________________⎞\n", " ⎜ ╱ 2 ⎟\n", " ⎜ c₂ ╱ c₂ ⋅(k₂ - 2) 2 ⎛k₂ ⎞ ⎟\n", " ⎜- ── + ╱ ──────────── + r_{sys} ⋅⎜── - 1⎟ ⎟\n", " ⎜ 2 ╲╱ 4⋅k₂ ⎝2 ⎠ ⎟\n", " ⎜──────────────────────────────────────────────⎟\n", " ⎝ r_{sys} ⎠\n", "atan " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nQmCC\n", "text/latex": [ "$$- \\operatorname{atan}{\\left (\\frac{c_{2}}{2 r_{{sys}}} - \\frac{1}{2 r_{{sys}}} \\sqrt{c_{2}^{2} - \\frac{2 c_{2}^{2}}{k_{2}} + 2 k_{2} r_{{sys}}^{2} - 4 r_{{sys}}^{2}} \\right )}$$" ], "text/plain": [ " ⎛ __________________________________________⎞\n", " ⎜ ╱ 2 ⎟\n", " ⎜ ╱ 2 2⋅c₂ 2 2 ⎟\n", " ⎜ ╱ c₂ - ───── + 2⋅k₂⋅r_{sys} - 4⋅r_{sys} ⎟\n", " ⎜ c₂ ╲╱ k₂ ⎟\n", "- ⎜───────── - ───────────────────────────────────────────────⎟\n", " ⎝2⋅r_{sys} 2⋅r_{sys} ⎠\n", " atan " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "theta_2_min_eqn = atan((-c2/2 + sqrt((c2**2 *(-2+k2))/(4*k2)+r_sys**2 * (-1+k2/2)))/r_sys)\n", "display(trigsimp(theta_2_min_eqn))\n", "display(cancel(theta_2_min_eqn))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Back Projections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## BP Mirror 1:" ] }, { "cell_type": "code", "execution_count": 314, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nxxBw5gAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- \\frac{c_{1}}{2} + t_{1} - \\left\\lvert{\\sqrt{\\frac{c_{1}^{2} \\left(k_{1} - 2\\right)}{4 k_{1}} + \\left(\\frac{k_{1}}{2} - 1\\right) \\left(t_{1}^{2} x_{q1}^{2} + t_{1}^{2} y_{q1}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _________________________________________________│\n", " │ ╱ 2 │\n", " c₁ │ ╱ c₁ ⋅(k₁ - 2) ⎛k₁ ⎞ ⎛ 2 2 2 2⎞ │\n", "- ── + t₁ - │ ╱ ──────────── + ⎜── - 1⎟⋅⎝t₁ ⋅x_q1 + t₁ ⋅y_q1 ⎠ │\n", " 2 │╲╱ 4⋅k₁ ⎝2 ⎠ │" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{1} k_{1} - \\sqrt{k_{1} \\left(k_{1} - 2\\right)} \\sqrt{x_{q1}^{2} + y_{q1}^{2} + 1} \\left\\lvert{c_{1}}\\right\\rvert}{k_{1} \\left(- k_{1} x_{q1}^{2} - k_{1} y_{q1}^{2} + 2 x_{q1}^{2} + 2 y_{q1}^{2} + 2\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________ ⎞\n", "⎜ _____________ ╱ 2 2 ⎟\n", "⎜c₁⋅k₁ - ╲╱ k₁⋅(k₁ - 2) ⋅╲╱ x_q1 + y_q1 + 1 ⋅│c₁│ ⎟\n", "⎜───────────────────────────────────────────────────,⎟\n", "⎜ ⎛ 2 2 2 2 ⎞ ⎟\n", "⎝ k₁⋅⎝- k₁⋅x_q1 - k₁⋅y_q1 + 2⋅x_q1 + 2⋅y_q1 + 2⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nCurTu/TvAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{1} k_{1} + \\sqrt{k_{1} \\left(k_{1} - 2\\right)} \\sqrt{x_{q1}^{2} + y_{q1}^{2} + 1} \\left\\lvert{c_{1}}\\right\\rvert}{k_{1} \\left(- k_{1} x_{q1}^{2} - k_{1} y_{q1}^{2} + 2 x_{q1}^{2} + 2 y_{q1}^{2} + 2\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________ ⎞\n", "⎜ _____________ ╱ 2 2 ⎟\n", "⎜c₁⋅k₁ + ╲╱ k₁⋅(k₁ - 2) ⋅╲╱ x_q1 + y_q1 + 1 ⋅│c₁│ ⎟\n", "⎜───────────────────────────────────────────────────,⎟\n", "⎜ ⎛ 2 2 2 2 ⎞ ⎟\n", "⎝ k₁⋅⎝- k₁⋅x_q1 - k₁⋅y_q1 + 2⋅x_q1 + 2⋅y_q1 + 2⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "q1, xq1, yq1, zq1, t1, theta1, phi1 = symbols(\"q_1, x_q1, y_q1, z_q1, t_1, theta_1, phi_1\", real=True)\n", "x1_bp_line_eqn = t1*xq1\n", "y1_bp_line_eqn = t1*yq1\n", "z1_bp_line_eqn = t1\n", "mirror1_bp_intersection = mirror_1_eqn_top.subs({x1: x1_bp_line_eqn, y1: y1_bp_line_eqn, z1:z1_bp_line_eqn})\n", "display(mirror1_bp_intersection)\n", "t1_sln = solve([mirror1_bp_intersection], t1)\n", "t1_sln_minus = simplify(t1_sln[0])\n", "display(t1_sln_minus)\n", "t1_sln_plus = together(t1_sln[1])\n", "display(t1_sln_plus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simplifying the `+` solution of $t_1$, we get:\n", "\\begin{align}\n", " t_1=\\frac{c_1}{k_1-||{q_1}||\\sqrt{k_1\\cdot(k_1 - 2)}}\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## BP Mirror 2:" ] }, { "cell_type": "code", "execution_count": 318, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{c_{2}}{2} - t_{2} + \\left\\lvert{\\sqrt{\\frac{c_{2}^{2} \\left(k_{2} - 2\\right)}{4 k_{2}} + \\left(\\frac{k_{2}}{2} - 1\\right) \\left(t_{2}^{2} x_{q2}^{2} + t_{2}^{2} y_{q2}^{2}\\right)}}\\right\\rvert$$" ], "text/plain": [ " │ _________________________________________________│\n", " │ ╱ 2 │\n", "c₂ │ ╱ c₂ ⋅(k₂ - 2) ⎛k₂ ⎞ ⎛ 2 2 2 2⎞ │\n", "── - t₂ + │ ╱ ──────────── + ⎜── - 1⎟⋅⎝t₂ ⋅x_q2 + t₂ ⋅y_q2 ⎠ │\n", "2 │╲╱ 4⋅k₂ ⎝2 ⎠ │" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nQmCC\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{2} k_{2} - \\sqrt{k_{2} \\left(k_{2} - 2\\right)} \\sqrt{x_{q2}^{2} + y_{q2}^{2} + 1} \\left\\lvert{c_{2}}\\right\\rvert}{k_{2} \\left(- k_{2} x_{q2}^{2} - k_{2} y_{q2}^{2} + 2 x_{q2}^{2} + 2 y_{q2}^{2} + 2\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________ ⎞\n", "⎜ _____________ ╱ 2 2 ⎟\n", "⎜c₂⋅k₂ - ╲╱ k₂⋅(k₂ - 2) ⋅╲╱ x_q2 + y_q2 + 1 ⋅│c₂│ ⎟\n", "⎜───────────────────────────────────────────────────,⎟\n", "⎜ ⎛ 2 2 2 2 ⎞ ⎟\n", "⎝ k₂⋅⎝- k₂⋅x_q2 - k₂⋅y_q2 + 2⋅x_q2 + 2⋅y_q2 + 2⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$$\\begin{pmatrix}\\frac{c_{2} k_{2} + \\sqrt{k_{2} \\left(k_{2} - 2\\right)} \\sqrt{x_{q2}^{2} + y_{q2}^{2} + 1} \\left\\lvert{c_{2}}\\right\\rvert}{k_{2} \\left(- k_{2} x_{q2}^{2} - k_{2} y_{q2}^{2} + 2 x_{q2}^{2} + 2 y_{q2}^{2} + 2\\right)}\\end{pmatrix}$$" ], "text/plain": [ "⎛ ___________________ ⎞\n", "⎜ _____________ ╱ 2 2 ⎟\n", "⎜c₂⋅k₂ + ╲╱ k₂⋅(k₂ - 2) ⋅╲╱ x_q2 + y_q2 + 1 ⋅│c₂│ ⎟\n", "⎜───────────────────────────────────────────────────,⎟\n", "⎜ ⎛ 2 2 2 2 ⎞ ⎟\n", "⎝ k₂⋅⎝- k₂⋅x_q2 - k₂⋅y_q2 + 2⋅x_q2 + 2⋅y_q2 + 2⎠ ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "q2, xq2, yq2, zq2, t2, theta2, phi2 = symbols(\"q_2, x_q2, y_q2, z_q2, t_2, theta_2, phi_2\", real=True)\n", "x2_bp_line_eqn = t2*xq2\n", "y2_bp_line_eqn = t2*yq2\n", "z2_bp_line_eqn = d-t2\n", "mirror2_bp_intersection = mirror_2_eqn_bottom.subs({x2: x2_bp_line_eqn, y2: y2_bp_line_eqn, z2:z2_bp_line_eqn})\n", "display(mirror2_bp_intersection)\n", "t2_sln = solve([mirror2_bp_intersection], t2)\n", "t2_sln_minus = simplify(t2_sln[0])\n", "display(t2_sln_minus)\n", "t2_sln_plus = together(t2_sln[1])\n", "display(t2_sln_plus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Test and Plot Forward Projections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Horizontal Depth from Triangulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From `Geometry Expressions`:\n", "\n", "\\begin{align}\n", "D=\\left |\\dfrac{-\\left (-d+c_{1}+c_{2}\\right )\\cdot cos\\left (\\theta_{1}\\right )\\cdot cos\\left (\\theta_{2}\\right )}{sin\\left (\\theta_{2}\\right )\\cdot cos\\left (\\theta_{1}\\right )+sin\\left (\\theta_{1}\\right )\\cdot cos\\left (\\theta_{2}\\right )}\\right |\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAAAyBAMAAAA3hv3lAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMmaru0SZdiLv\nVImG1h9AAAAEEUlEQVRYCe1WTYhTVxg9mck4qXGSQYogiD/RhQv/wJ1DNShSLVMyuHM1qZYU3Ew2\nooyCAddlpiAULdRQKMVZ2CwU6crR4h8iDrgQxGJAKm3FP8QwUnQ833dz37vv5b03ESpdtB/k3u87\n99zz7rv38nKAfzN2+g/vK/q5m8VT+sZala8Ou1ybZ6vMpk6Y8kuLBvokSp7TTxcDdFP0DAL9M8va\nRQQBSKKU6sDEZMS0s8ROIl/ToYVN7UJNEuXnBjBaD02Q8iaQfoH8iA6lprULNUmUo0DqV75yODKb\nuA1llIwu1ofHWSdSWsCOL2TS0qdPkPrrbA2f3fuBZW4SuFjDaE3GgD+l6YIiNIl0a+qnTyTJ3sJw\nY0cD46kqeln3c6HPKpXbgzII7OGvC4pypVn4N7CszKRnJR4UtwKlXZeQY907AxSAl8CnrHAniZL7\n9ps2Raga/dPUfsN0Bd87zSTf3DbeYL2oBrxF+hV272eFEn+xlMfY16YIVSNfpu5bphN1YGCWutXl\nG1+zpm7qDT56bpaqurGUIZS4FHm0F3LeCyjnL+a7hh4W9yE1y9W3dY8nUa7LCUMoXsj1LVVZcn8x\nc4Pr/rqJBXyYnNssHnJEtlbPLZ6CB4OGIlSNdbyG1wgiewW5xnARGwYuob/Be1YGDmR5843uyUQK\ntnBYKDb2zVUqh2a0WnLqMbLfP6plfv/xDwJy6Zee4QOM7lrhxFLkskMpQkuOITss+5CdtpXbe5S9\nsRSXbnLhaohurm7yYGspmWamGEMJTpBKNlnjPtvF7TzYWcr23+4OxlCCE6TSjzb7X7YdAI50jjuU\n23NzcZSIeed9rM+u3Yc064ISmvHfKBdvlljzwV42P/ePxgdb5//C77ED6ZH5yHF2sHPecN3HLkhq\njZ8Pu2i0HQxytSo1fXAVU8/4+bCL9gTg7gq1ep7xkzkp+/XxUOV0J+exFlHFN34CD9TNoI9G20HD\nCrTnil4pf9uO8WNldR10vUePT+j3ssfK6XUnpvghN06PtmC05s2wug6qdtAjRCbq97iUnnFclI08\nyJ8xfmrQWFldRY0nEzs4T2TE71GXjk3NtLhMNX7GoLGyuooaT6aeZR5h8XuiuxL5OqnX+VPjZwwE\nK6uraIQnIyUqxO+JbtXTdY1frlBYfblQmOR1UztoPFnA60WJ8v9X/J6jy31wjR8ntdfbRtWTyaWZ\nJwbE7zm6cm6O8WNl98Gg6sm6ODf1e9wEuw+PqOQYP0fXoOrJXK9HRlSI30uPtT4ea31+7CoJ8oqO\n8WNl12tQNVFro5SSsV77Nei4DzpPPVm0HUzW7ePRmxCDJpEZMb226smi7aDDikqtJ1OD1kFQTxZt\nBzu4QUC/60EoXNlHh/HEOuu+diQzbAffAZ8Ao/EJ4ZPLAAAAAElFTkSuQmCC\n", "text/latex": [ "$$- \\frac{B \\cos{\\left (\\theta_{1} \\right )} \\cos{\\left (\\theta_{2} \\right )}}{\\sin{\\left (\\theta_{1} + \\theta_{2} \\right )}}$$" ], "text/plain": [ "-B⋅cos(θ₁)⋅cos(θ₂) \n", "───────────────────\n", " sin(θ₁ + θ₂) " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJ0AAAAyBAMAAAC0QsTeAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAZqu7RJkydiLvEN1U\nic38Af7KAAAEEElEQVRIDe1WS4gcVRQ9Mz150139GwQ1G3FsP4O6SEwQNAYpN0KQwCD4ARE1ou6c\nRgjjwjAlIeCsDOInOxtEcBYyg6sogg0uJGiwEYOCJDYENyG0Y09njNHQOe/We/Vqqqu6BhRXeYt6\n59573qn3qc8B/semZtzNbnIwjlIoNwwbjb1+nGTxUYLpw89LOBl2gmOXNMoGsGMzxongBaL93vEw\n7kbpOEihqD+BqUtxksHTHd5oHoMwPJLCQBpl+jIwQc2RVgqAhRb+CAsrI3Um0igFLmjlixT2Y8zt\ngTJ6tfY2KfVZqM9aJHvPnm3j08Ufod5Y7DI+AxQHmDDrrc5vj4KFucWH2uRiua1OqJMoND8C1hjf\nB1T7jbuv6Bq3pMvLNihYCuC9o0f0UNksd6A2D7TQYfwlUOuivga1m1FF3yKTcub+lqHgQfKW2lyu\nPuMFgqvljdcJ8S5Q72BhRj2updT6GEo1mOyGFKBP8lKHz4w+4+99YMM7N5wnpt5qG8+Z+2q9TEo5\nUHxKNCU8v12UieZ36a3wELjeVR9Xjd7U2hhKyefJQVOgHz/FV0RvDiqleUwNTgO3MeZ51P0qObJ1\nch6ZFFR4bEKpHQcO7NN6yzP4Wb2PWudUCw8w/gGYbC4HRo9vyhgKyk15mTD5e79x+35SuZo7jwQ4\ndvYOHLz5Fp8xn2fvqacJZH41ncqk6IcVQmGf0cqBKYjechorokzI7NMoLiccHYreT67gUEQ5iEeB\nVIojyybqsMIt9rqxgoN6n9nUxe/2ZVFChr7qjyVb8Zl+E4VAcPJiKKXhcD2L4oYUZxze6WAcbYMS\np1/HeTsw/E/bet7trtf/zQ68kDs4wya5ceoDh4u7iRefdAmHcmySIyr+L2yrtYBCe8WG8T7HJsWp\nDmsL9AT/IS7ziYE5NskN2IJO8MN2BfXYV+YbU8+xSTGV4stRoH9/hVn+0KMMrF6OTTIDtA862ser\n773yWpMp7YDe9nGrP6KXtEmOsAWJD9oDnG8WL7NQ4MR+bTQ+bOFFSzPzC22SeBb559pyohcfRD06\nGm36ym35x/+Nl+61RKNX0zYp9Czyr7LlRC8+iHoPA9rLlHx6I/Ej31qi0atrmxTzLLac6MUHUW9v\npOf9gx3rQKh3rtf7vNf7jYPEJoWeRTxQQseG4oOcHtfrDbRlM3qkmfmtik0SzyIeyAok+tPaBzk9\nfR4D/ELSyHrFJolnGXce4oO4WLPe6iwwV+RDPaIX2iTxLGKTEvOyofZBh4b3HBre9fVf1NJL+fhw\nwGpyfqFNErOR44GstPQnbZTUC/PiWVJtkh2X6G+08SkLHrGAvXiWXA8UGxAZkmNfzcXTBotn8bop\nlayUfE+zimG+EIyvb62+uTVMiXYmctcAjU+tYtwdIxcAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\frac{B \\cos{\\left (\\theta_{1} \\right )} \\cos{\\left (\\theta_{2} \\right )}}{\\sin{\\left (\\theta_{1} + \\theta_{2} \\right )}}$$" ], "text/plain": [ "B⋅cos(θ₁)⋅cos(θ₂)\n", "─────────────────\n", " sin(θ₁ + θ₂) " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "False" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theta1, theta2 = symbols(\"theta_1, theta_2\", real=True)\n", "D_eqn = simplify(-B*cos(theta1)*cos(theta2)/(sin(theta2)*cos(theta1)+sin(theta1)*cos(theta2)))\n", "display(D_eqn)\n", "D_eqn_2 = B*sin(pi/2-theta1)*sin(pi/2-theta2)/sin(pi-theta1-theta2)\n", "display(D_eqn_2)\n", "D_eqn == D_eqn_2" ] } ], "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.1" } }, "nbformat": 4, "nbformat_minor": 0 }