#sec-2-1
Motivation
导入:怎样让图形绕自己的中心旋转?
上节课已经知道绕原点旋转的矩阵。现在问题变成:如果图形的中心不在原点,还能直接用同一个旋转矩阵吗?
#sec-2-2
Prediction
Prediction:直接乘以旋转矩阵会怎样?
期望结果
图形绕自身中心点 C 改变方向。
中心点 C 保持不动
直接使用
对所有顶点直接应用绕原点旋转。
\(P' = R(\theta)P\)
课堂预测60 s
如果 C 不在原点,直接使用 \(R(\theta)\) 后,C 还会留在原位置吗?
#sec-2-3
Geometry
旋转中心:决定“绕哪里转”
旋转不是只由角度决定,还必须明确不动点。二维平面中绕原点旋转时,默认不动点就是原点。
旋转中心
中心点 \(C=(c_x,c_y)\) 是希望保持不动的点。
旋转角
绕 C 逆时针旋转 \(\theta\)。
核心判断:如果变换后 C 改变了位置,就不是“绕 C 旋转”。
#sec-2-4
Decomposition
把绕C旋转拆成三个已知变换
我们不会重新发明一个新旋转矩阵,而是把问题转化成已经会做的“绕原点旋转”。
1. 平移 \(-C\)
把中心移到原点
→
2. 旋转 \(R(\theta)\)
绕原点旋转
→
3. 平移 \(+C\)
移回原位置
思考
这三个步骤中,哪一步是真正的“旋转”?哪两步只是为了创造旋转条件?
#sec-2-5
Geometric Decomposition
四步分解图解:绕自身中心旋转
通过“平移到原点—绕原点旋转—平移回原处”,实现绕物体自身中心点 \(P_C(c_x,c_y)\) 的旋转。
1. 起始状态
\(M_0 = I\)
图形中心位于 \(P_C\)
2. 中心移至原点
\(M_1 = T(-P_C)\)
平移量为 \((-c_x, -c_y)\)
3. 绕原点旋转
\(M_2 = R(\theta)\)
绕原点逆时针旋转 \(\theta\)
4. 平移回原位
\(M_3 = T(P_C)\)
恢复中心到 \(P_C\)
\[M = M_3 M_2 M_1 M_0 = T(P_C)\,R(\theta)\,T(-P_C)\]
#sec-2-6
Algebraic Synthesis
代数综合:绕自身中心旋转矩阵推导
将点 \(P(x,y)\) 绕中心点 \(P_C(c_x,c_y)\) 逆时针旋转 \(\theta\)
角,三步变换矩阵连乘综合为单一复合矩阵:
Step 1 · 移到原点
\[M_1 = \begin{bmatrix}1&0&-c_x\\0&1&-c_y\\0&0&1\end{bmatrix}\]
消除中心点偏移量
Step 2 · 原点旋转
\[M_2 =
\begin{bmatrix}\cos\theta&-\sin\theta&0\\\sin\theta&\cos\theta&0\\0&0&1\end{bmatrix}\]
标准绕原点逆时针旋转
Step 3 · 移回原位
\[M_3 = \begin{bmatrix}1&0&c_x\\0&1&c_y\\0&0&1\end{bmatrix}\]
正向平移恢复中心点
\[M = M_3 M_2 M_1 =
\begin{bmatrix}1&0&c_x\\0&1&c_y\\0&0&1\end{bmatrix}\begin{bmatrix}\cos\theta&-\sin\theta&0\\\sin\theta&\cos\theta&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&-c_x\\0&1&-c_y\\0&0&1\end{bmatrix}
= \begin{bmatrix}\cos\theta & -\sin\theta & c_x(1-\cos\theta)+c_y\sin\theta \\
\sin\theta & \cos\theta & c_y(1-\cos\theta)-c_x\sin\theta \\ 0 & 0 & 1\end{bmatrix}\]
#sec-2-7
AI Collaboration · Concept Building
AI先给方案:让它说清楚“为什么这样拆”
复合变换不是背公式。可以先让AI提出分解方案,再用“固定点是否保持不动”来检验方案。
协作任务
向AI提问:一个二维图形的中心点为 \(C=(c_x,c_y)\),怎样让所有顶点绕 \(C\) 逆时针旋转
\(\theta\)?请不要直接给最终矩阵,先说明每一步几何目的。
要求1
必须说明:哪一步创造“绕原点旋转”的条件。
课堂规则:AI给出分解思路,学生用几何条件和Demo验证,不直接抄结论。
#sec-2-8
Human Check
人类核验:中心点C必须保持不动
判断一个复合矩阵是否正确,最简单的测试是把中心点 \(C\) 代入。绕 \(C\) 旋转时,\(C\)
应该仍然是 \(C\)。
\[T(C)R(\theta)T(-C)C = C\]
正确思路
先把 \(C\) 移到原点,再旋转,最后移回。
\(M=T(C)R(\theta)T(-C)\)
常见错误
把平移顺序写反,中心点不再固定。
\(M=T(-C)R(\theta)T(C)\)
课堂互动90 s
任选一个简单中心点,例如 \(C=(2,0,1)^T\),代入两种矩阵,判断哪个能让 \(C\)
保持不动。
#sec-2-9
Matrix Form
绕任意中心点旋转的矩阵表达
采用列向量约定,顶点从右向左依次经历:移到原点、旋转、移回。
\[P' = T(C)\,R(\theta)\,T(-C)\,P\]
第一步
\(T(-C)P\):把旋转中心移到原点。
第二步
\(R(\theta)\):执行已知的绕原点旋转。
注意:矩阵写成 \(T(C)R(\theta)T(-C)\),但执行顺序从右往左。
#sec-2-10
Quick Check
随堂测试 1:顺序能不能换?
单选60 s
若想让图形绕中心点 \(C\) 旋转,采用列向量时正确表达式是:
A\(P'=T(-C)R(\theta)T(C)P\)
B\(P'=T(C)R(\theta)T(-C)P\)
C\(P'=R(\theta)T(C)T(-C)P\)
参考答案:B。右侧的 \(T(-C)\) 首先把中心移到原点,之后旋转,最后
\(T(C)\) 移回。
#sec-3-1
Composite Transform
复合变换:多个基本变换合成为一个矩阵
在齐次坐标中,平移、旋转和缩放都写成矩阵。因此连续执行多个变换时,可以把它们合成一个总矩阵。
\[P' = M_n\cdots M_3M_2M_1P\]
#sec-3-2
Step Monitor
不要只看最终矩阵,要看每一步状态
复合变换理解困难,通常不是因为公式难,而是因为学生看不到每一步的中间几何状态。
\(P_0=P\)
→
\(P_1=T(-C)P_0\)
→
\(P_2=R P_1\)
→
\(P_3=T(C)P_2\)
Demo观察重点:每一步顶点坐标怎样变,旋转中心在哪里。
#sec-3-3
Interactive Demo · Order Contrast
Demo:复合变换顺序对比实验
同样执行平移 \(d_x=180\) 与逆时针旋转
\(\theta=60^\circ\),变换顺序决定了几何轨迹与最终停驻位置:
顺序 A:先旋转,后平移
列向量自右向左:\(P' = T(180, 0)\,R(60^\circ)\,P\)
M = T · R
状态:就绪
· 终点:(180, 0)
顺序 B:先平移,后旋转
列向量自右向左:\(P' = R(60^\circ)\,T(180, 0)\,P\)
M = R · T
状态:就绪
· 终点:(90, 155.9)
#sec-3-4
Non-Commutative Geometry
变换顺序核心规律:非对易性与书写顺序
采用列向量约定时,右侧矩阵先作用于点。平移与旋转不满足交换律(\(T \cdot R \neq R \cdot
T\))。
几何运动机制对比
-
先转后移 \(T(d_x) R(\theta)\):
物体在原点先完成自转;随后的平移严格沿着全局坐标轴推进,位移方向不受旋转角度影响。最终中心落在
\((d_x, 0)\)。
-
先移后转 \(R(\theta) T(d_x)\):
物体先平移脱离原点到达
\((d_x, 0)\);随后的旋转以原点为心进行“大回旋(公转)”,将平移向量整体甩转
\(\theta\)。最终中心落在 \((d_x\cos\theta, d_x\sin\theta)\)!
代数推导与矩阵对比
先旋转后平移矩阵:
\[T(d_x, 0) R(\theta) = \begin{bmatrix}1 & 0 & d_x \\ 0 & 1 & 0 \\ 0 & 0 &
1\end{bmatrix} \begin{bmatrix}\cos\theta & -\sin\theta & 0 \\ \sin\theta &
\cos\theta & 0 \\ 0 & 0 & 1\end{bmatrix} = \begin{bmatrix}\cos\theta & -\sin\theta
& d_x \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1\end{bmatrix}\]
先平移后旋转矩阵:
\[R(\theta) T(d_x, 0) = \begin{bmatrix}\cos\theta & -\sin\theta & 0 \\ \sin\theta
& \cos\theta & 0 \\ 0 & 0 & 1\end{bmatrix} \begin{bmatrix}1 & 0 & d_x \\ 0 & 1 & 0
\\ 0 & 0 & 1\end{bmatrix} = \begin{bmatrix}\cos\theta & -\sin\theta &
d_x\cos\theta \\ \sin\theta & \cos\theta & d_x\sin\theta \\ 0 & 0 &
1\end{bmatrix}\]
第三列(平移量)显式不同:\(\begin{bmatrix}d_x \\ 0\end{bmatrix} \neq
\begin{bmatrix}d_x\cos\theta \\ d_x\sin\theta\end{bmatrix}\)
核心铁律:变换公式的书写顺序(自左向右)与实际几何作用顺序(自右向左)严格对偶;颠倒矩阵次序将产生截然不同的空间位置与变换结果!
#sec-3-5
AI Bug Hunt
AI Bug Hunt:矩阵顺序中的“看似合理”错误
AI常会按语言顺序写矩阵:先缩放、再旋转、最后平移,于是写成
\(SRT\)。这在列向量约定下是错误的。
协作任务
请AI判断:“模型先缩放、再旋转、最后平移,复合矩阵写成 \(SRT\)
对吗?”然后要求它明确说明采用的是列向量还是行向量约定。
先定约定
本课统一采用列向量:\(P'=MP\)。
再看作用顺序
右侧矩阵先作用,所以先缩放应在最右侧。
最后用Demo反证
在D04-03中比较 \(TRS\) 与 \(SRT\) 的中间状态。
AI容易给出“语言上顺”的答案;图形学要看数学约定和几何结果。
#sec-3-6
TRS
实例变换:从单位模型到场景对象
模型通常在自己的局部坐标系中定义。放入场景时,一般经历:缩放得到大小、旋转得到方向、平移到目标位置。
#sec-3-7
Quick Check
随堂测试 2:TRS中谁先作用?
单选60 s
若 \(M=TRS\),并采用列向量 \(P'=MP\),顶点首先经历哪个变换?
A\(T\):先平移
B\(R\):先旋转
C\(S\):先缩放
参考答案:C。右侧的 \(S\) 首先作用,之后 \(R\),最后 \(T\)。
#sec-4-1
3D Extension
从二维绕中心点,到三维绕任意轴
二维绕任意点旋转已经展示了复合变换思想。三维中更常见的问题是:点或物体绕空间中的一条任意固定轴旋转。
二维问题
固定一个点 \(C\),让图形绕它旋转。
三维问题
固定一条轴 \(L\),让点或物体绕它旋转。
思想仍然相同:把复杂旋转轴转化为熟悉的坐标轴。
#sec-4-2
Problem Formulation
三维空间绕任意轴旋转问题提出
给定空间基准点 \(P_0(x_0,y_0,z_0)\) 与轴方向单位向量 \(\mathbf{u}\),求解任意点 \(P\)
绕该轴逆时针旋转 \(\theta\) 后的新位置 \(P'\):
任意轴定义参数
- 不动基准点:\(P_0 = (x_0, y_0, z_0)\)
- 方向向量:\(\mathbf{u} = P_1 - P_0 = (u_x, u_y, u_z)\)
- 旋转角度:\(\theta\)(右手定则正方向)
化归思想
我们并不重新推导任意斜轴旋转公式,而是通过刚体变换将旋转轴对齐到已知主轴(Z轴),完成旋转后再逆向撤销复原!
#sec-4-3
Phase 1 · Step 1 ~ 3
阶段一 · 准备与对齐:将任意轴对齐到Z轴
任意轴既不经过原点,方向亦倾斜。需先将基准点移到原点,再绕坐标轴旋转两次,使其与 \(Z\)
轴完全重合:
1. 轴平移至原点
\(M_1 = T(-P_0)\)
将基准点 \(P_0\) 平移至原点
2. 绕Y轴转入YOZ
\(M_2 = R_y(-\theta_y)\)
绕 Y 轴顺时针旋转消去 X 偏斜
3. 绕X轴重合Z轴
\(M_3 = R_x(\theta_x)\)
绕 X 轴逆时针旋转对齐 Z 轴
对齐复合变换:\(A = M_3 M_2 M_1 = R_x(\theta_x)\,R_y(-\theta_y)\,T(-P_0)\)
#sec-4-4
Phase 2 · Step 4
阶段二 · 核心变换:绕Z轴执行目标旋转
当旋转轴已完全与标准坐标轴 \(Z\)
轴重合后,空间中点的旋转直接化简为已知的标准坐标轴旋转:
4. 绕 Z 轴逆时针旋转 \(\theta\)
此时轴线与 \(Z\) 轴完全一致,直接应用标准绕原点旋转矩阵:
\[M_4 = R_z(\theta) = \begin{bmatrix}\cos\theta & -\sin\theta & 0 & 0 \\
\sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1\end{bmatrix}\]
化归核心:所有前期繁复的几何对齐,都是为了在此时调用最简单、最标准的原点主轴旋转矩阵。
#sec-4-5
Phase 3 · Step 5 ~ 7
阶段三 · 逆向撤销与恢复:将旋转轴送回原位
核心旋转完成后,必须将先前的对齐操作严格按照逆序、取逆矩阵逐一撤销,恢复空间坐标基准:
5. 撤销X轴旋转
\(M_5 = R_x(-\theta_x)\)
顺时针逆转回 YOZ 平面
6. 撤销Y轴旋转
\(M_6 = R_y(\theta_y)\)
逆时针逆转恢复空间轴向
7. 平移恢复原位
\(M_7 = T(P_0)\)
正向平移恢复基准点 \(P_0\)
恢复复合变换:\(A^{-1} = M_7 M_6 M_5 = T(P_0)\,R_y(\theta_y)\,R_x(-\theta_x)\)
#sec-4-6
Matrix Chain Synthesis
三维任意轴旋转的七步矩阵链
综合全部七步变换,按照列向量“自右向左”的作用次序级联,得到完整空间复合变换矩阵:
\[M = M_7 M_6 M_5 M_4 M_3 M_2 M_1 =
T(P_0)\,R_y(\theta_y)\,R_x(-\theta_x)\,R_z(\theta)\,R_x(\theta_x)\,R_y(-\theta_y)\,T(-P_0)\]
右侧 · 先执行
对齐算子 \(A\)
\(R_x(\theta_x)R_y(-\theta_y)T(-P_0)\)
将任意轴移到原点并对齐Z轴
中间 · 核心
目标旋转 \(R_z(\theta)\)
绕标准 \(Z\) 轴转动 \(\theta\)
执行唯一的实际几何旋转
左侧 · 后执行
逆对齐算子 \(A^{-1}\)
\(T(P_0)R_y(\theta_y)R_x(-\theta_x)\)
严格按逆序逆操作恢复坐标基准
代数结构:\(M = A^{-1}\,R_z(\theta)\,A\),与二维绕中心点旋转 \(M =
T(P_C)\,R(\theta)\,T(-P_C)\) 思想完全同构!
#sec-4-7
Interactive Demo
Demo:三维复合变换与任意轴旋转实验台
分步单步调试任意轴旋转七步矩阵链,直观观察基准点平移、双轴对齐、核心旋转与逆向恢复全过程。
D04-03 · 教学仪器
HTML5 Canvas + 3D 交互实验
三维复合变换实验台 (任意轴旋转)
直观操控三维空间任意斜轴,单步调试 7 步矩阵链并同步解算 \(4\times 4\)
齐次矩阵数值,打通抽象代数与空间几何直觉。
🔹 七步矩阵链单步分解:Step 1~7
逐帧联动,直观展现轴平移对齐与坐标基准恢复
🔹 任意轴自由参数定制:自由调节不动基准点 \(P_0\)
与方向向量 \(\mathbf{u}\),实时重算
🔹 矩阵数值链同步高亮:同步输出每步初等矩阵 \(M_k\)
与累乘复合矩阵 \(M = A^{-1}R_z(\theta)A\)
课堂观察任务
3 min
带着问题单步对照矩阵链
-
轴是否经过原点?单步观察 \(M_1=T(-P_0)\) 执行后,基准点
\(P_0\) 是否恰好落在原点。
-
轴是否对齐Z轴?观察 \(M_2=R_y(-\theta_y)\) 与
\(M_3=R_x(\theta_x)\) 执行后,任意轴如何与 \(Z\) 轴完全重合。
-
核心旋转是哪一步?观察第 4 步
\(M_4=R_z(\theta)\),空间物体如何真正执行绕轴转动。
-
逆变换恢复了什么?观察 \(M_5, M_6, M_7\)
的逆序执行,坐标系基准如何原路返回初始位置。
💡
核心精髓:每一步都是简单初等矩阵,但串联相乘后就能完成任意复杂的空间旋转。
#sec-5-1
Medical Closure
回到医疗器械定位:复合变换为什么必要?
医疗场景中的器械模型通常从自己的局部坐标系出发,最终必须到达患者模型中的目标位置和目标方向。
目标点
器械入口点或定位点必须与Target Point重合。
目标方向
器械轴线需要与Target Direction一致。
复合矩阵
由平移、旋转、缩放与固定点约束共同构成。
医工闭环:数学上是矩阵相乘,图形学中是顶点变换,医学可视化中表现为器械准确对齐目标结构。
#sec-5-2
AI Collaboration · Evidence Chain
AI协作:用“证据链”完成复合变换判断
复合变换的AI协作不能停留在“问答案”。本节要求学生把AI解释、公式约定、特殊点测试和Demo观察连接成证据链。
协作任务单
请AI帮助分析一个虚拟医疗器械模型:先按比例缩放,再调整方向,最后把器械入口点对齐患者模型的目标点。要求AI给出矩阵表达,并说明每一步的几何目的。
1写清楚列向量约定 \(P'=MP\)
2检查目标点或中心点是否保持预期位置
3用一个特殊顶点手算一轮
4用D04-03逐步播放并截图记录
提交一句最终判断:AI给出的矩阵是否正确?依据是“约定 + 特殊点 +
Demo中间状态”,而不是AI的语气。
#sec-5-3
Summary
本课时小结:复合变换是“可控的组合”
本课从一个二维图形绕自身中心旋转出发,逐步建立复合变换思想,并扩展到三维任意轴和医疗器械定位。
\[\text{Prepare}\rightarrow \text{Core Transform}\rightarrow \text{Undo / Restore}\]
#sec-5-4
Exit Ticket
Exit Ticket
用一句话回答
为什么“绕自己的中心旋转”不能简单写成 \(P'=R(\theta)P\)?
选择矩阵表达式
若模型先缩放、再旋转、最后平移,采用列向量时总矩阵应写成?
A\(M=SRT\)
B\(M=TRS\)
C\(M=RST\)
参考答案:B。采用列向量时,右侧 \(S\) 首先作用,随后 \(R\),最后
\(T\)。