rotationVect3D(U, V, M_world)

rotationVect3D使用斜对称叉积矩阵

118下载

更新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秒的时间内旋转一组150万个3D矢量(i7-4700MQ CPU @ 2.40GHz, 16.0 GB Ram)
该函数调用两个匿名函数。一个用于计算斜对称叉乘,另一个用于估计旋转矩阵:

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

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

使用实例:

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

引用作为

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

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

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!
版本 发表 发布说明
1.2.0.0

考虑U和V共线的情况。
该函数将对每个输入向量应用一个单位矩阵

1.1.0.0

描述中的错别字已被更正

1.0.0.0