Last chance! 50% off unlimited learning
Sale ends in
3D triangle and quadrangle mesh object creation and a collection of sample objects.
qmesh3d(vertices, indices, homogeneous = TRUE, material = NULL,
normals = NULL, texcoords = NULL)
tmesh3d(vertices, indices, homogeneous = TRUE, material = NULL,
normals = NULL, texcoords = NULL)
as.mesh3d(x, ...)
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 mesh3d
dot3d(x, override = TRUE, ...)
wire3d(x, ...) # draw a wireframe object
# S3 method for mesh3d
wire3d(x, override = TRUE, ...)
shade3d(x, ...) # draw a shaded object
# S3 method for mesh3d
shade3d(x, override = TRUE, ...)
a mesh3d
object (class qmesh3d
or tmesh3d
), or for as.mesh3d
an object
with a method defined.
3- or 4-component vector of coordinates
4-component vector of vertex indices
logical indicating if homogeneous (four component) coordinates are used.
material properties for later rendering
normals at each vertex
texture coordinates at each vertex
transformation to apply to objects; see below for defaults
additional rendering parameters
should the parameters specified here override those stored in the object?
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 (or vector of IDs, for some
classes) invisibly.
See rgl.primitive
for a discussion of texture coordinates.
These functions create and work with 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 as.mesh3d
function is generic; currently
the only method defined is as.mesh3d.deldir
.
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
# NOT RUN {
# 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