1234567891011121314151617181920212223242526272829303132333435363738394041 |
- """The Lorenz attractor is a set of chaotic solutions of
- a particular system of ordinary differential equations"""
- from vedo import *
- p = (25, -10, -7) # starting point (initial condition)
- dt = 0.01 # time step
- # Define the ODE system to integrate (Lorenz equations)
- pts, vel = [], []
- for t in np.arange(0, 20, dt):
- x, y, z = p
- v = np.array([-8/3*x+y*z, -10*(y-z), -y*x+28*y-z])
- p = p + v * dt
- pts.append(p)
- vel.append(mag(v))
- # Plot the trajectory in 3D space
- line = Line(pts).lw(2)
- line.cmap("winter", vel).add_scalarbar("speed")
- line.add_shadow("x", 3, alpha=0.2)
- line.add_shadow("z", -25, alpha=0.2)
- pt = Point(pts[0]).color("red4").ps(12)
- pt.add_trail(lw=4)
- pt.add_shadow("x", 3, alpha=0.5)
- pt.trail.add_shadow("x", 3, alpha=0.5)
- pt.trail.add_shadow("z",-25, alpha=0.5)
- def loop_func(event): # move the point
- if len(pts) > 0:
- pos = pts.pop(0)
- pt.pos(pos)
- pt.update_trail()
- pt.update_shadows()
- plt.render()
- plt = Plotter(axes=dict(xygrid=False))
- plt.add_callback("timer", loop_func)
- plt.timer_callback("start")
- plt.show(line, pt, __doc__, viewup="z")
- plt.close()
|