qmesh3d(vertices, indices, homogeneous = TRUE, material = NULL, normals = NULL)
tmesh3d(vertices, indices, homogeneous = TRUE, material = NULL, normals = NULL)
cube3d(trans = identityMatrix(), ...)
tetrahedron3d(trans = identityMatrix(), ...)
octahedron3d(trans = identityMatrix(), ...)
icosahedron3d(trans = identityMatrix(), ...)
dodecahedron3d(trans = identityMatrix(), ...)
cuboctahedron3d(trans = identityMatrix(), ...)
oh3d(trans = identityMatrix(), ...) # an 'o' object
dot3d(x, ...) # draw dots at the vertices of an object
## S3 method for class 'mesh3d':
dot3d(x, override = TRUE, ...)
wire3d(x, ...) # draw a wireframe object
## S3 method for class 'mesh3d':
wire3d(x, override = TRUE, ...)
shade3d(x, ...) # draw a shaded object
## S3 method for class 'mesh3d':
shade3d(x, override = TRUE, ...)
mesh3d
object (class qmesh3d
or tmesh3d
)qmesh3d
, cube3d
, oh3d
, tmesh3d
,
tetrahedron3d
, octahedron3d
, icosahedron3d
and
dodecahedron3d
return objects of class c("mesh3d",
"shape3d")
. The first three of these are quad meshes, the rest are
triangle meshes.
dot3d
, wire3d
, and shade3d
are called for their side effect
of drawing an object into the scene; they return an object ID.mesh3d
objects, which consist of a matrix
of vertex coordinates together with a matrix of indices indicating which vertex is
part of which face. Such objects may have triangular faces,
planar quadrilateral faces, or both.
The sample objects optionally take a matrix transformation trans
as
an argument. This transformation is applied to all vertices of the default shape.
The default is an identity transformation.
The "shape3d"
class is a general class for shapes that can be plotted
by dot3d
, wire3d
or shade3d
.
The "mesh3d"
class is a class of objects that form meshes: the vertices
are in member vb
, as a 3 or 4 by n
matrix. Meshes with triangular
faces will contain it
, a 3 * n
matrix giving the indices of the
vertices in each face. Quad meshes will have vertex indices in ib
,
a 4 * n
matrix.r3d
, par3d
, shapelist3d
for multiple shapes# generate a quad mesh object
vertices <- c(
-1.0, -1.0, 0, 1.0,
1.0, -1.0, 0, 1.0,
1.0, 1.0, 0, 1.0,
-1.0, 1.0, 0, 1.0
)
indices <- c( 1, 2, 3, 4 )
open3d()
wire3d( qmesh3d(vertices,indices) )
# render 4 meshes vertically in the current view
open3d()
bg3d("gray")
l0 <- oh3d(tran = par3d("userMatrix"), color = "green" )
shade3d( translate3d( l0, -6, 0, 0 ))
l1 <- subdivision3d( l0 )
shade3d( translate3d( l1 , -2, 0, 0 ), color="red", override = FALSE )
l2 <- subdivision3d( l1 )
shade3d( translate3d( l2 , 2, 0, 0 ), color="red", override = TRUE )
l3 <- subdivision3d( l2 )
shade3d( translate3d( l3 , 6, 0, 0 ), color="red" )
# render all of the Platonic solids
open3d()
shade3d( translate3d( tetrahedron3d(col="red"), 0, 0, 0) )
shade3d( translate3d( cube3d(col="green"), 3, 0, 0) )
shade3d( translate3d( octahedron3d(col="blue"), 6, 0, 0) )
shade3d( translate3d( dodecahedron3d(col="cyan"), 9, 0, 0) )
shade3d( translate3d( icosahedron3d(col="magenta"), 12, 0, 0) )
Run the code above in your browser using DataLab