gravity implemennted
This commit is contained in:
60
body.lua
Normal file
60
body.lua
Normal file
@@ -0,0 +1,60 @@
|
||||
BodyList = {}
|
||||
Body = class(nil,{type=0})
|
||||
|
||||
function newBody(x,y,mass,color)
|
||||
local o = {}
|
||||
-- coordinates
|
||||
o.x = x
|
||||
o.y = y
|
||||
-- velocities
|
||||
o.vx = 0
|
||||
o.vy = 0
|
||||
-- accceleration
|
||||
o.ax = 0
|
||||
o.ay = 0
|
||||
-- mass
|
||||
o.mass = mass
|
||||
-- color
|
||||
o.color = color
|
||||
table.insert(BodyList,o)
|
||||
end
|
||||
|
||||
function UpdateBodiesAcceleration()
|
||||
for n, body in pairs(BodyList) do
|
||||
local ax = 0
|
||||
local ay = 0
|
||||
for o_n, other_body in pairs(BodyList) do
|
||||
if n ~= o_n then
|
||||
|
||||
local dx = other_body.x - body.x
|
||||
local dy = other_body.y - body.y
|
||||
|
||||
local d2 = dx*dx + dy*dy
|
||||
|
||||
local f =
|
||||
(CONST_G * other_body.mass) /
|
||||
d2 * math.sqrt(d2 + CONST_S)
|
||||
|
||||
ax = ax + dx * f
|
||||
ay = ay + dy * f
|
||||
end
|
||||
end
|
||||
|
||||
body.ax = ax
|
||||
body.ay = ay
|
||||
end
|
||||
end
|
||||
|
||||
function UpdateBodiesVelocity(dt)
|
||||
for _, body in pairs(BodyList) do
|
||||
body.vx = body.vx + body.ax * dt
|
||||
body.vy = body.vy + body.ay * dt
|
||||
end
|
||||
end
|
||||
|
||||
function UpdateBodiesPosition(dt)
|
||||
for _, body in pairs(BodyList) do
|
||||
body.x = body.x + body.vx * dt
|
||||
body.y = body.y + body.vy * dt
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user