Nothing
## ----setup, include=FALSE-----------------------------------------------------
library(rgl)
library(Rpolyhedra)
library(dplyr)
setupKnitr()
## ----availablePolyhedra-------------------------------------------------------
#show only the first 10 polyhedra.
head(getAvailablePolyhedra(), n = 10)
## ----getPolyhedron------------------------------------------------------------
cube <- getPolyhedron(source = "netlib", polyhedron.name = "cube")
## ----demo, webgl=TRUE---------------------------------------------------------
# 1. Obtain 5 regular solids
polyhedra.2.draw <- getAvailablePolyhedra(source = "netlib")
polyhedra.2.draw <- polyhedra.2.draw %>%
filter(scraped.name %in%
c("tetrahedron", "octahedron", "cube",
"icosahedron", "dodecahedron"))
# 2. Setup colors and scales
n <- nrow(polyhedra.2.draw)
polyhedron.colors <- rainbow(n)
polyhedron.scale <- 5
# 3. Open and setup RGL window
open3d()
par3d(FOV = 1)
rgl.bg( sphere =FALSE, fogtype = "none", color=c("black"))
rgl.viewpoint(theta = 0, phi=0, zoom=0.8, fov=1)
# 4. For each polyhedron, setup rotation, position and render
for (i in seq_len(n)) {
# Obtain polyhedron
polyhedron.row <- polyhedra.2.draw[i,]
polyhedron.name <- polyhedron.row$scraped.name
polyhedron <- getPolyhedron(source = polyhedron.row$source, polyhedron.name)
# Setup angles, position into transformationMatrix
current.angle <- i/n * 2 * pi
tm <- rotationMatrix(current.angle, 1, 0, 0)
x.pos <- round(polyhedron.scale * sin(current.angle), 2)
y.pos <- round(polyhedron.scale * cos(current.angle), 2)
tm <- tm %*% translationMatrix(x.pos, y.pos, 0)
# Render
print(paste("Drawing ", polyhedron.name, " rotated ", round(current.angle, 2),
" in (1,0,0) axis. Translated to (", x.pos, ",", y.pos, ",0)",
" with color ", polyhedron.colors[i], sep = ""))
shape.rgl <- polyhedron$getRGLModel(transformation.matrix = tm)
shade3d(shape.rgl, color = polyhedron.colors[i])
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.