Untitled
unknown
plain_text
a year ago
2.4 kB
7
Indexable
Web VPython 3.2 scene.background = color.white ground = box(pos=vec(0,0.2,0), size = vec(3,0.02,0.4), color = color.green) h = 5 g = 9.81 v0 = 4 alpha = 135 * pi/180 x0 = -1 m = 1 offset = 0 ball = sphere(pos=vec(x0,h,0), mass = m, angle = alpha, radius = 0.01, color = color.red, make_trail = True) ball.v = v0*vec(cos(ball.angle), sin(ball.angle), 0) ball.p = ball.mass * ball.v stone = sphere(pos=vec(x0,h,0), mass = m, angle = alpha, radius = 0.01, color = color.blue, make_trail = True) stone.v = v0*vec(cos(stone.angle), sin(stone.angle), 0) stone.p = stone.mass * stone.v stone2 = sphere(pos=vec(x0,h,offset), mass = m, angle = alpha, radius = 0.01, color = color.cyan, make_trail = True) w_graph = graph(title = "Work", xtitle = "t", ytitle = "Joules") k_graph = graph(title = "Change in Kinetic Energy", xtitle = "t", ytitle = "k(t)") w_b_x = gcurve(graph = w_graph, color = color.red) w_b_y = gcurve(graph = w_graph, color = color.orange) w_s_x = gcurve(graph = w_graph, color = color.blue) w_s_y = gcurve(graph = w_graph, color = color.cyan) k_b_x = gcurve(graph = k_graph, color = color.red) k_b_y = gcurve(graph = k_graph, color = color.orange) k_s_x = gcurve(graph = k_graph, color = color.blue) k_s_y = gcurve(graph = k_graph, color = color.cyan) myrate = 200 t = 0 dt = 0.001 work_ball = 0 work_stone = 0 K_ball = 1/2 * ball.mass*mag2(ball.v) K_stone = 1/2 * ball.stone*mag2(stone.v) K_ball_old = 1/2 * ball.mass*mag2(ball.v) K_stone_old = 1/2 * ball.stone*mag2(stone.v) scene.waitfor("click") while stone.pos.y > 0: rate(myrate) F_ball = vec(0,0,0) ball.p = ball.p + F_ball * dt ball.v = ball.p/ball.mass ball.pos = ball.pos + ball.v * dt F_stone = -stone.mass * g * vec(0,1,0) stone.p = stone.p + F_stone * dt stone.v = stone.p/stone.mass stone.pos = stone.pos + stone.v * dt stone2.pos = vec(x0 + v0 * cos(alpha)*t, h + v0 * sin(alpha) * t - 0.5 * g * t**2, offset) delta_K_ball = K_ball-K_ball_old delta_K_stone = K_stone-K_stone_old w_b_x.plot(pos=(t, work_ball)) w_b_y.plot(pos=(t, work_ball)) k_b_x.plot(pos=(t, K_ball)) k_b_y.plot(pos=(t, K_ball)) w_s_x.plot(pos=(t, work_stone)) w_s_y.plot(pos=(t, work_stone)) k_s_x.plot(pos=(t, K_stone)) k_s_y.plot(pos=(t, K_stone)) t = t + dt
Editor is loading...
Leave a Comment