###holiday caRd

#install "rgl" package if necessary:

install.packages("rgl")

#load library

library(rgl)

##Data

r=1.0

h=5.0

m=h/r

x=seq(0:99)

y=x

X=x*cos(y)

Y=x*sin(y)

Z=-1*(m*x)

Z1=Z+rnorm(length(Z),Z,5)

sub<-matrix(subset(c(X,Y,Z),Z==max(Z)),ncol=3)

trunk<-matrix(c(0.54,0.84,-200,0.54,0.84,-650),byrow=TRUE,ncol=3)

sno<-c(0,rep(15,9))

##Plot card

open3d(FOV=1)

par3d(windowRect=c(100,100,600,600))

bg3d("aquamarine2")

plot3d(X,Y,Z,col="darkgreen",type="l",box=FALSE,axes=FALSE,lwd=10,zlim=c(min(Z),0),xlab="",ylab="",zlab="",top=TRUE,border=TRUE)

plot3d(X,Y,Z,col=c("yellow","red"),add=TRUE,type="s",radius=3)

points3d(sub,col="orange",size=10)

lines3d(trunk,col="brown",lwd=20)

text3d(matrix(c(0.54,-100,300),ncol=3),text="Happy Holidays",font=5,cex=1.9,color="darkred",adj=c(0.5,1))

text3d(matrix(c(0.54,0.84,-650),ncol=3),text="and",font=5,cex=1.5,color="darkred",adj=c(0.5,1))

text3d(matrix(c(0.54,75,-780),ncol=3),text="a Happy New Year",font=5,cex=1.9,color="darkred",adj=c(0.5,1))

mat<-par3d("scale")

##Play card

for(i in 1:10){

        par3d(scale=mat,ignoreExtent=TRUE)

        points3d(matrix(c(sample(-160:160,sno[i]),sample(-160:160,sno[i]),sample(-500:150,sno[i])),ncol=3),col="white",size=3)

play3d(spin3d(axis=c(0,0,1)),duration=1)

if(i==10){points3d(sub,col="darkorange",size=17)

plot3d(X,Y,Z,col=c("yellow","red"),type="s",radius=4,add=TRUE)}}

text3d(matrix(c(0,140,-900),ncol=3),text="From the EEB & Flow",font=1,cex=1.0,color="darkgreen",adj=c(0.5,1))

#The rgl device window allows you to use your mouse to manipulate the plot in 3-dimensions, so feel free to do so before closing it.