First Letters of First and Last Name

x=c(rep(-0.5,500),seq(-1,0,length.out=500), 
    rep(0.5,500),sin(seq(pi*.17,pi*0.82,length.out=500)),sin(seq(pi*.17,pi*0.82,length.out=500)))
y=c(seq(-1,1,length.out=500),rep(1,500),
    seq(-1,1,length.out=500),seq(1,0,length.out=500),seq(0,-1,length.out=500))
z=rbind(x,y)
plot(y~x, xlim=c(-3,3), ylim=c(-3,3), col='green')

Left Multiply

leftmulti = function(x,y){
   x %*% y
}
leftmulti(matrix(rep(seq(2,5, length.out=3),3), nrow = 3, ncol = 3),diag(3))
##      [,1] [,2] [,3]
## [1,]  2.0  2.0  2.0
## [2,]  3.5  3.5  3.5
## [3,]  5.0  5.0  5.0

Shearing

for (n in seq(0,1,length.out=15)) {
  shear<-apply(z,2,function(x) leftmulti(x,matrix(c(1,n,0,1),nrow=2,ncol=2)))
   plot(shear[2,]~shear[1,], xlim=c(-3,3), ylim=c(-3,3), col='red')
x11()
}

Scaling

for (n in seq(1,3,length.out=15)) {
  scale<-apply(z,2,function(x) leftmulti(x,matrix(c(n,0,0,n),nrow=2,ncol=2)))
   plot(scale[2,]~scale[1,], xlim=c(-3,3), ylim=c(-3,3), col='blue')
x11()
}

Rotation

for (n in seq(0,pi*2,length.out=15)) {
  rotate<-apply(z,2,function(x) leftmulti(x,matrix(c(cos(n),sin(n),-sin(n),cos(n)),nrow=2,ncol=2)))
   plot(rotate[2,]~rotate[1,], xlim=c(-3,3), ylim=c(-3,3), col='orange')
x11()
}

Projection

for (n in seq(0,2*pi,length.out=15)) {
  alt=rbind(z,rep(0,ncol(z)))
  projection<-apply(alt,2,function(x) leftmulti(x,matrix(c(1,0,0,0,cos(n),-sin(n),0,sin(n),cos(n)),nrow=3,ncol=3)))
   plot(projection[2,]~projection[1,], xlim=c(-3,3), ylim=c(-3,3), col='purple')
x11()
}