🎲 3D立方体几何变换
单位立方体在三维空间中的各种仿射变换
变换矩阵
M = [
[ 1.00, 0.00, 0.00]
[ 0.00, 1.00, 0.00]
[ 0.00, 0.00, 1.00]
]
🔄 刚体变换
平移和旋转保持距离、角度不变
📐 缩放
改变大小,保持形状(等比)或改变形状(非等比)
🪞 镜像
关于坐标平面翻转,改变手性
📊 投影
降维到平面或直线,信息压缩
四视图:工程制图标准观察法
3D透视 + xy俯视 + xz侧视 + yz正视
3D透视 (elev=35°, azim=35°)
xy俯视 (elev=90°)
xz侧视 (elev=0°, azim=-90°)
yz正视 (elev=0°, azim=0°)
💡 旋转顺序的重要性
矩阵不可交换:Rx · Ry ≠ Ry · Rx
• Data @ RxT @ RyT 表示先绕x旋转,再绕y旋转
• 改变旋转顺序,最终姿态完全不同
• 欧拉角定理:任意3D旋转可分解为三次轴旋转
Python代码:
fig, axes = plt.subplots(2, 2, figsize=(10, 10),
subplot_kw={'projection': '3d'})
# 四个视角
views = [(35, 35), (90, -90), (0, -90), (0, 0)]
for ax, (elev, azim) in zip(axes.flat, views):
ax.scatter(X, Y, Z, c=colors)
ax.view_init(elev=elev, azim=azim)
ax.set_proj_type('ortho')单位球体变换:完美对称性的几何展示
等比缩放保持球形,非等比变为椭球,投影变为椭圆
🎯 椭球方程
(x/a)² + (y/b)² + (z/c)² = 1
a, b, c是三个半轴长度
📊 应用
• 多元高斯分布的等密度面
• PCA降维的几何理解
• 协方差矩阵可视化
Python代码:
# 生成单位球 theta = np.linspace(0, np.pi, 101) phi = np.linspace(0, 2*np.pi, 101) Theta, Phi = np.meshgrid(theta, phi) x = np.sin(Theta) * np.cos(Phi) y = np.sin(Theta) * np.sin(Phi) z = np.cos(Theta) # 应用变换矩阵 points = np.vstack([x.flatten(), y.flatten(), z.flatten()]) transformed = M @ points ax.plot_surface(X, Y, Z, cmap='RdYlBu')