June 17, 2015
Sweavetest
The Sweavetest
slides are in teachtest1.pdf.
rgl
rgl
is an R package that uses OpenGL
and WebGL
to display 3D graphics. Daniel Adler and I first released it in 2002.OpenGL
is a library that's about 25 years old for rendering graphics on computer screens; WebGL
is a recent Javascript interface to it, now supported in most browsers.rgl
includes fairly high-level functions modelled on classic R graphics, as well as low-level functions for dealing with OpenGL
. Users don't need to know anything about OpenGL
to use it.rgl
in Teachingrgl
in my "Introduction to Statistical Computing" course, though writing code using it is a little complex for most of the students at that level.WebGL
support makes this easier, because knitr
and rmarkdown
(Allaire et al. 2014) make it easy to embed rgl
graphics on a web page. (This half of the talk is written that way.)LaTeX
, the underlying language is Markdown
, with code chunks similar to Sweave
.persp3d
displays a general parameterized surface:z <- matrix(seq(0, 1, len=50), 50, 50) theta <- t(z) r <- 1 + exp( -pmin( (z - theta)^2, (z - theta - 1)^2, (z - theta + 1)^2 )/0.01 ) x <- r*cos(theta*2*pi) y <- r*sin(theta*2*pi) persp3d(x, y, z, col="red")
persp3d
OutputYou must enable Javascript to view this page properly.
First, draw a sphere. Put a bitmapped "texture" on the surface.
lat <- matrix(seq(90,-90, len=50)*pi/180, 50, 50, byrow=TRUE) long <- matrix(seq(-180, 180, len=50)*pi/180, 50, 50) r <- 6378.1 # radius of Earth in km x <- r*cos(lat)*cos(long) y <- r*cos(lat)*sin(long) z <- r*sin(lat) obj <- persp3d(x, y, z, col="white", texture=system.file("textures/world.png",package="rgl"), specular="black", axes=FALSE, box=FALSE, xlab="", ylab="", zlab="", normal_x=x, normal_y=y, normal_z=z)
You must enable Javascript to view this page properly.