使用R求一个向量到另一个向量的旋转矩阵
我想用R计算两个n维向量之间的一个(任意)旋转矩阵。包括一个Matlab算法,该算法允许找到一个旋转矩阵,将向量x转换为另一个向量y。代码可以转换为R:使用R求一个向量到另一个向量的旋转矩阵,r,rotation,geometry,R,Rotation,Geometry,我想用R计算两个n维向量之间的一个(任意)旋转矩阵。包括一个Matlab算法,该算法允许找到一个旋转矩阵,将向量x转换为另一个向量y。代码可以转换为R: # Function returns a rotation matrix transforming x into y rotation = function(x,y){ u=x/sqrt(sum(x^2)) v=y-sum(u*y)*u v=v/sqrt(sum(v^2)) cost=sum(x*y)/sqrt(sum(x^
# Function returns a rotation matrix transforming x into y
rotation = function(x,y){
u=x/sqrt(sum(x^2))
v=y-sum(u*y)*u
v=v/sqrt(sum(v^2))
cost=sum(x*y)/sqrt(sum(x^2))/sqrt(sum(y^2))
sint=sqrt(1-cost^2);
diag(length(x)) - u %*% t(u) - v %*% t(v) +
cbind(u,v) %*% matrix(c(cost,-sint,sint,cost), 2) %*% t(cbind(u,v))
}
x=c(2,4,5,3,6)
y=c(6,2,0,1,7)
# Same norm
sqrt(sum(x^2))
sqrt(sum(y^2))
Rx2y = rotation(x,y)
x %*% Rx2y
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 6 2 -8.881784e-16 1 7
到目前为止你试过什么?你有没有找到一个你可以在这里建议的算法/公式?目前这是一个“给我密码”的问题…@BenBolker我不认为这是“给我密码”的问题。这相当于一个问题“请告诉我,在我开始写我自己的代码之前,我是否发现了一些内置的东西”。谢谢你,本,我已经尝试通过包括我已经做的事情来改进我的问题。我的问题更多的是阿维斯基指出的方向,不是“给我密码”,而是“寻找图书馆/资源”。。。