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.