![Python编程与3D物理学仿真(视频版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/912/43737912/b_43737912.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3.2 引入速度概念修改位置属性
在物理学中,位置变化的快慢可以用速度来描述。这里首先定义一个速度向量,该向量一般是<vx,vy,vz>的形式,我们也可以定义一个某方向的速率标量。比如定义ball.velocity=vector(10,0,0)和velocity=10的效果可能是一样的。首先看以下程序段:
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_24_2.jpg?sign=1738886438-EbPsU0mDGcqpO14wjOSbNXpdDiDOjpwo-0-eb61d315a4fb640fc7e75b8fd0f83153)
本段程序第一行加载了3D模块,第二行在坐标(-5,0,0)处建立了一个蓝色的半径为0.5的小球,第三行定义了速度矢量,第四行到第六行根据“末位置=初位置+速度×时间”对位置信息进行更新。
执行程序,只发现小球在最右侧位置,没有观察到小球的移动,这主要是由于程序执行过快的原因。
在Python中,我们经常用dt描述时间的微小变化量,这里定义dt=0.1,则上述程序的后三行变成如下语句:
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_25_1.jpg?sign=1738886438-e25JEejRzVXAmmdg0gAkw3lDEPeMW2Qr-0-b7d331278137d8dc05aa4578bc7bcc8e)
为能够观察出小球移动的间隔效果,我们人为地放慢程序运行速度,在每个小球位置之间使程序人为强制暂停1秒钟,为此要引入time模块,并用time.sleep(1)的语句告诉程序暂停1秒钟。整个程序修改如下(完整的程序代码见“源代码\1-3-2.py”):
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_25_2.jpg?sign=1738886438-nhdsE52TaU4DCzOQEbH7yq6XFsMws035-0-c877a3f3ad2815084aac9873d6808271)
运行程序后发现:小球出现后,每隔1秒钟,小球才会移动到下一个位置。