Matlab 相对于不同坐标系的轴缩放和旋转三维点
我在坐标系Matlab 相对于不同坐标系的轴缩放和旋转三维点,matlab,math,3d,geometry,coordinate-systems,Matlab,Math,3d,Geometry,Coordinate Systems,我在坐标系B中有一组3D点,我想围绕坐标系B的每个轴旋转和缩放一定角度theta和一定比例因子scale,然后将它们转换到不同的坐标系a。我知道4x4变换,它将坐标系B中的点变换为坐标系A 比如说, 我有一个变换矩阵 Tr = [0.0065,0.9999,-0.0106,-5.0682 -0.0105,-0.0105,-0.9999,1.7843 -0.9999,0.0066,0.0105,8.6412 0.0000,0.0000,0.0000,
B
中有一组3D点,我想围绕坐标系B
的每个轴旋转和缩放一定角度theta
和一定比例因子scale
,然后将它们转换到不同的坐标系a
。我知道4x4
变换,它将坐标系B
中的点变换为坐标系A
比如说,
我有一个变换矩阵
Tr = [0.0065,0.9999,-0.0106,-5.0682
-0.0105,-0.0105,-0.9999,1.7843
-0.9999,0.0066,0.0105,8.6412
0.0000,0.0000,0.0000,1.0000]
目前,我使用Tr
将三维点从坐标系B
转换为A
。
但是,我想修改Tr
(通过乘以其他矩阵),这样,在转换到A
之后,这些点将围绕坐标系“B”的每个轴旋转和缩放θ
,缩放
你知道这是否可行吗
T_scale = [scale_x 0 0 0
0 scale_y 0 0
0 0 scale_z 0
0 0 0 1]
T_i(theta) = [R_i(theta) [0; 0; 0]
[0 0 0] 1 ]
T = Tr * T_scale * T_z(theta_z) * T_y(theta_y) * T_x(theta_x)
如果将
A
和B
的4×4变换矩阵作为
| R_A t_A | | R_B t_B |
T_A = | | T_B = | |
| 0 1 | | 0 1 |
然后从A->B
T_AB = inv(T_B)*T_A
这被解释为本地-->global for
A
,然后是全局-->local forB
,您能详细说明一下吗?也许可以举个例子?是否要将点变换为B,执行旋转和缩放,然后变换回A?3D点集是否为图像?您想在x,y
轴还是x,y,z
轴上旋转?如果你想在3D中旋转,你需要θ1
和θ2
@NicoSchertler我从B中的点开始。我想围绕B轴执行旋转和缩放,然后将点转换为A。我编辑了我的问题,以使这一点更清楚。