How can you enlarge a shape about a point other than (0,0), using matrices?

5.5k Views Asked by At

If I want to enlarge a shape, $A$, by scale factor $k$ about $\left(0,0\right) $ I multiply each point (in the form $\begin{bmatrix}x\\y\end{bmatrix}$) by $kI$.

However, I can't work out a general form for having the centre of enlargement at any other point. I managed to work out that $$k\begin{bmatrix}-1 & 2\\2 & -1\end{bmatrix}$$ is having the centre at $\left(1,1\right) $ but I haven't managed to get further than that.

Is there any general form for this? If so, how is it calculated?

3

There are 3 best solutions below

0
On

HINT

  1. Let's suppose you want to do this about the point $(a,b)$.
  2. Subtract $(a,b)$ from every point.
  3. Rescale by $k$.
  4. Add $(a,b)$ back.

So you map $(x,y)$ to $$ \begin{pmatrix} k(x-a)+a \\ k(y-b)+b \end{pmatrix} = \begin{pmatrix} kx+ (1-k)a \\ ky + (1-k)b \end{pmatrix} $$

0
On

I would translate to the origin; then scale; and then translate back. Say I wanted to scale by a factor of $k$ about point $P$. For any vector (point) $\vec{v}$ to be scaled, I would do $k(\vec{v}-P)+P$.

1
On

If your centre is not $(0,0)$, then $(0,0)$ will not be fixed by the homothety. As a consequence it is not a linear transformation, and it cannot be represented by a matrix multiplication alone; what you need is an affine transformation, given by an equation of the form $$\begin{bmatrix}x\\ y\end{bmatrix} \mapsto A\cdot \begin{bmatrix}x\\ y\end{bmatrix}+\begin{bmatrix}a\\ b \end{bmatrix}$$ where $A\in \mathbb{R}^{2\times 2}$ and $a,b\in\mathbb{R}$.

In your case, an homothety of centre $(x_0,y_0)$ can be obtained by translating the centre at the origin, scaling at the origin and translating the center back to its original place. Thus a point $(x,y)$ is sent to $(x-x_0,y-y_0)$, then scaled by $k$, which gives you $(k(x-x_0),k(y-y_0))$, which is then sent to $(k(x-x_0)+x_0,k(y-y_0)+y_0)$. Thus the transformation is given by $$\begin{bmatrix}x\\ y\end{bmatrix} \mapsto kI\cdot \begin{bmatrix}x\\ y\end{bmatrix}+\begin{bmatrix}(1-k)x_0\\ (1-k)y_0 \end{bmatrix}.$$