1\name{rot2} 2\encoding{latin1}% "^o" (degree) below 3\alias{rot2} 4\title{Rotate Planar Points by Angle} 5\description{ 6 Rotate planar (xy) points by angle \code{phi} (in radians). 7} 8\usage{ 9rot2(xy, phi) 10} 11\arguments{ 12 \item{xy}{numeric 2-column matrix, or coercable to one.} 13 \item{phi}{numeric scalar, the angle in radians (i.e., \code{phi=pi} 14 corresponds to 180 degrees) by which to rotate the points.} 15} 16\value{ 17 A two column matrix as \code{xy}, containing the rotated points. 18} 19\author{Martin Maechler, Oct.1994} 20\examples{ 21## Rotate three points by 60 degrees : 22(xy0 <- rbind(c(1,0.5), c(1,1), c(0,1))) 23(Txy <- rot2(xy0, phi = 60 * pi/180)) 24plot(xy0, col = 2, type = "b", asp = 1, 25 xlim=c(-1,1), ylim=c(0,1.5), main = "rot2(*, pi/3) : 2d rotation by 60�") 26points(Txy, col = 3, type = "b") 27O <- rep(0,2); P2 <- rbind(xy0[2,], Txy[2,]) 28arrows(O,O,P2[,1],P2[,2], col = "dark gray") 29 30xy0 <- .8*rbind(c(1,0), c(.5,.6), c(.7,1), c(1,1), c(.9,.8), c(1,0)) - 0.2 31plot(xy0, col= 2, type="b", main= "rot2( <polygon>, pi/4 * 1:7)", asp=1, 32 xlim=c(-1,1),ylim=c(-1,1), lwd= 2, axes = FALSE, xlab="", ylab="") 33abline(h=0, v=0, col="thistle"); text(1.05, -.05, "x"); text(-.05,1.05, "y") 34for(phi in pi/4 * 0:7) 35 do.call("arrows",c(list(0,0),rot2(xy0[2,], phi), length=0.1, col="gray40")) 36for(phi in pi/4 * 1:7) 37 polygon(rot2(xy0, phi = phi), col = 1+phi/(pi/4), border=2, type = "b") 38} 39\keyword{manip} 40\keyword{math} 41