绘制三维直角坐标系、网格和向量的线性变换的动画python代码
时间: 2024-05-08 10:22:06 浏览: 126
以下是使用 Matplotlib 和 mpl_toolkits.mplot3d 库绘制三维直角坐标系、网格和向量的线性变换的动画 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 定义三维坐标系
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制三维网格
X, Y, Z = np.meshgrid(np.arange(-5, 5, 1),
np.arange(-5, 5, 1),
np.arange(-5, 5, 1))
ax.scatter(X, Y, Z, color='gray', alpha=0.1)
# 定义初始向量
v = np.array([1, 2, 3])
# 定义线性变换矩阵
A = np.array([[1, 0, 0],
[0, 2, 0],
[0, 0, 0.5]])
# 定义时间轴
t = np.linspace(0, 1, 50)
# 循环绘制向量的线性变换动画
for i in range(len(t)):
# 当前时间对应的线性变换矩阵
At = np.linalg.matrix_power(A, t[i])
# 变换后的向量
vt = np.dot(At, v)
# 绘制向量
ax.quiver([0], [0], [0],
[vt[0]], [vt[1]], [vt[2]],
color='red', arrow_length_ratio=0.1)
# 设置坐标轴范围
ax.set_xlim([-5, 5])
ax.set_ylim([-5, 5])
ax.set_zlim([-5, 5])
# 清除上一帧的图像
plt.cla()
# 绘制三维坐标系
ax.plot([0, 1], [0, 0], [0, 0], color='black')
ax.plot([0, 0], [0, 1], [0, 0], color='black')
ax.plot([0, 0], [0, 0], [0, 1], color='black')
# 绘制三维网格
ax.scatter(X, Y, Z, color='gray', alpha=0.1)
# 绘制向量
ax.quiver([0], [0], [0],
[vt[0]], [vt[1]], [vt[2]],
color='red', arrow_length_ratio=0.1)
# 显示当前帧
plt.pause(0.1)
```
运行以上代码,即可得到绘制三维直角坐标系、网格和向量的线性变换的动画。
阅读全文