{ "cells": [ { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "*********************************************\n", "Projective Geometry and Transformations of 3D\n", "*********************************************\n", "\n", "3.2.2 Lines\n", "===========\n", "\n", "(3.13) can be understood from (3.4). By applying (3.13) to itself i.e.\n", ":math:`(\\mathcal{L} \\mid \\mathcal{L})`, one arrives at (3.12). (3.12) can also\n", "be confirmed by evaluating the determinant directly. (3.14) can be derived from\n", ":math:`\\mathbf{X} = \\mathrm{L} \\boldsymbol{\\pi}` via applying (3.2) twice.\n", "\n", ":cite:`kurser04` covers some useful properties of\n", ":math:`\\text{Pl}\\mathrm{\\ddot{u}}\\text{cker}` line coordinates as a\n", "matrix-vector product that the book left out.\n", "\n", "Define\n", "\n", ".. math::\n", "\n", " \\mathcal{L}(\\mathrm{L}) =\n", " \\begin{bmatrix}\n", " l_{12}\\\\ l_{13}\\\\ l_{14}\\\\ l_{23}\\\\ l_{42}\\\\ l_{34}\n", " \\end{bmatrix}\n", " \\quad \\iff \\quad\n", " \\mathrm{L}(\\mathcal{L}) =\n", " \\begin{bmatrix}\n", " 0 & l_{12} & l_{13} & l_{14}\\\\\n", " -l_{12} & 0 & l_{23} & -l_{42}\\\\\n", " -l_{13} & -l_{23} & 0 & l_{34}\\\\\n", " -l_{14} & l_{42} & -l_{34} & 0\n", " \\end{bmatrix}.\n", "\n", "Notice that (3.10) is equivalent to\n", "\n", ".. math::\n", "\n", " \\mathcal{L}^* =\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L}) =\n", " \\begin{bmatrix}\n", " 0 & 0 & 0 & 0 & 0 & 1\\\\\n", " 0 & 0 & 0 & 0 & 1 & 0\\\\\n", " 0 & 0 & 0 & 1 & 0 & 0\\\\\n", " 0 & 0 & 1 & 0 & 0 & 0\\\\\n", " 0 & 1 & 0 & 0 & 0 & 0\\\\\n", " 1 & 0 & 0 & 0 & 0 & 0\\\\\n", " \\end{bmatrix} \\mathcal{L}(\\mathrm{L})\n", " \\quad \\iff \\quad\n", " \\mathcal{L} =\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L}^*).\n", "\n", "The constraint (3.12) translates to\n", "\n", ".. math::\n", "\n", " \\mathcal{L}^\\top\n", " \\begin{bmatrix}\n", " 0 & 0 & 0 & 0 & 0 & 0\\\\\n", " 0 & 0 & 0 & 0 & 0 & 0\\\\\n", " 0 & 0 & 0 & 0 & 0 & 0\\\\\n", " 0 & 0 & 1 & 0 & 0 & 0\\\\\n", " 0 & 1 & 0 & 0 & 0 & 0\\\\\n", " 1 & 0 & 0 & 0 & 0 & 0\\\\\n", " \\end{bmatrix}\n", " \\mathcal{L} = 0.\n", "\n", "Given :math:`\\mathbf{X} \\in \\mathbb{R}^4`, define\n", "\n", ".. math::\n", "\n", " \\left[ \\mathbf{X} \\right]_{\\times} =\n", " \\begin{bmatrix}\n", " -x_1 & x_0 & 0 & 0\\\\\n", " -x_2 & 0 & x_0 & 0\\\\\n", " -x_3 & 0 & 0 & x_0\\\\\n", " 0 & -x_2 & x_1 & 0\\\\\n", " 0 & x_3 & 0 & -x_1\\\\\n", " 0 & 0 & -x_3 & x_2\\\\\n", " \\end{bmatrix}\n", " \\quad \\text{and} \\quad\n", " \\mathrm{D} \\left[ \\mathbf{X} \\right]_{\\times} =\n", " \\begin{bmatrix}\n", " 0 & 0 & -x_3 & x_2\\\\\n", " 0 & x_3 & 0 & -x_1\\\\\n", " 0 & -x_2 & x_1 & 0\\\\\n", " -x_3 & 0 & 0 & x_0\\\\\n", " -x_2 & 0 & x_0 & 0\\\\\n", " -x_1 & x_0 & 0 & 0\\\\\n", " \\end{bmatrix}.\n", "\n", "Observe that (3.8) and (3.9) can be rewritten respectively as\n", "\n", ".. math::\n", "\n", " \\mathcal{L} =\n", " \\mathcal{L}(\\mathrm{L}) =\n", " \\left[ \\mathbf{A} \\right]_{\\times} \\mathbf{B} =\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L}^*) =\n", " \\mathrm{D} \\left[ \\mathbf{P} \\right]_{\\times} \\mathbf{Q}\n", "\n", "and\n", "\n", ".. math::\n", "\n", " \\mathcal{L}^* =\n", " \\mathcal{L}(\\mathrm{L}^*) =\n", " \\left[ \\mathbf{P} \\right]_{\\times} \\mathbf{Q} =\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L}) =\n", " \\mathrm{D} \\left[ \\mathbf{A} \\right]_{\\times} \\mathbf{B}.\n", "\n", "A point-only expression of the plane defined by the join of a\n", "point :math:`\\mathbf{X}` and line :math:`\\mathrm{L}` is\n", "\n", ".. math::\n", "\n", " \\boldsymbol{\\pi} =\n", " \\mathrm{L}^* \\mathbf{X} =\n", " \\mathrm{L}(\\mathcal{L}^*) \\mathbf{X} =\n", " \\mathrm{L}\\left(\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L})\n", " \\right) \\mathbf{X} =\n", " \\mathrm{L}\\left(\n", " \\mathrm{D} \\left[ \\mathbf{A} \\right]_{\\times} \\mathbf{B}\n", " \\right) \\mathbf{X}.\n", "\n", "A plane-only expression of the point defined by the intersection of the line\n", ":math:`\\mathrm{L}` with the plane :math:`\\boldsymbol{\\pi}` is\n", "\n", ".. math::\n", "\n", " \\mathbf{X} =\n", " \\mathrm{L} \\boldsymbol{\\pi} =\n", " \\mathrm{L}(\\mathcal{L}) \\boldsymbol{\\pi} =\n", " \\mathrm{L}\\left(\n", " \\mathrm{D} \\mathcal{L}(\\mathrm{L}^*)\n", " \\right) \\boldsymbol{\\pi} =\n", " \\mathrm{L}\\left(\n", " \\mathrm{D} \\left[ \\mathbf{P} \\right]_{\\times} \\mathbf{Q}\n", " \\right) \\boldsymbol{\\pi}.\n", "\n", "Note that this particular definition of\n", ":math:`\\text{Pl}\\mathrm{\\ddot{u}}\\text{cker}` line coordinates reveals a\n", "connection to cross products in :math:`\\mathbb{R}^3`.\n", "\n", "3.2.4 Classification of Quadrics\n", "================================\n", "\n", ":cite:`yap21surf` covers some useful properties of quadric surfaces that the\n", "book left out.\n", "\n", "The zero set of a polynomial\n", ":math:`P(\\mathbf{X}) = P(X_1, \\ldots, X_n) \\in \\mathbb{Q}[X_1, \\ldots, X_n]` is\n", "a hypersurface in :math:`n`-dimensional affine space. When\n", ":math:`P(\\mathbf{X})` is homogeneous, it is called a form and defines a\n", "hypersurface in :math:`(n - 1)`-dimensional projective space. When\n", ":math:`\\text{deg}(P) = 2`, the polynomial is quadratic and the corresponding\n", "hypersurface is quadric.\n", "\n", "(3.15) can be written as a polynomial:\n", "\n", ".. math::\n", "\n", " 0 = \\mathbf{X}^\\top \\mathrm{Q} \\mathbf{X} =\n", " \\begin{bmatrix} X & Y & Z & 1 \\end{bmatrix}\n", " \\begin{bmatrix}\n", " a & f & h & p\\\\\n", " f & b & g & q\\\\\n", " h & g & c & r\\\\\n", " p & q & r & d\\\\\n", " \\end{bmatrix}\n", " \\begin{bmatrix} X\\\\ Y\\\\ Z\\\\ 1 \\end{bmatrix} =\n", " aX^2 + bY^2 + cZ^2 + 2fXY + 2gYZ + 2hZX + 2pX + 2qY + 2rZ + d =\n", " P(X, Y, Z).\n", "\n", "Let :math:`\\mathrm{Q}_u` denote the upper :math:`3 \\times 3` submatrix of\n", ":math:`\\mathrm{Q}`. The discriminant\n", ":math:`\\Delta \\mathrm{Q} = \\det \\mathrm{Q}` and subdiscriminant\n", ":math:`\\Delta \\mathrm{Q}_u = \\det \\mathrm{Q}_u` pair is an invariant that can be\n", "used to categorize the point quadrics. Another invariant is the number of\n", "positive and negative eigenvalues. Let :math:`\\sigma^+(\\mathrm{Q})` and\n", ":math:`\\sigma^-(\\mathrm{Q})` denote the number of positive and negative\n", "eigenvalues of :math:`\\mathrm{Q}`. The pair\n", "\n", ".. math::\n", "\n", " \\sigma(\\mathrm{Q}) =\n", " \\left( \\sigma^+(\\mathrm{Q}), \\sigma^-(\\mathrm{Q}) \\right)\n", "\n", "is called the inertia of :math:`\\mathrm{Q}`. Note that\n", ":math:`\\sigma^+(\\mathrm{Q}) + \\sigma^-(\\mathrm{Q})` is the rank of\n", ":math:`\\mathrm{Q}` while :math:`\\sigma^+(\\mathrm{Q}) - \\sigma^-(\\mathrm{Q})` is\n", "the signature of :math:`\\mathrm{Q}`." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "(i) :math:`\\text{Pl}\\mathrm{\\ddot{u}}\\text{cker Coordinates}`\n", "=============================================================\n", "\n", "(a)\n", "---\n", "\n", "The point of intersection of a line :math:`\\mathrm{L}` with a plane\n", ":math:`\\boldsymbol{\\pi}` that is defined by a point :math:`\\mathbf{X}` and a\n", "line :math:`\\mathrm{M}` is\n", "\n", ".. math::\n", "\n", " \\mathbf{Y} =\n", " \\mathrm{L} \\boldsymbol{\\pi} =\n", " \\mathrm{L} \\mathrm{M}^* \\mathbf{X}.\n", "\n", "(b)\n", "---\n", "\n", "Observe that\n", "\n", ".. math::\n", "\n", " \\boldsymbol{\\pi} &= \\mathrm{M}^* \\mathbf{X}\\\\\n", " &= \\left(\n", " \\mathbf{P} \\mathbf{Q}^\\top - \\mathbf{Q} \\mathbf{P}^\\top\n", " \\right) \\mathbf{X}\n", " \\qquad (3.9)\\\\\n", " &= \\mathbf{P} \\mathbf{Q}^\\top \\mathbf{X} -\n", " \\mathbf{Q} \\mathbf{P}^\\top \\mathbf{X}.\n", "\n", "By inspection and (3.2), :math:`\\mathrm{M}^* \\mathbf{X} = \\boldsymbol{0}` if and\n", "only if :math:`\\mathbf{X}` is on :math:`\\mathrm{M}`.\n", "\n", "Likewise, notice that\n", "\n", ".. math::\n", "\n", " \\mathbf{Y} &= \\mathrm{L} \\boldsymbol{\\pi}\\\\\n", " &= \\left(\n", " \\mathbf{A} \\mathbf{B}^\\top - \\mathbf{B} \\mathbf{A}^\\top\n", " \\right) \\boldsymbol{\\pi}\n", " \\qquad (3.8)\\\\\n", " &= \\mathbf{A} \\mathbf{B}^\\top \\boldsymbol{\\pi} -\n", " \\mathbf{B} \\mathbf{A}^\\top \\boldsymbol{\\pi}.\n", "\n", "By inspection and (3.2), :math:`\\mathrm{L} \\boldsymbol{\\pi} = \\boldsymbol{0}` if\n", "and only if :math:`\\mathrm{L}` is on :math:`\\boldsymbol{\\pi}`.\n", "\n", "(c)\n", "---\n", "\n", "Let :math:`\\mathbf{P}` and :math:`\\mathbf{Q}` denote two planes and\n", ":math:`\\mathrm{L}^*` their intersection (3.9). Recall that :math:`\\mathrm{L}`\n", "is on :math:`\\boldsymbol{\\pi}_\\infty` if and only if\n", "\n", ".. math::\n", "\n", " \\mathrm{L} \\boldsymbol{\\pi}_\\infty =\n", " \\mathrm{L}\\left(\n", " \\mathrm{D} \\left[ \\mathbf{P} \\right]_\\times \\mathbf{Q}\n", " \\right) \\boldsymbol{\\pi}_\\infty =\n", " \\begin{bmatrix}\n", " p_2 q_3 - p_3 q_2\\\\\n", " -p_1 q_3 + p_3 q_1\\\\\n", " p_1 q_2 - p_2 q_1\\\\\n", " 0\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " \\mathbf{n}_{\\mathbf{P}} \\times \\mathbf{n}_{\\mathbf{Q}}\\\\\n", " 0\n", " \\end{bmatrix} =\n", " \\boldsymbol{0}\n", "\n", "where :math:`\\mathbf{n}_\\cdot` corresponds to the plane normal of Euclidean\n", "geometry (3.2). By inspection, the foregoing only holds when the normals are\n", "parallel i.e. the planes are parallel.\n", "\n", "(d)\n", "---\n", "\n", "Note that the following proof also holds for (3.13) and (3.14) because of\n", "(3.10).\n", "\n", "Let :math:`\\mathbf{P}` and :math:`\\mathbf{Q}` denote two planes and\n", ":math:`\\mathrm{L}^*` their intersection (3.9) satisfies (3.12). Likewise,\n", "define another line :math:`\\hat{\\mathrm{L}}^*` as the intersection of planes\n", ":math:`\\hat{\\mathbf{P}}` and :math:`\\hat{\\mathbf{Q}}`. The points of\n", "intersection are\n", "\n", ".. math::\n", "\n", " \\mathbf{X} =\n", " \\mathrm{L} \\boldsymbol{\\pi}_\\infty =\n", " \\begin{bmatrix}\n", " \\mathbf{n}_{\\mathbf{P}} \\times \\mathbf{n}_{\\mathbf{Q}}\\\\ 0\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " l_{14}\\\\ -l_{42}\\\\ l_{34}\\\\ 0\n", " \\end{bmatrix}\n", " \\quad \\text{and} \\quad\n", " \\hat{\\mathbf{X}} =\n", " \\hat{\\mathrm{L}} \\boldsymbol{\\pi}_\\infty =\n", " \\begin{bmatrix}\n", " \\mathbf{n}_{\\hat{\\mathbf{P}}} \\times \\mathbf{n}_{\\hat{\\mathbf{Q}}}\\\\ 0\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " \\hat{l}_{14}\\\\ -\\hat{l}_{42}\\\\ \\hat{l}_{34}\\\\ 0\n", " \\end{bmatrix}\n", "\n", "where :math:`\\mathbf{n}_\\cdot` corresponds to the plane normal of Euclidean\n", "geometry (3.2). By inspection, the homogeneous coordinates :math:`\\mathbf{X}`\n", "and :math:`\\hat{\\mathbf{X}}` are equivalent only when the lines are parallel.\n", "Otherwise, result 3.5 states that the lines do not intersect because\n", ":math:`(\\mathrm{L} \\mid \\hat{\\mathrm{L}}) \\neq 0`." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "(ii) Projective Transformations\n", "===============================\n", "\n", "Since :math:`\\mathrm{Q}` is a real symmetric matrix, there exists an eigenvalue\n", "decomposition such that\n", ":math:`\\mathrm{Q} = \\mathrm{U} \\mathrm{D} \\mathrm{U}^\\top` where\n", ":math:`\\mathrm{U}` is a real orthogonal matrix and :math:`\\mathrm{D}` is a\n", "diagonal matrix whose entries are the eigenvalues of :math:`\\mathrm{Q}`.\n", "Likewise, :math:`\\mathbf{Q}_u = \\mathrm{U}' \\mathrm{D}' {\\mathrm{U}'}^\\top`.\n", "\n", "Define :math:`\\sigma = \\sigma(\\mathrm{Q})` and\n", ":math:`\\sigma_u = \\sigma(\\mathrm{Q}_u)`. The point quadrics of interest under a\n", "point transformation (3.16) :math:`\\mathrm{H} = \\mathrm{U}^\\top` and\n", ":math:`\\mathrm{H}_u = {\\mathrm{U}'}^\\top` are\n", "\n", "- ellipsoid :math:`\\left( \\sigma = (3, 1), \\sigma_u = (3, 0) \\right)`,\n", "- paraboloid :math:`\\left( \\sigma = (3, 1), \\sigma_u = (2, 0) \\right)`,\n", "- hyperboloid of two sheets\n", " :math:`\\left( \\sigma = (3, 1), \\sigma_u = (2, 1) \\right)`, and\n", "- hyperboloid of one sheets\n", " :math:`\\left( \\sigma = (2, 2), \\sigma_u = (2, 1) \\right)`.\n", "\n", "Observe that a projectivity (2.17) cannot map an ellipsoid to a hyperboloid of\n", "one sheet because\n", "\n", ".. math::\n", "\n", " \\det \\mathrm{Q}' =\n", " \\det(\\mathrm{H}^{-\\top} \\mathrm{Q} \\mathrm{H}^{-1}) =\n", " \\det(\\mathrm{H}^{-\\top}) \\det(\\mathrm{Q}) \\det(\\mathrm{H}^{-1}) =\n", " \\det(\\mathrm{U}) \\det(\\mathrm{D}) \\det(\\mathrm{U}^\\top)\n", " \\det(\\mathrm{H}^{-1})^2 =\n", " \\det(\\mathrm{D}) \\det(\\mathrm{H}^{-1})^2 < 0.\n", "\n", "By inspection, a projectivity can map an ellipsoid to a elliptic paraboloid or\n", "hyperboloid of two sheets because\n", "\n", ".. math::\n", "\n", " \\det \\mathrm{Q}'_u\n", " &= \\det(\\mathrm{H}^{-\\top} \\mathrm{Q} \\mathrm{H}^{-1})_u\\\\\n", " &= \\det\\left(\n", " \\begin{bmatrix}\n", " \\mathbf{A}^\\top & \\mathbf{v}\\\\\n", " \\mathbf{t}^\\top & \\upsilon\n", " \\end{bmatrix}^{-\\top}\n", " \\begin{bmatrix}\n", " \\mathrm{Q}_u & \\mathbf{q}\\\\\n", " \\mathbf{q}^\\top & q\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " \\mathbf{A} & \\mathbf{t}\\\\\n", " \\mathbf{v}^\\top & \\upsilon\n", " \\end{bmatrix}\n", " \\right)_u\\\\\n", " &= \\det\\left(\n", " \\mathbf{A}^\\top \\mathrm{Q}_u \\mathbf{A} +\n", " \\mathbf{A}^\\top \\mathbf{q} \\mathbf{v}^\\top +\n", " \\mathbf{v} \\mathbf{q}^\\top \\mathbf{A} +\n", " q \\mathbf{v} \\mathbf{v}^\\top\n", " \\right) \\in \\mathbb{R}." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. _hartley2004-ex-3.iii:\n", "\n", "(iii) Screw Decomposition\n", "=========================\n", "\n", "Let :math:`\\mathbf{I}` denote an identity matrix whose size is dependent on the\n", "surrounding context. Recall that the eigenvalues of a Euclidean transformation\n", ":math:`\\mathbf{A}` can be determined from the roots of the characteristic\n", "polynomial\n", "\n", ".. math::\n", "\n", " 0 =\n", " \\det\\left( \\mathbf{A} - \\lambda \\mathbf{I} \\right) =\n", " \\det\\left(\n", " \\begin{bmatrix}\n", " \\mathbf{R} & \\mathbf{t}\\\\ \\boldsymbol{0}^\\top & 1\n", " \\end{bmatrix} -\n", " \\lambda \\mathbf{I}\n", " \\right) =\n", " \\det\\left(\n", " \\begin{bmatrix}\n", " \\mathbf{I} & \\mathbf{t}\\\\ \\boldsymbol{0}^\\top & 1 - \\lambda\n", " \\end{bmatrix}\n", " \\right)\n", " \\det\\left(\n", " \\begin{bmatrix}\n", " \\mathbf{R} - \\lambda \\mathbf{I} & \\boldsymbol{0}\\\\\n", " \\boldsymbol{0}^\\top & 1\n", " \\end{bmatrix}\n", " \\right) =\n", " (1 - \\lambda) \\det\\left( \\mathbf{R} - \\lambda \\mathbf{I} \\right).\n", "\n", "Notice that the rotation matrix :math:`\\mathbf{R}` can be defined as\n", "\n", ".. math::\n", "\n", " \\mathbf{R} =\n", " \\begin{bmatrix}\n", " \\cos \\theta & -\\sin \\theta & 0\\\\\n", " \\sin \\theta & \\cos \\theta & 0\\\\\n", " 0 & 0 & 1\n", " \\end{bmatrix}\n", "\n", "without loss of generality because any rotation matrix :math:`\\mathbf{R}'` can\n", "be decomposed as\n", "\n", ".. math::\n", "\n", " \\mathbf{R}' = \\mathbf{P} \\mathbf{R} \\mathbf{P}^{-1}\n", "\n", "where :math:`\\mathbf{P}` denotes a change of basis according to Euler’s\n", "Displacement Theorem :cite:`haberph216`. This could also be justified through\n", "examining the trace\n", "\n", ".. math::\n", "\n", " \\text{tr}(\\mathbf{R}') =\n", " \\text{tr}\\left( \\mathbf{P} \\mathbf{R} \\mathbf{P}^{-1} \\right) =\n", " \\text{tr}\\left( \\mathbf{P}^{-1} \\mathbf{P} \\mathbf{R} \\right) =\n", " \\text{tr}\\left( \\mathbf{R} \\right) =\n", " \\sum_i \\lambda_i.\n", "\n", "Hence the remaining eigenvalues are the roots of\n", "\n", ".. math::\n", "\n", " \\det\\left( \\mathbf{R} - \\lambda \\mathbf{I} \\right) =\n", " \\left( 1 - \\lambda \\right)\n", " \\left[ (\\cos \\theta - \\lambda)^2 + \\sin^2 \\theta \\right] =\n", " \\left( 1 - \\lambda \\right)\n", " \\left[ \\lambda^2 - 2 \\lambda \\cos \\theta + 1 \\right].\n", "\n", "Therefore, the eigenvalues of :math:`\\mathbf{A}` are\n", ":math:`\\lambda \\in \\left\\{ 1, 1, e^{i \\theta}, e^{-i \\theta} \\right\\}`.\n", "\n", "Recall that the characteristic vectors (eigenvectors) of :math:`\\mathbf{A}` must\n", "satisfy the equation\n", "\n", ".. math::\n", "\n", " \\left( \\mathbf{A} - \\lambda \\mathbf{I} \\right)\n", " \\tilde{\\mathbf{v}} =\n", " \\boldsymbol{0}.\n", "\n", "Let :math:`\\mathbf{a}` denote the direction of the rotation axis\n", "(i.e. :math:`\\mathbf{R} \\mathbf{a} = \\mathbf{a}`), and decompose the translation\n", "vector into :math:`\\mathbf{t} = \\mathbf{t}_\\parallel + \\mathbf{t}_\\perp` where\n", ":math:`\\mathbf{t}_\\parallel = (\\mathbf{t} \\cdot \\mathbf{a}) \\mathbf{a}` and\n", ":math:`\\mathbf{t}_\\perp = \\mathbf{t} - \\mathbf{t}_\\parallel`.\n", "\n", ":math:`\\lambda_1 = \\lambda_2 = 1`\n", "---------------------------------\n", "\n", ".. math::\n", "\n", " \\boldsymbol{0}\n", " &= \\left( \\mathbf{A} - \\mathbf{I} \\right) \\tilde{\\mathbf{v}}\\\\\n", " &= \\begin{bmatrix}\n", " \\mathbf{R} - \\mathbf{I} & \\mathbf{t}\\\\\n", " \\boldsymbol{0}^\\top & 0\n", " \\end{bmatrix}\n", " \\begin{bmatrix} \\mathbf{v}\\\\ \\upsilon \\end{bmatrix}\\\\\n", " &= \\begin{bmatrix}\n", " \\mathbf{R} \\mathbf{v} - \\mathbf{v} + \\upsilon \\mathbf{t}\\\\\n", " 0\n", " \\end{bmatrix}\n", "\n", "Regardless of whether :math:`\\mathbf{t}` is orthogonal to :math:`\\mathbf{a}` or\n", "not,\n", ":math:`\\tilde{\\mathbf{v}}_1 = \\begin{bmatrix} \\mathbf{a}\\\\ 0 \\end{bmatrix}`\n", "is clearly an eigenvector of :math:`\\mathbf{A}`. Furthermore, one cannot\n", "evaluate\n", "\n", ".. math::\n", "\n", " \\mathbf{R} \\mathbf{v} - \\mathbf{v} + \\upsilon \\mathbf{t} &= 0\\\\\n", " \\upsilon \\mathbf{t} &= \\mathbf{v} - \\mathbf{R} \\mathbf{v}\\\\\n", " \\upsilon \\left(\n", " \\mathbf{t}_\\parallel + \\mathbf{t}_\\perp\n", " \\right) &= (\\mathbf{R} - \\mathbf{I}) \\mathbf{v}\n", "\n", "directly because :math:`\\mathbf{R} - \\mathbf{I}` is a singular matrix. This\n", "also applies to :math:`\\mathbf{R}'` because\n", "\n", ".. math::\n", "\n", " \\det(\\mathbf{R}' - \\mathbf{I})\n", " &= \\det(\\mathbf{I}' + \\mathbf{P} \\mathbf{R} \\mathbf{P}^{-1})\\\\\n", " &= \\det(\\mathbf{R}^\\top - \\mathbf{I}) \\det(\\mathbf{R}) \\det(\\mathbf{I}')\n", " & \\quad & \\text{matrix determinant lemma}\\\\\n", " &= \\det(\\mathbf{R} - \\mathbf{I}) \\det(\\mathbf{R}) \\det(\\mathbf{I}').\n", "\n", "When :math:`\\mathbf{a} \\cdot \\mathbf{t} = 0`, the resulting homogeneous system\n", "\n", ".. math::\n", "\n", " \\upsilon \\mathbf{t}_\\perp &= (\\mathbf{R}' - \\mathbf{I}) \\mathbf{v}\\\\\n", " \\boldsymbol{0}\n", " &= \\begin{bmatrix}\n", " \\mathbf{R}' - \\mathbf{I} & -\\mathbf{t}_\\perp\n", " \\end{bmatrix}\n", " \\begin{bmatrix} \\mathbf{v}\\\\ \\upsilon \\end{bmatrix}\n", "\n", "is underdetermined and has infinitely many solutions.\n", "\n", "When :math:`\\mathbf{a} \\cdot \\mathbf{t} \\neq 0`, there are not enough free\n", "variables to choose :math:`\\upsilon \\in \\mathbb{R} \\setminus 0` and still\n", "satisfy\n", "\n", ".. math::\n", "\n", " \\upsilon \\left(\n", " \\mathbf{t}^\\top \\mathbf{a} \\mathbf{a} + \\mathbf{t}_\\perp\n", " \\right) &= (\\mathbf{R}' - \\mathbf{I}) \\mathbf{v}\\\\\n", " \\upsilon \\mathbf{t}^\\top \\mathbf{a} \\mathbf{R}' \\mathbf{a} +\n", " \\upsilon \\mathbf{t}_\\perp\n", " &= \\mathbf{R}' \\mathbf{v} - \\mathbf{I} \\mathbf{v}\n", "\n", "because :math:`\\mathbf{t}_\\perp \\cdot \\mathbf{a} = 0`. Hence the only\n", "eigenvector available is\n", ":math:`\\tilde{\\mathbf{v}}_2 = \\begin{bmatrix} \\mathbf{a}\\\\ 0 \\end{bmatrix}`.\n", "\n", ":math:`\\lambda_3 = e^{i \\theta}, \\lambda_4 = e^{-i \\theta}`\n", "-----------------------------------------------------------\n", "\n", ".. math::\n", "\n", " \\boldsymbol{0}\n", " &= \\left( \\mathbf{A} - e^{\\pm i \\theta} \\mathbf{I} \\right)\n", " \\tilde{\\mathbf{v}}\\\\\n", " &= \\begin{bmatrix}\n", " \\mathbf{R} - e^{\\pm i \\theta} \\mathbf{I} & \\mathbf{t}\\\\\n", " \\boldsymbol{0}^\\top & 1 - e^{\\pm i \\theta}\n", " \\end{bmatrix}\n", " \\begin{bmatrix} \\mathbf{v}\\\\ \\upsilon \\end{bmatrix}\\\\\n", " &= \\begin{bmatrix}\n", " \\mathbf{R} \\mathbf{v} - e^{\\pm i \\theta} \\mathbf{v} +\n", " \\upsilon \\mathbf{t}\\\\\n", " \\left( 1 - e^{\\pm i \\theta} \\right) \\upsilon\n", " \\end{bmatrix}\n", "\n", "By inspection, the simplest pair of eigenvectors would have\n", ":math:`\\upsilon = 0`. Consequently, the corresponding eigenvectors\n", ":math:`\\tilde{\\mathbf{v}}_3 = \\begin{bmatrix} \\mathbf{v}_3\\\\ 0 \\end{bmatrix}`\n", "and\n", ":math:`\\tilde{\\mathbf{v}}_4 = \\begin{bmatrix} \\mathbf{v}_4\\\\ 0 \\end{bmatrix}`\n", "span a plane that is orthogonal to the axis of rotation :math:`\\mathbf{a}`.\n", "To see this, notice that\n", "\n", ".. math::\n", "\n", " \\left( \\lambda_3 \\mathbf{v}_3 \\right)^\\top \\mathbf{v}_4\n", " &= \\mathbf{v}_3^\\top \\mathbf{R}^\\top \\mathbf{v}_4\\\\\n", " &= \\mathbf{v}_3^\\top \\frac{\\mathbf{v}_4}{\\lambda_4}\n", " & \\quad & \\mathbf{v}_4 = \\lambda_4 \\mathbf{A}^\\top \\mathbf{v}_4\\\\\n", " (\\lambda_3 - \\lambda_4^{-1}) \\mathbf{v}_3^\\top \\mathbf{v}_4 &= 0.\n", "\n", "Since :math:`\\lambda_3 - \\lambda_4^{-1} \\neq 0`, the eigenvectors must be\n", "mutually orthogonal." ] }, { "cell_type": "raw", "metadata": { "collapsed": true, "raw_mimetype": "text/restructuredtext" }, "source": [ ".. rubric:: References\n", "\n", ".. bibliography:: chapter-03.bib" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 }