def advance(self, dt, padding):
bodies = self.bodies
def calc_vel(i):
b1 = bodies[i]
for b2 in bodies:
d_pos = b1.pos.sub(b2.pos)
distance = d_pos.length() + padding
mag = dt / math.pow(distance, 3)
b1.vel = b1.vel.sub(d_pos.scale(b2.mass).scale(mag))
gpumap(calc_vel, self.indices)
def update(body):
body.pos = body.pos.add(body.vel.scale(dt))
gpumap(update, bodies)
评论列表
文章目录