3
$\begingroup$

In most vector graphic software libraries I can use (3x3) matrices to transform 2D geometry (e.g. scale, rotate, skew). How does a matrix need to look like to transform a 2D rectangle to a symmetrical trapezoid (or equilateral triangle if parameters are taken to the extreme)? What parts of the matrix define which parameters?

2 Answers 2

2

If you are looking for a transformation determined by multiplication with a 2x2 matrix, then I'm afraid this cannot be done. Such a transformation is linear, so maps a vector to the same vector irrespective of its starting points. In other words, if $A,B,C,D$ are points on the plane such that $\vec{AB}=\vec{CD}$, and $A',B',C',D'$ are their respective images under this transformation, then we also have $\vec{A'B'}=\vec{C'D'}$.

So a linear transformation will map any parallelogram to another parallelogram, because the opposite sides of a parallelogram form the same vector. As that does not hold for a trapezoid, a linear transformation cannot turn a rectangle (= special case of a parallelogram) into such a trapezoid that is not also a parallelogram.

  • 1
    A 3D-rectangle OTOH will often look like a trapezoid, when it is projected to the plane of the monitor. That is because its coordinates will be divided by the distance (IIRC often the $z$-coordinate gets that role), because in the projection a point is moved along a line of sight starting from the origin.2012-07-10
  • 3
    You can use a *projective transformation*. I would go to homogeneous coordinates, and use a suitable $3\times 3$ matrix. With the right matrix, one can transform any quadrilateral into any other quadrilateral. This is a relatively standard computer vision problem, and there must be modern implementations.2012-07-10
  • 0
    @André: I suspected that much. Your explanation stirs a memory. But won't projective transformations preserve convexity?2012-07-10
  • 0
    I should have said *complete* quadrilateral (or dually complete quadrangle). So no three points of the configuration on a line, no three lines on a point. Apart from that there is no restriction.2012-07-10
  • 0
    @AndréNicolas I suppose a *perspective transformation* can only be done with a 4x4 matrix, not a 3x3 matrix?2012-07-10
  • 1
    I think that $3\times 3$ is fine.2012-07-11
1

There is a kind of transformation that is not linear but it is simple and fits the job. It allows you to transform the unit square into an arbitrary quadrilateral.

$$\pmatrix{x'\\y'} = \pmatrix{u_x&v_x&w_x\\u_y&v_y&w_y}\pmatrix{x\\y\\xy}$$

$$x'=u_xx+v_xy+w_xxy\\ y'=u_yx+v_yy+w_yxy$$

It transforms the unit square in a way controlled by the vectors $u=(u_x,u_y), v=(v_x,v_y), w=(w_x,w_y)$ as follows:

Geometric interpretation of u, v, w

Note however that it's not a perspective transformation.