# Form a surface by joining two lines. # from vtkplotter import Plotter, arange, sin, cos vp = Plotter() l1 = [ [sin(x), cos(x), x/2] for x in arange(0,9, .1)] l2 = [ [sin(x)+0.2, cos(x)+x/15, x/2] for x in arange(0,9, .1)] vp.tube(l1, c='g', r=0.02) vp.tube(l2, c='b', r=0.02) vp.ribbon(l1, l2, alpha=.2, res=(200,5), legend='ruled surf').wire(1) vp.show(viewup='z')
vp = Plotter(interactive=0, axes=2, verbose=0) vp.xtitle = '' vp.ytitle = 'Psi^2(x,t)' vp.ztitle = '' bck = vp.load('data/images/schrod.png').scale(0.012).pos([0, 0, -.5]) barrier = vp.line(list(zip(x, V * 15)), c='dr', lw=3) lines = [] for j in range(200): for i in range(500): Psi += d_dt(Psi) * dt # integrate for a while A = np.real(Psi * np.conj(Psi)) * 1.5 # psi squared, probability(x) coords = list(zip(x, A, [0] * len(x))) Aline = vp.tube(coords, c='db', r=.08) vp.show([Aline, barrier, bck]) lines.append(Aline) # now show the same lines along z representing time vp.clear() vp.camera.Elevation(20) vp.camera.Azimuth(20) for i, l in enumerate(lines): p = [0, 0, 20 * i / len(lines)] # shift along z vp.render([l.pos(p), barrier.clone().pos(p)], resetcam=True) vp.show(interactive=1)