This function allows you to calculate linear transformations of coordinates
in a long_grid object. You can either pass in a transformation matrix or a
trans object as produced by `ggforce::linear_trans(...)`

. The latter makes it
easy to stack multiple transformations into one, but require the ggforce
package.

trans_affine(x, y, ...) rotate(angle = 0) stretch(x0 = 0, y0 = 0) shear(x0 = 0, y0 = 0) translate(x0 = 0, y0 = 0) reflect(x0 = 0, y0 = 0)

x, y | The coordinates to transform |
---|---|

... | A sequence of transformations |

angle | An angle in radians |

x0 | the transformation magnitude in the x-direction |

y0 | the transformation magnitude in the x-direction |

The following transformation matrix constructors are supplied, but you can
also provide your own 3x3 matrices to `translate()`

`rotate()`

: Rotate coordinates by`angle`

(in radians) around the center counter-clockwise.`stretch()`

: Stretches the x and/or y dimension by multiplying it with`x0`

/`y0`

.`shear()`

: Shears the x and/or y dimension by`x0`

/`y0`

.`translate()`

: Moves coordinates by`x0`

/`y0`

.`reflect()`

: Reflects coordinates through the line that goes through`0, 0`

and`x0, y0`

.

grid <- long_grid(seq(1, 10, length.out = 1000), seq(1, 10, length.out = 1000)) grid$trans <- trans_affine(grid$x, grid$y, rotate(pi/3), shear(-2), rotate(-pi/3)) grid$chess <- gen_checkerboard(grid$trans$x, grid$trans$y) plot(grid, chess)