mesh3d                  package:rgl                  R Documentation

_3_D _M_e_s_h _o_b_j_e_c_t_s

_D_e_s_c_r_i_p_t_i_o_n:

     3D triangle and quadrangle mesh object creation and a collection
     of sample objects.

_U_s_a_g_e:

       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, ...)

_A_r_g_u_m_e_n_t_s:

       x: a 'mesh3d' object (class 'qmesh3d' or 'tmesh3d')

vertices: 3- or 4-component vector of coordinates

 indices: 4-component vector of vertex indices

homogeneous: logical indicating if homogeneous (four component)
          coordinates are used.

material: material properties for later rendering

 normals: normals at each vertex

   trans: transformation to apply to objects; see below for defaults

     ...: additional rendering parameters

override: should the parameters specified here override those stored in
          the object?

_D_e_t_a_i_l_s:

     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 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.

_V_a_l_u_e:

     '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.

_S_e_e _A_l_s_o:

     'r3d', 'par3d', 'shapelist3d' for multiple shapes

_E_x_a_m_p_l_e_s:

       # 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) )

