@@ -252,3 +252,83 @@ public static void main(String[] args) {
252
252
253
253
}
254
254
```
255
+
256
+ #### Python
257
+
258
+ ``` Python
259
+
260
+ # KingFredrickVI
261
+
262
+
263
+ class Ball :
264
+
265
+ def __init__ (self , pos = 0 , vel = 0 , acc = 0 ):
266
+ self .pos = pos
267
+ self .vel = vel
268
+ self .acc = acc
269
+
270
+
271
+ class Simulation :
272
+
273
+ def __init__ (self , obj , dt = 0.01 ):
274
+ self .obj = obj
275
+ self .dt = dt
276
+ self .prev_pos = self .obj.pos
277
+
278
+ def run (self ):
279
+ self .time = 0
280
+
281
+ while self .obj.pos > 0 :
282
+ self .time += self .dt
283
+ self .step()
284
+
285
+ def step (self ):
286
+ pass
287
+
288
+
289
+ class Verlet (Simulation ):
290
+
291
+ def step (self ):
292
+ temp_pos = self .obj.pos
293
+ self .obj.pos = self .obj.pos * 2 - self .prev_pos + self .obj.acc * self .dt * self .dt
294
+ self .prev_pos = temp_pos
295
+
296
+
297
+ class Stormer_Verlet (Simulation ):
298
+
299
+ def step (self ):
300
+ temp_pos = self .obj.pos
301
+ self .obj.pos = self .obj.pos * 2 - self .prev_pos + self .obj.acc * self .dt * self .dt
302
+ self .prev_pos = temp_pos
303
+
304
+ self .obj.vel += self .obj.acc * self .dt
305
+
306
+
307
+ class Velocity_Verlet (Simulation ):
308
+
309
+ def step (self ):
310
+ self .obj.pos += self .obj.vel * self .dt + 0.5 * self .obj.acc * self .dt * self .dt
311
+ self .obj.vel += self .obj.acc * self .dt
312
+
313
+
314
+ def main ():
315
+ sim = Verlet(Ball(pos = 5.0 , acc = - 10 ))
316
+ sim.run()
317
+
318
+ print " Verlet:" , sim.time
319
+
320
+ sim = Stormer_Verlet(Ball(pos = 5.0 , acc = - 10 ))
321
+ sim.run()
322
+
323
+ print " Stormer Verlet:" , sim.time
324
+
325
+ sim = Velocity_Verlet(Ball(pos = 5.0 , acc = - 10 ))
326
+ sim.run()
327
+
328
+ print " Velocity Verlet:" , sim.time
329
+
330
+
331
+ if __name__ == " __main__" :
332
+ main()
333
+
334
+ ```
0 commit comments