The number of points in the space curve is determined by the vector lengths in center,
after using xyz.coords to convert it to a list. The other arguments
radius, twist, e1, e2, and e3 are extended to the same
length.
The closed argument controls how the ends of the cylinder are
handled. If closed > 0, it represents the number of points of
overlap in the coordinates. closed == TRUE is the same as
closed = 1. If closed > 0 but the ends don't actually
match, a warning will be given and results will be somewhat
unpredictable.
Negative values of closed indicate that caps should be put on the
ends of the cylinder. If closed == -1, a cap will be put on the
end corresponding to center[1, ]. If closed == -2, caps
will be put on both ends.
If section is NULL (the default), a regular
sides-sided polygon is used, and radius measures the
distance from the center of the cylinder to each vertex. If not
NULL, sides is ignored (and set internally to
nrow(section)), and radius is used as a multiplier to
the vertex coordinates. twist specifies the rotation of the
polygon. Both radius and twist may be vectors, with
values recycled to the number of rows in center, while
sides and section are the same at every point along the
curve.
The three optional arguments e1, e2, and e3
determine the local coordinate system used to create the vertices at
each point in center. If missing, they are computed by simple
numerical approximations. e1 should be the tangent coordinate,
giving the direction of the curve at the point. The cross-section of
the polygon will be orthogonal to e1. When rotationMinimizing is TRUE, e2 and e3 are chosen to give
a rotation minimizing frame (see Wang et al., 2008). When it is
FALSE, e2 defaults to an
approximation to the normal or curvature vector; it is used as the
image of the y axis of the polygon cross-section. e3
defaults to an approximation to the binormal vector, to which the
x axis of the polygon maps. The vectors are orthogonalized and
normalized at each point.