理解 SE3 变换矩阵
$"target" A "source" B$ 为 $R, t$ 的意义
- 又称 parent A child B, A from B
- 表示任意向量在 B 坐标系下的表示法 $v_B$ 和 A 下表示法 $v_A$ 满足 $v_A = R v_B + t$
- 几何意义:表示 A 坐标系三轴在自身坐标系下先平移 $t$,然后新 $x$ 轴为 $R$ 的第一列向量(A 坐标系意义下),新 $y$ 轴为 $R$ 第二列向量,新 $z$ 轴为 $R$ 第三列向量
变换矩阵乘法的意义
- $A <- B$ 表示 A from B 的变换
- $v_A = (A <- B) dot (B <- C) dot bold(v_C) = A <- C dot v_C$
- 可以认为 A 到 C 三轴几何变换方式为先按照 $A <- B$ 平移 + 旋转,再按照 $B <- C$ 平移 + 旋转
- 经过测试,四元数,欧拉角和旋转向量的几何意义均为从 $A$ 的旋转到 B 的三轴
- 注意到 $(A <- B) dot (B <- C)$ 可理解为左边矩阵变换了右边矩阵的向量
Example
- 已知
- Unity 左手系下 world from A 变换为 M
- 对所有左手系,定义附属右手系为...(一种变换)
- 求 world 附属右手系 from A 附属右手系的变换
- 事实上后来还求了 A1 附属右手系 from A2 附属右手系等
- 解法
- $v = (t, q) = (x, y, z, w, x, y, z)$ 这是 world from target
- $q_"反 y 右手系, world from A" = v * (1, -1, 1, 1, -1, 1, -1)$
- world 和 A 都转为 y 轴相反的右手系看待了,此时几何变换平移向量不变,但表示法的 y 分量取反,但要保证旋转向量的大小和转向不变
- 注意左手系旋转正方向是正方向看原点的顺时针
- 注意到附属右手系几何上可以先绕自己 $y$ 轴旋转 90 读,再绕 z 轴旋转 -90 度得到 反 y 右手系
- return $M_"绕自己 y 转 90 度" * M_"绕自己 z 转 -90 度" * M_"反 y 右手系"$