导入
高级NumPy用法简介
介绍高级 NumPy 和 Tkinter 的使用。
如果你曾看过飞机螺旋桨或直升机旋翼的视频,可能会注意到旋转的旋翼看起来有些奇怪。它并不像一个实心圆盘,有时甚至看起来完全静止不动,有时则像一条下垂的香蕉或枯萎的花朵。如果需要更直观的视觉效果,可以搜索“螺旋桨相机效应”。

A better visual
这种现象被称为快门效应,原因是相机快门本质上是一条在屏幕上向下移动的扫描线,它只记录被扫到的部分。由于螺旋桨的旋转速度远高于扫描线的移动速度,因此螺旋桨在图像中呈现出扭曲变形的样子,这是由两者速度不匹配造成的。你可以使用 Tkinter、Python 图像处理库 PIL(或 Pillow)以及我们熟悉的 Numpy 来模拟一个旋转的螺旋桨和移动的扫描线,实时展示相机所捕捉到的画面。
你的程序将利用 Numpy 创建表示移动扫描线和旋转螺旋桨的数组,使用 Pillow 将数组转换为图像,并通过 Tkinter 将图像显示出来。程序设计允许你输入 2 到 8 个叶片的螺旋桨,观察不同叶片数量下快门效应的变化。本程序基于 GitHub 用户 dafarry 编写的原始程序,原程序可参考 [1]。该程序涉及非常高级的 Numpy 使用技巧,包括复杂的几何运算。虽然我们会尽可能提供解释,但某些部分可能仍难以完全理解。这正是学习过程的一部分!本章旨在展示高级 Python 技术的实际应用。