The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This package is a curation made based on the poly package found on https://netlib.org/polyhedra/ (Original Help message), and the polyhedra database found on http://dmccooey.com/polyhedra/, both of which provide polyhedra databases on its own format. As such, Rpolyhedra provides with the following:
For final users, the package provides a common interface for accessing public polyhedra databases, analyze properties, compare and visualize them with RGL.
For advanced users, the package provides a simplified set of R6 objects to scrape and compare polyhedra databases.
Once the original files had been processed, a simple call to
getAvailablePolyhedra()
retrieves a list of the available
polyhedra with properties and status in the polyhedra database:
## source scraped.name symbol vertices faces
## 1 netlib tetrahedron {3,3}\t@Y sub 3 @ 4 4
## 31 netlib square pyramid (j1) \t@Y sub 4 @ 5 5
## 42 netlib triangular dipyramid (j12) \t@Y sub 3 @ 5 6
## 9 netlib triangular prism \t@P sub 3 @ 6 5
## 32 netlib pentagonal pyramid (j2) \t@Y sub 5 @ 6 6
## 3 netlib octahedron {3,4}\t@S sub 3 @ 6 8
## 37 netlib elongated triangular pyramid (j7) \t@Y sub 3 @ 7 7
## 74 netlib augmented triangular prism (j49) \t@Y sub 4 @ 7 8
## 43 netlib pentagonal dipyramid (j13) \t@Y sub 5 @ 7 10
## 2 netlib cube {4,3}\t@P sub 4 @ 8 6
## status
## 1 scraped
## 31 scraped
## 42 scraped
## 9 scraped
## 32 scraped
## 3 scraped
## 37 scraped
## 74 scraped
## 43 scraped
## 2 scraped
The access to a particular polyhedron can be done with a call to
getPolyhedron(<<source>>, <<polyhedron.name>>)
,
which returns a Polyhedron object. For example, to retrieve a cube from
the netlib database, the call would be:
To try package functionality, a simple demo can be executed which shows the 5 regular polyhedra.
# 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()
## glX
## 2
## Warning in rgl.bg(sphere = FALSE, fogtype = "none", color = c("black")): 'rgl.bg' está en desuso.
## Utilizar 'bg3d' en su lugar.
## Ver help("Deprecated")
## Warning in rgl.viewpoint(theta = 0, phi = 0, zoom = 0.8, fov = 1): 'rgl.viewpoint' está en desuso.
## Utilizar 'view3d' en su lugar.
## Ver help("Deprecated")
# 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])
}
## [1] "Drawing tetrahedron rotated 1.26 in (1,0,0) axis. Translated to (4.76,1.55,0) with color #FF0000"
## [1] "Drawing octahedron rotated 2.51 in (1,0,0) axis. Translated to (2.94,-4.05,0) with color #CCFF00"
## [1] "Drawing cube rotated 3.77 in (1,0,0) axis. Translated to (-2.94,-4.05,0) with color #00FF66"
## [1] "Drawing icosahedron rotated 5.03 in (1,0,0) axis. Translated to (-4.76,1.55,0) with color #0066FF"
## [1] "Drawing dodecahedron rotated 6.28 in (1,0,0) axis. Translated to (0,5,0) with color #CC00FF"
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.