Subset an object to parts facing in a particular direction
facing3d
subsets an object by converting it to a triangle mesh,
then subsetting to those triangles that are counterclockwise
(for front = TRUE
) when projected into a plane.
projectDown
computes a projection that “looks down” the specified direction.
facing3d(obj, up = c(0, 0, 1), P = projectDown(up), front = TRUE, strict = TRUE) projectDown(up)
obj |
An object that can be converted to a triangular mesh object. |
up |
The direction that is to be considered “up”. It may be either a 3 vector in Euclidean coordinates or a 4 vector in homogeneous coordinates. |
P |
The projection to use for draping, a 4x4 matrix. See |
front |
If |
strict |
If |
By default
the returned subset will be those triangles whose upper side
matches front
. Change up
or use an
arbitrary projection for different subsets.
facing3d
returns a mesh object made of those triangles which face in the
desired direction.
projectDown
computes a 4x4 matrix. The first two
coordinates of asEuclidean(x %*% projectDown(up))
give a projection of x
from above into a plane, where
up
determines which direction is taken to be “up”.
open3d() d <- rnorm(3) d <- d/sqrt(sum(d^2)) shade3d( facing3d( icosahedron3d(), up = d, strict = FALSE), col = "yellow") wire3d( facing3d( icosahedron3d(), up = d, front = FALSE), col = "black") # Show the direction: arrow3d(-2*d , -d)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.