arrow3d {rgl} | R Documentation |
Draw an arrow
Description
Draws various types of arrows in a scene.
Usage
arrow3d(p0 = c(1, 1, 1), p1 = c(0, 0, 0),
barblen, s = 1/3, theta = pi/12,
type = c("extrusion", "lines", "flat", "rotation"),
n = 3, width = 1/3, thickness = 0.618 * width,
spriteOrigin = NULL,
plot = TRUE, ...)
Arguments
p0 |
The base of the arrow. |
p1 |
The head of the arrow. |
barblen |
The length of the barbs (in display coordinates).
Default given by |
s |
The length of the barbs as a fraction of line length. Ignored if |
theta |
Opening angle of barbs |
type |
Type of arrow to draw. Choose one from the list of defaults. Can be abbreviated. See below. |
n |
Number of barbs. |
width |
Width of shaft as fraction of barb width. |
thickness |
Thickness of shaft as fraction of barb width. |
spriteOrigin |
If arrow is to be replicated as sprites, the origins relative to which the sprites are drawn. |
plot |
If |
... |
Material properties passed to |
Details
Four types of arrows can be drawn. The shapes
of all of them are affected by p0
, p1
, barblen
,
s
, theta
, material properties
in ...
, and spriteOrigin
. Other parameters
only affect some of the types, as shown.
"extrusion"
(default) A 3-dimensional flat arrow, drawn with
shade3d
. Affected bywidth
,thickness
andsmooth
."lines"
Drawn with lines, similar to
arrows
, drawn withsegments3d
. Affected byn
."flat"
A flat arrow, drawn with
polygon3d
. Affected bywidth
andsmooth
."rotation"
A solid of rotation, drawn with
shade3d
. Affected byn
andwidth
.
Normally this function draws just one arrow from
p0
to p1
, but
if spriteOrigin
is given (in any form
that xyz.coords(spriteOrigin)
can
handle), arrows will be drawn for each point
specified, with p0
and p1
interpreted relative to those origins. The
arrows will be drawn as 3D sprites which will
maintain their orientation as the scene is rotated, so this is a good way to indicate
particular locations of interest in the scene.
Value
If plot = TRUE
(the default), this is
called mainly for the side effect of drawing
the arrow; invisibly returns the id(s) of
the objects drawn.
If plot = FALSE
, the data that would be
used in the plot (not including material
properties) is returned.
Author(s)
Design based on heplots::arrow3d
, which contains modifications by Michael Friendly
to a function posted by Barry Rowlingson to R-help on 1/10/2010. Additions by Duncan Murdoch.
Examples
xyz <- matrix(rnorm(300), ncol = 3)
plot3d(xyz)
arrow3d(xyz[1,], xyz[2,], type = "extrusion", col = "red")
arrow3d(xyz[3,], xyz[4,], type = "flat", col = "blue")
arrow3d(xyz[5,], xyz[6,], type = "rotation", col = "green")
arrow3d(xyz[7,], xyz[8,], type = "lines", col = "black")
arrow3d(spriteOrigin = xyz[9:12,], col = "purple")