Rotate Planar Points by Angle
Rotate planar (xy) points by angle phi
(in radians).
rot2(xy, phi)
xy |
numeric 2-column matrix, or coercable to one. |
phi |
numeric scalar, the angle in radians (i.e., |
A two column matrix as xy
, containing the rotated points.
Martin Maechler, Oct.1994
## Rotate three points by 60 degrees : (xy0 <- rbind(c(1,0.5), c(1,1), c(0,1))) (Txy <- rot2(xy0, phi = 60 * pi/180)) plot(xy0, col = 2, type = "b", asp = 1, xlim=c(-1,1), ylim=c(0,1.5), main = "rot2(*, pi/3) : 2d rotation by 60°") points(Txy, col = 3, type = "b") O <- rep(0,2); P2 <- rbind(xy0[2,], Txy[2,]) arrows(O,O,P2[,1],P2[,2], col = "dark gray") xy0 <- .8*rbind(c(1,0), c(.5,.6), c(.7,1), c(1,1), c(.9,.8), c(1,0)) - 0.2 plot(xy0, col= 2, type="b", main= "rot2( <polygon>, pi/4 * 1:7)", asp=1, xlim=c(-1,1),ylim=c(-1,1), lwd= 2, axes = FALSE, xlab="", ylab="") abline(h=0, v=0, col="thistle"); text(1.05, -.05, "x"); text(-.05,1.05, "y") for(phi in pi/4 * 0:7) do.call("arrows",c(list(0,0),rot2(xy0[2,], phi), length=0.1, col="gray40")) for(phi in pi/4 * 1:7) polygon(rot2(xy0, phi = phi), col = 1+phi/(pi/4), border=2, type = "b")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.