2011-04-06 9 views
2

私はPythonでゲームを作っています(自分自身でPythonを教えています)。振り子関数を追加しようとしていますが、振り子関数をプログラミングしたことがありません。 。だから私はあなたがここで私を助けることができることを願っています。どのように正確に私は振り子関数を作成するのですか?振り子効果をPythonでどのようにプログラムできますか?

+0

はあなたがより正確に少しをしたいかを説明することはできますか?あなたは、定期的に前後にスイングするものを望んでいますか、それとも他のオブジェクトと対話したいですか? –

+0

私が望むのは、プレイヤーの勢いと重力の影響を受ける、摩擦を伴う振り子です。 – IronGiraffe

+0

これは、物理的な現実にどのくらい近いかに依存します。例えば、振り子がその低い安定点の周りの低い角度で転倒したり、そのままになることがあります。たぶん、http://scienceworld.wolfram.com/physics/Pendulum.htmlのようなものを読んでいるとちょっとした助けになるかもしれません。 – schlenk

答えて

1

私はあなたが振り子関数を作成したいと言っているので、アルゴリズムが必要だと思います。少し検索した後、私はあなたのために働くことが何かを見つけた:

#!/usr/bin/env python 

def pendulum(T, n, theta0, v0, alpha): 
    """Return the motion (theta, v, t) of a pendulum.""" 
    dt = T/float(n) 
    t = linspace(0, T, n+1) 
    v = zeros(n+1) 
    theta = zeros(n+1) 
    v[0] = v0 
    theta[0] = theta0 
    for k in range(n): 
     theta[k+1] = theta[k] + dt*v[k] 
     v[k+1] = v[k] - alpha*dt*sin(theta[k+1]) 
    return theta, v, t 

from scitools.std import * 
try: 
    n = int(sys.argv[1]) 
    T = eval(sys.argv[2]) 
    v0 = eval(sys.argv[3]) 
    theta0 = eval(sys.argv[4]) 
    alpha = eval(sys.argv[5]) 
except: 
    print "usage:", sys.argv[0], "n T v0 theta0 alpha" 
    sys.exit(1) 

theta, v, t = pendulum(T, n, theta0, v0) 
plot(t, v, xlabel='t', ylabel='velocity') 
figure() 
plot(t, theta, xlabel='t', ylabel='velocity') 

ソース:vefur.simula.no/intro-programming/src/ode/pendulum.py

関連する問題