vectors3d

0th

Percentile

Draw 3D vectors

This function draws vectors in a 3D plot, in a way that facilitates constructing vector diagrams. It allows vectors to be specified as rows of a matrix, and can draw labels on the vectors.

Usage
vectors3d(X, origin = c(0, 0, 0), headlength = 0.035,
ref.length = NULL, radius = 1/60, labels = TRUE, cex.lab = 1.2,
adj.lab = 0.5, frac.lab = 1.1, draw = TRUE, ...)
Arguments
X

a vector or three-column matrix representing a set of geometric vectors; if a matrix, one vector is drawn for each row

origin

the origin from which they are drawn, a vector of length 3.

the headlength argument passed to arrows3d determining the length of arrow heads

ref.length

vector length to be used in scaling arrow heads so that they are all the same size; if NULL the longest vector is used to scale the arrow heads

labels

a logical or a character vector of labels for the vectors. If TRUE and X is a matrix, labels are taken from rownames(X). If FALSE or NULL, no labels are drawn.

cex.lab

character expansion applied to vector labels. May be a number or numeric vector corresponding to the the rows of X, recycled as necessary.

label position relative to the label point as in text3d, recycled as necessary.

frac.lab

location of label point, as a fraction of the distance between origin and X, recycled as necessary. Values frac.lab > 1 locate the label beyond the end of the vector.

draw

if TRUE (the default), draw the vector(s).

...

other arguments passed on to graphics functions.

Value

invisibly returns the vector ref.length used to scale arrow heads

Bugs

At present, the color (color=) argument is not handled as expected when more than one vector is to be drawn.

arrows3d, codetexts3d, codergl.material

Other vector diagrams: Proj, arc, arrows3d, circle3d, corner, plot.regvec3d, pointOnLine, regvec3d, vectors

• vectors3d
Examples
# NOT RUN {
vec <- rbind(diag(3), c(1,1,1))
rownames(vec) <- c("X", "Y", "Z", "J")
library(rgl)
open3d()
vectors3d(vec, color=c(rep("black",3), "red"), lwd=2)
# draw the XZ plane, whose equation is Y=0
planes3d(0, 0, 1, 0, col="gray", alpha=0.2)
vectors3d(c(1,1,0), col="green", lwd=2)
# show projections of the unit vector J
segments3d(rbind(c(1,1,1), c(1, 1, 0)))
segments3d(rbind(c(0,0,0), c(1, 1, 0)))
segments3d(rbind(c(1,0,0), c(1, 1, 0)))
segments3d(rbind(c(0,1,0), c(1, 1, 0)))
# show some orthogonal vectors
p1 <- c(0,0,0)
p2 <- c(1,1,0)
p3 <- c(1,1,1)
p4 <- c(1,0,0)
corner(p1, p2, p3, col="red")
corner(p1, p4, p2, col="red")
corner(p1, p4, p3, col="blue")

rgl.bringtotop()
# }

Documentation reproduced from package matlib, version 0.9.2, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.