Spel7: Planetsystem

newton-kimdir                                      Om Newton och Newtons ekvationer.

Vi skriver datorprogram för lösning av Newton’s rörelseekvationer, med användning av 2d vektorn vec2() och tabeller för position, hastighet och acceleration

  • pos = pos +hast*dt,
  • hast = vel + acc*dt
  • acc = kraft/massa

där kraften mellan två kroppar av massa1 och massa2 med position pos1 och pos2 med avstånd r, är given av

  • kraft = (pos1 -pos2)*massa1*massa2/r^3.

Vi simulerar olika planetsystem med olika startvärden för position och hastighet  och då speciellt vårt eget med sol-jord-måne + övriga planeter. Jfr med detta. Jämför med Mechanics1 på App Store.

 

Template 1: (Följ planeters rörelse under ömsesidig gravitation och här i 3d)

function setup()
I=20

pos = {}
vel = {}
acc= {}
force = {}
m={}
for i=1,I do
pos[i] = vec2(0,0)
vel[i] = vec2(0,0)
acc[i] = vec2(0,0)
force[i] = vec2(0,0)
m[i]= 1/i
end

print(“Planet”)
print(“force~1/r^2”)
print(“acc=force/mass”)
print(“vel=vel+acc*dt”)
print(“pos=pos+vel*dt”)
dt =0.001
for i=1,I do
pos[i]=vec2(math.random(200,400),math.random(300,600))
vel[i]=vec2(math.random(-100,100),math.random(-100,100))
m[i] = math.random(1,100)
end

end

function draw()

font(“AmericanTypewriter-Condensed”)
fontSize(30)
fill(0, 22, 255, 255)
text(“Motion-Force: Newton’s 2nd Law”,250, 800)
text(“force = mass x acceleration, f = m x a”,250, 750)
text(“acc=force/mass”,250, 700)
text(“vel=vel+acc*dt”,250, 650)
text(“pos=pos+vel*dt”,250, 600)
stroke(43, 203, 22, 108)
strokeWidth(1)
for i=1,I do
force[i]=vec2(0,0)
for j=1,I do
r= (pos[i]-pos[j]):len()
force[i]=force[i]-(1000000/(r+10)^3)*(pos[i]-pos[j])
end
acc[i] = force[i]
vel[i]=vel[i]+acc[i]*dt
pos[i]=pos[i]+vel[i]*dt
end
fill(42, 0, 255, 255)
for i=1,I do
ellipse(pos[i].x,pos[i].y,10,10)
end
end

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s