{"id":485,"date":"2016-07-08T03:37:43","date_gmt":"2016-07-07T19:37:43","guid":{"rendered":"http:\/\/www.cgdev.net\/blog\/?p=485"},"modified":"2024-04-11T16:00:42","modified_gmt":"2024-04-11T08:00:42","slug":"rodrigues-rotation-formula","status":"publish","type":"post","link":"https:\/\/www.cgdev.net\/blog\/485.html","title":{"rendered":"Rodrigues&#8217; Rotation Formula"},"content":{"rendered":"<p>We can compute a rotation matrix \\( R \\in SO(3) \\) from an angle \\(\\theta\\) and axis \\(l\\) (unit vector)<\/p>\n<p>\\[<br \/>\nR = e^{\\theta C} = I + \\sin(\\theta)C + (1-\\cos \\theta)C^2<br \/>\n\\]<\/p>\n<p>where \\(C\\) is the antisymmetric matrix:<\/p>\n<p>\\[<br \/>\nC = \\begin{bmatrix}<br \/>\n0 &amp; -l_z &amp; l_y \\\\<br \/>\nl_z &amp; 0 &amp; -l_x \\\\<br \/>\n-l_y &amp; l_x &amp; 0<br \/>\n\\end{bmatrix}<br \/>\n\\]<\/p>\n<p>Our proof will use the Taylor&#8217;s formula to define the exponential of a matrix \\(M\\)<\/p>\n<p>\\[<br \/>\ne^M = \\sum_{k=0}^{\\infty}\\frac{M^k}{k!}<br \/>\n\\]<\/p>\n<p>where \\(M^0\\) is defined to be the identity matrix \\(I\\). Because \\(C^3 = -C\\) and the Taylor expansions:<\/p>\n<p>\\begin{align}<br \/>\n\\sin \\theta &amp;= \\theta &#8211; \\frac{\\theta^3}{3!} + \\frac{\\theta^5}{5!} &#8211; \\cdots + \\frac{(-1)^n}{(2n+1)!}\\theta^{2n+1} + \\cdots \\\\<br \/>\n\\cos \\theta &amp;= 1 &#8211; \\frac{\\theta^2}{2!} + \\frac{\\theta^4}{4!} &#8211; \\cdots + \\frac{(-1)^n}{(2n)!}\\theta^{2n} + \\cdots<br \/>\n\\end{align}<\/p>\n<p>then we obtain<\/p>\n<p>\\begin{align}<br \/>\nR &amp;= e^{\\theta C}\\\\<br \/>\n&amp;= \\sum_{k=0}^{\\infty}\\frac{(\\theta C)^k}{k!} \\\\<br \/>\n&amp;= I + \\frac{1}{1!}\\theta C + \\frac{1}{2!}(\\theta C)^2 + \\frac{1}{3!}(\\theta C)^3 + \\frac{1}{4!}(\\theta C)^4 + \\frac{1}{5!}(\\theta C)^5 + \\frac{1}{6!}(\\theta C)^6 + \\cdots \\\\<br \/>\n&amp;= I + (\\theta &#8211; \\frac{\\theta^3}{3!} + \\frac{\\theta^5}{5!} &#8211; \\cdots)C + (\\frac{\\theta^2}{2!} &#8211; \\frac{\\theta^4}{4!} + \\frac{\\theta^6}{6!} &#8211; \\cdots)C^2 \\\\<br \/>\n&amp;= I + \\sin\\theta C + (1-\\cos \\theta)C^2<br \/>\n\\end{align}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We can compute a rotation matrix \\( R \\in SO(3) \\) from an angle \\(\\theta\\) and axis \\(l\\) (unit vector) \\[ R = e^{\\theta C} = I + \\sin(\\theta)C + (1-\\cos \\theta)C^2 \\] where \\(C\\) is the antisymmetric matrix: \\[ C = \\begin{bmatrix} 0 &amp; -l_z &amp; l_y \\\\ l_z &amp; 0 &amp; -l_x \\\\ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7],"tags":[],"class_list":["post-485","post","type-post","status-publish","format-standard","hentry","category-graphics","category-math"],"_links":{"self":[{"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/posts\/485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/comments?post=485"}],"version-history":[{"count":0,"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/posts\/485\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/media?parent=485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/categories?post=485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cgdev.net\/blog\/wp-json\/wp\/v2\/tags?post=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}