2023年10月27日金曜日

バネの伸縮アニメーション

 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_lengthspring_constantなどのパラメータを調整できます。




0 件のコメント:

コメントを投稿