import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle, FancyArrowPatch
from matplotlib.animation import FuncAnimation
# 建立一個新圖和座標軸
fig, ax = plt.subplots()
# 設定座標軸的等比例,確保圓圈是正圓
ax.set_aspect('equal')
# 限制座標軸的範圍
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
# 繪製一個圓圈
circle = Circle((0, 0), 1, color='blue', fill=False) # 圓圈不填充
ax.add_patch(circle)
# 初始化箭頭的引數
arrow = FancyArrowPatch((0, 0), (1, 0), color='red', mutation_scale=20, arrowstyle='->', lw=3)
ax.add_patch(arrow)
# 初始化角度
angle = 0
# 更新函式,用於動畫
def update(frame):
global angle
angle += 0.05 # 每次旋轉0.05弧度
# 更新箭頭的位置
arrow.set_positions((0, 0), (np.cos(angle), np.sin(angle))) # 箭頭始終從圓心指向圓周
return arrow,
# 建立動畫
ani = FuncAnimation(fig, update, frames=np.arange(0, 360), interval=50, blit=True)
# 顯示圖形
plt.show()