shapelist3d is a quick way to create a complex object made up of simpler ones.
Each of the arguments shapes through override may be a vector of
values (a list in the case of shapes or matrix). All values
will be recycled to produce a list of shapes as long as the longest of them.
The xyz.coords function will be used to process the x,
y and z arguments, so a matrix may be used as x to
specify all three. If a vector is used for x but y or z
is missing, default values of 0 will be used.
The "shapelist3d" class is simply a list of "shape3d" objects.
Methods for dot3d, wire3d, shade3d,
translate3d, scale3d, and rotate3d
are defined for these objects.