vpython

visual python - это простой пакет для создания 3-мерных сцен, в том числе динамических (3D кино). Если программа выполняется в jupyter notebook, то сцена показывается в нём же; если нет - запускается браузер (или открывается новая вкладка, если он уже запущен) и сцена показывается в отдельной вкладке браузера.

In [1]:
from vpython import *

Создадим нескоько 3-мерных объектов.

In [2]:
b=box(pos=vec(0,-2,0),size=vec(4,0.5,2))
In [3]:
s=sphere(pos=vec(0,0,0),radius=0.5)
In [4]:
cl=cylinder(pos=vec(2,0,0),axis=vec(0,1,0),radius=0.5)
In [5]:
cn=cone(pos=vec(-2,0,0),axis=vec(0,1,0),radius=0.5)

Можно менять положение объектов,

In [6]:
s.pos=vec(0,-1,0)
In [7]:
cl.pos.y=2
In [8]:
cn.pos.x=-1

их цвет,

In [9]:
s.color=vec(0.8,0,0.8)
In [10]:
cl.color=color.green
In [11]:
cn.color=color.blue

материал, из которого они сделаны

In [12]:
b.texture=textures.wood
In [13]:
s.texture=textures.metal

Удалим 2 объекта.

In [14]:
cl.visible=False
del cl
In [15]:
cn.visible=False
del cn

Теперь пусть шарик прыгает. Максимальная высота центра шарика ymax, минимальная ymin, время меняется от $-1$ до 1.

In [16]:
ymax=4
ymin=b.pos.y+0.5*b.size.y+s.radius
In [17]:
def y(t):
    return ymax-(ymax-ymin)*t**2
In [18]:
N=200
dt=1/N
In [19]:
s.pos.y=ymin
In [20]:
for n in range(10):
    for k in range(2*N):
        t=-1+k*dt
        rate(100)
        s.pos.y=y(t)

rate(100) означает показывать 100 кадров в секунду (или меньше, если программа не успевает с вычислениями).