Tkinterを使用してバネの伸縮アニメーションを実装したサンプルコードを示します。
import tkinter as tk
# ウィンドウの設定
window = tk.Tk()
window.title("バネのアニメーション")
# キャンバスの設定
canvas = tk.Canvas(window, width=400, height=300)
canvas.pack()
# バネの初期位置とパラメータ
x1, y1, x2, y2 = 100, 150, 300, 150
spring_length = 100
spring_constant = 0.05
# アニメーションの更新関数
def update_animation():
global x1, y1, x2, y2
# バネの伸縮
dx = x2 - x1
dy = y2 - y1
distance = (dx**2 + dy**2)**0.5
spring_force = spring_constant * (distance - spring_length)
dx_norm = dx / distance
dy_norm = dy / distance
x1 += spring_force * dx_norm
y1 += spring_force * dy_norm
# キャンバスの更新
canvas.delete("spring")
canvas.create_line(x1, y1, x2, y2, fill="blue", width=5, tags="spring")
canvas.after(10, update_animation)
# 初期表示
canvas.create_line(x1, y1, x2, y2, fill="blue", width=5, tags="spring")
# アニメーション開始
update_animation()
window.mainloop()
このコードでは、Tkinterを使用してウィンドウを作成し、バネのアニメーションをキャンバス上に描画します。update_animation
関数内で、バネの伸縮を計算し、キャンバス上の線をアニメーションとして更新します。アニメーションは10ミリ秒ごとに更新されます。
このコードを実行すると、ウィンドウ上にバネが伸び縮みするアニメーションが表示されます。バネの振る舞いをカスタマイズするために、spring_length
やspring_constant
などのパラメータを調整できます。