ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

第 21 章 · 几何变换

第 21 章 · 几何变换 旋转、平移、缩放……这些变换都能用矩阵表示。本章讲透矩阵就是变换这个核心思想这是理解 Eigen 几何模块第 32 章的钥匙。21.1 矩阵 变换一个惊人的事实矩阵乘法 对向量做变换。一个向量 v 被矩阵 A 乘一下A·v就变成了另一个向量——相当于对 v 做了一次变换移动、旋转、缩放、扭曲……。v ──(A 作用)──→ A·v所以学矩阵其实是学变换。下面看几种基本变换。21.2 缩放对角矩阵表示缩放把坐标各分量分别放大。[ 2 0 ] [ x ] [ 2x ] [ 0 3 ] · [ y ] [ 3y ]这个矩阵把 x 方向放大 2 倍y 方向放大 3 倍。y | · (2x, 3y) | / |/ · (x, y) └────────── x21.3 旋转二维平面绕原点旋转角度 θ用旋转矩阵R(θ) [ cosθ -sinθ ] [ sinθ cosθ ]绕 Z 轴旋转 θ三维里最常用Rz(θ) [ cosθ -sinθ 0 ] [ sinθ cosθ 0 ] [ 0 0 1 ]例绕 Z 轴转 90°θ90°cos0sin1[ 0 -1 0 ] [ 1 ] [ 0 ] [ 1 0 0 ] · [ 0 ] [ 1 ] ← X 轴上的点 (1,0,0) 转到了 Y 轴 (0,1,0) [ 0 0 1 ] [ 0 ] [ 0 ]这就是旋转矩阵——用矩阵乘法实现旋转。21.4 平移需要齐次坐标平移整体移动是加上一个向量不是线性变换普通 3×3 矩阵表达不了。于是引入齐次坐标多加一维。二维点 (x, y) 写成齐次坐标 (x, y, 1)用 3×3 矩阵做平移[ 1 0 tx ] [ x ] [ x tx ] [ 0 1 ty ] [ y ] [ y ty ] [ 0 0 1 ] [ 1 ] [ 1 ]三维点 (x, y, z) 写成 (x, y, z, 1)用 4×4 矩阵做平移[ 1 0 0 tx ] [ x ] [ x tx ] [ 0 1 0 ty ] [ y ] [ y ty ] [ 0 0 1 tz ] [ z ] [ z tz ] [ 0 0 0 1 ] [ 1 ] [ 1 ]这就是为什么 3D 图形里到处都是4×4 矩阵——它能把旋转、缩放、平移统一表示。21.5 组合变换矩阵相乘 变换叠加想先旋转再平移把两个变换矩阵相乘就得到复合变换先做 B 再做 A A · B 注意顺序从右往左执行因为 (A·B)·v A·(B·v)先对 v 做 B再对结果做 A。矩阵乘法的意义之一就是变换的组合。21.6 刚体变换保持形状的变换刚体变换 旋转 平移。它不改变物体的形状、大小、角度只改变位置和朝向。刚体的运动机器人的移动、相机的运动都是刚体变换用 Eigen 的Isometry3d表示第 32 章21.7 在 Eigen 里做变换先睹为快第 32 章详解#includeEigen/Dense#includeEigen/Geometry#includeiostreamintmain(){constdoublePI3.14159265358979;// 绕 Z 轴旋转 90°Eigen::AngleAxisdrot(PI/2,Eigen::Vector3d::UnitZ());Eigen::Matrix3d Rrot.toRotationMatrix();Eigen::Vector3dp(1,0,0);// X 轴上的点Eigen::Vector3d p2R*p;// 旋转std::cout旋转后 p2.transpose()std::endl;// (0,1,0)return0;}实际输出旋转后 1.61554e-15 1 0别被1.61554e-15吓到数学上这个数是 0但计算机用二进制表示π/2的余弦时不可能精确为 0于是留下了 1e-15 量级的浮点残渣。判断两个浮点数是否相等永远用差值小于某个容差如 1e-9不要用。第 29、30、36 章的残差、行列式都会出现这种现象。21.8 小结矩阵乘法 对向量做变换。缩放对角矩阵旋转旋转矩阵平移齐次坐标 4×4 矩阵。矩阵相乘 变换叠加从右往左。刚体变换 旋转 平移用Isometry3d表示。 第二部分完成你现在掌握了理解 Eigen 所需的全部线性代数基础向量、矩阵、矩阵运算、方程组、行列式、逆矩阵、特征值、几何变换。第三部分正式进入 Eigen 库——你会发现前面学的数学和 C 全都用上了。练习题写出绕 Z 轴旋转 90° 的旋转矩阵用它旋转点 (1,0,0)。写出把点 (x,y,z) 平移 (1,2,3) 的 4×4 齐次矩阵。解释为什么先旋转后平移和先平移后旋转结果不同。用自己的话解释矩阵就是变换。什么是刚体变换举一个实际例子。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表