相对于不同坐标系的轴缩放和旋转 3D 点
Scale and rotate 3D points with respect to axis of a different coordinate system
我在坐标系 B
中有一组 3D 点,我想围绕每个坐标轴旋转和缩放特定角度 theta
和特定比例因子 scale
系统 B
,然后将它们转换到不同的坐标系 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
将 3D 点从坐标系 B
转换为 A
。
但是,我想修改 Tr
(通过乘以附加矩阵),以便在转换为 A
之后,点围绕每个轴旋转和缩放 theta
、scale
坐标系“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)
R_i(theta)
由 wikipedia
定义
如果你有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
这被解释为本地-->A
的全局,然后是 B
的全局-->本地。
我在坐标系 B
中有一组 3D 点,我想围绕每个坐标轴旋转和缩放特定角度 theta
和特定比例因子 scale
系统 B
,然后将它们转换到不同的坐标系 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
将 3D 点从坐标系 B
转换为 A
。
但是,我想修改 Tr
(通过乘以附加矩阵),以便在转换为 A
之后,点围绕每个轴旋转和缩放 theta
、scale
坐标系“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)
R_i(theta)
由 wikipedia
如果你有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
这被解释为本地-->A
的全局,然后是 B
的全局-->本地。