#796 – WPF Transforms Use Homogeneous Coordinates
April 11, 2013 1 Comment
We saw that we can perform scale and rotation transforms on points in 2D by multiplying a 2 x 2 transformation by a 2 x 1 matrix representing a point. A translation transform, however, could not be accomplished using a 2 x 2 matrix. Instead, we multiply a 3 x 3 matrix by a 3 x 1 matrix that represents the 2D point.
In WPF, all 2D transforms are accomplished using a 3 x 3 transformation matrix and a 3 x 1 point matrix. The 3 x 1 matrix contains the x and y components of the point in the first two rows and a value of 1 as the third row. This is done so that we can easily combine scale, rotate and translation transforms, since they all use matrices of the same dimensions.
In representing a 2D point using a 3 x 1 matrix, WPF is making us of homogeneous coordinates, which involves adding a third dimension, represented by the third row of the point matrix.