p <- as_coord2d(x = sample(1:10, 3), y = sample(1:10, 3))
# {affiner} affine transformation matrices are post-multiplied
# and therefore should **not** go in reverse order
mat <- transform2d(diag(3)) %*%
reflect2d(as_coord2d(-1, 1)) %*%
rotate2d(90, "degrees") %*%
scale2d(1, 2) %*%
shear2d(0.5, 0.5) %*%
translate2d(x = -1, y = -1)
p1 <- p$
clone()$
transform(mat)
# The equivalent result appyling affine transformations via method chaining
p2 <- p$
clone()$
transform(diag(3L))$
reflect(as_coord2d(-1, 1))$
rotate(90, "degrees")$
scale(1, 2)$
shear(0.5, 0.5)$
translate(x = -1, y = -1)
all.equal(p1, p2)
Run the code above in your browser using DataLab