图片缩略图

rotationVect3D (U, V, M_world)

version 1.2.0.0 (1.36 KB) by 萨米尔沙利
旋转vect3d使用斜对称交叉积矩阵

113下载

更新2015年3月12

查看许可协议

这个函数允许你找到将单位向量U旋转到单位向量v上的旋转矩阵R。为了实现这个目标,我们使用了斜对称叉积矩阵W;其中W是U和V的叉乘。
这个功能是受到论坛讨论的启发http://math.stackexchange.com/questions/180418/calculate-rotation-matrix-to-align-vector-a-to-vector-b-in-3d
向量U和V可以不是单位向量,这个函数解决了这个问题。
该方法是一种高效、精确的多基矩阵求解方法。
即使不使用mex文件,这个函数也非常快。例如,在一台笔记本电脑上,使用这个函数可以在不到0.030秒的时间内旋转3D中的150万个矢量(i7-4700MQ CPU @ 2.40GHz, 16.0 GB Ram)。
该函数调用两个匿名函数。一个计算斜对称叉积,另一个估计旋转矩阵:

%匿名函数,计算v的斜对称叉积矩阵
SSC = @(v) [0 -v(3) v(2)];v (3) 0 - v (1);v - v (2) (1) 0);

%旋转矩阵RU,旋转单位向量a到单位向量b
俄文= @ (A, B)眼(3)+ ssc(交叉(A, B)) + ssc(交叉(A, B)) ^ 2 *(点乘(A, B)) /(规范(交叉(A, B)) ^ 2);

示例如何使用这个函数:

%的输入向量
inputVect3D =兰德(1500000);
%即使没有单位向量,函数也能提供正确的矩阵
U = (2, 0, 0);
V = [0; 3; 0];
tic,rotatedVect3D = rotationVect3D(U, V, inputVect3D);toc

引用作为

萨米尔沙利(2021)。rotationVect3D (U, V, M_world)(//www.tianjin-qmedu.com/matlabcentral/fileexchange/49986-rotationvect3d-u-v-m_world), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2013b
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!