2
$\begingroup$

I need to construct a homography out of a 3x3 rotation matrix. I am fundamentally misunderstanding some part of how homographies are constructed. I have been assuming that a homography is constructed as follows.

hom(0,2) = x translation hom(1,2) = y translation hom(2,2) = scale, I can divide the entire matrix by this to normalize 

The first two columns I assumed were the first two columns of a 3x3 rotation matrix. This essentially amounts to taking a 3x4 transform and throwing away column(2). I have discovered however that this is not true. The test case showing me the error of my ways was trying to make a homography which rotates points some small angle around the y axis.

//rotate by .0175 rad about y axis rot_mat = (1,0,.0174,            0,1,0,       -.0174,0,1); //my conversion method to make this a homography gives  homography = (1,0,0,               0,1,0,          -.0174,0,1); 

The above homography does not work at all. Take for example a point x,y,1 where x > 58. The result will be x,y,some_negative_number. When I convert from homogeneous coordinates back to cartesian my x and y values will both flip signs.

How do I construct a homography that rotates 2D homogeneous points by some angle around the x and y axis?

1 Answers 1

1

In the projective plane $\mathbb{RP}^2$ there is no notion of rotation about the $x$- or $y$-axis (nor of any other line in the plane).

Though homographies in $\mathbb{RP}^2$ are represented by $3\times 3$-matrices, they are not to be confused with the linear transformations $\mathbb{R}^3\rightarrow\mathbb{R}^3$. The latter are also represented by $3\times 3$-matrices, and can indeed describe the rotations you ask for.