Rotates a three-column matrix whose rows are vectors in 3D space, using quaternions
rotate(x, H)
Arguments
x: A matrix of three columns whose rows are points in 3D space
H: A quaternion. Does not need to have unit modulus
Returns
Returns a matrix of the same size as x
Author(s)
Robin K. S. Hankin
See Also
orthogonal
Examples
data(bunny)par(mfrow=c(2,2))par(mai=rep(0,4))p3d(rotate(bunny,Hi),box=FALSE)p3d(rotate(bunny,H1-Hi+Hj),box=FALSE)p3d(rotate(bunny,Hk),box=FALSE)p3d(rotate(bunny,Hall),box=FALSE)o <-function(w){diag(3)-2*outer(w,w)/sum(w^2)}# HouseholderO <- o(1:3)%*% o(3:1)rotate(bunny,as.quaternion(O))bunny %*% t(O)# should be the same; note transpose