Sürükleme veya rüzgar için kapalı bir formun olup olmadığından emin değilim, ancak adım adım bir şekilde simüle etmek oldukça kolaydır (tüm fizik kütüphanelerinin yaptığı gibi):
başlangıç durumunuzu ayarlayın:
x , y, vx, vy( İçin t = 0 )
güncelleme konumu:
x = x + ( vx× dt )y= x + ( vy× dt )
(burada dt, son güncellemeden bu yana geçen süredir, diğer bir deyişle delta zamanı)
Bu hız yardımcılarını hesaplayın:
v2| v |= ( vx)2+ ( vy)2= v2--√
(burada uzunluğunu temsil v )| v |v
sürükleme kuvvetini hesapla:
fdr a g= c × v2
(burada c sürtünme katsayısı küçüktür! )
kuvvet biriktirmek:
fxfy= ( - fdr a g× vx| v |)= ( - fdr a g× vy| v |) +(-gX m bir s s )
(burada golf topunuzun kütlesi)m bir s ler
güncelleme hızı:
vx= vx+ fx× dtm bir s lervy= vy+ fy× dtm bir s ler
Temel olarak Euler'in bu fiziğe yaklaşma yöntemi .
Yorumlarda istendiği gibi simülasyon nasıl biraz daha:
xyvxvy= 0= 0= v0× c o s ( θ )= v0× s i n ( θ )
Temelde, t'nin her oluşumunun 0 ile değiştirildiği temel yörünge formülünüzle aynıdır.
KE= 0,5 m ( V2)tv2
PE= m × g× y
( x , y)t1t = 0t = t1
( x , y)t1t2t1< t2t1t2
Sözde kodu:
simulate(v0, theta, t1)
dt = 0.1
x = 0
y = 0
vx = v0 * cos(theta)
vy = v0 * sin(theta)
for (t = 0; t < t1; t += dt)
x += vx * dt
y += vy * dt
v_squared = vx * vx + vy * vy
v_length = sqrt(v_squared)
f_drag = c * v_squared
f_grav = g * mass
f_x = (-f_drag * vx / v_length)
f_y = (-f_drag * vy / v_length) + (-f_grav)
v_x += f_x * dt / mass
v_y += f_y * dt / mass
end for
return x, y
end simulate