File: cayley2rot.m

package info (click to toggle)
opengv 1.0%2B1git91f4b1-8
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 5,484 kB
  • sloc: cpp: 45,813; python: 152; makefile: 17; xml: 13; sh: 4
file content (20 lines) | stat: -rw-r--r-- 565 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function R = cayley2rot(v)

  cayley0 = v(1,1);
  cayley1 = v(2,1);
  cayley2 = v(3,1);
  
  R = zeros(3,3);
  scale = 1+cayley0^2+cayley1^2+cayley2^2;

  R(1,1) = 1+cayley0^2-cayley1^2-cayley2^2;
  R(1,2) = 2*(cayley0*cayley1-cayley2);
  R(1,3) = 2*(cayley0*cayley2+cayley1);
  R(2,1) = 2*(cayley0*cayley1+cayley2);
  R(2,2) = 1-cayley0^2+cayley1^2-cayley2^2;
  R(2,3) = 2*(cayley1*cayley2-cayley0);
  R(3,1) = 2*(cayley0*cayley2-cayley1);
  R(3,2) = 2*(cayley1*cayley2+cayley0);
  R(3,3) = 1-cayley0^2-cayley1^2+cayley2^2;

  R = (1/scale) * R;