黄河边儿的回答
你说的“看起来是弯的”,应该是看的是照片吧,就像下面这样,左图是静止时候螺旋桨的照片,右边是飞机起飞后高速旋转的螺旋桨的照片,右图相对于左图明显弯曲。
肉眼如果直接观看高速旋转的螺旋桨的话,看到的应该是一片模糊。
螺旋桨旋转的时候,每一个桨叶具有相同的角速度 ,桨叶不同位置的速度不同,满足 , 是桨叶距离中心轴的距离,所以桨叶远端的转动速度会很快,对应的桨叶的形变也会更加明显。
但是,照片上的螺旋桨出现扭曲或者大幅度的弯曲,并不是因为螺旋桨在高速旋转下,远端发生形变导致的,因为这种形变非常小。真正的原因,是照相机的采样或者曝光方式导致的。
大家买相机或者手机的时候,特别关注的一个参数就是像素,像素越高,越清楚。现在主流的像素都在千万级别,甚至有的相机像素达到了上亿。对高像素的追求,极大促进了相机曝光方式的改进。
为了提供高像素,目前绝大多数的照相机上都是采用的电子断流快门,因为这种快门的速度很高,大概在万分之一秒的量级,而且快门的体积很小(这是由于曝光方式完全由传感器完成,不需要任何的机械部件进行物理遮光)。
这种主流快门的工作方式有两种,全局快门和卷帘快门。卷帘快门是主流的工作方式。
先看全局快门吧,它的工作原理是所有像素在同一时间接受光源,并同时将光信号转换为电子信号。这种方式在拍摄高速运动物体时效果好。但是,由于全局快门要求每个像素同时进行数据转换,增加了像素采光元件的数量,从而导致单个像素的体积变大,单位面积内的像素数量减少[1],所以,全局快门的像素不高。
为了追求更高的像素,大多数手机和相机选择了卷帘快门。卷帘快门不会一次性曝光整个传感器,而是按顺序逐行扫描。这种方式目前是最常见的曝光方法。像下图一样[2]
说到这,大家应该能理解为什么螺旋桨变弯了,因为螺旋桨的远端速度和近端速度差很大( ),而用卷帘快门的相机进行拍摄的时候,就会出现下图的样子,图中红色线条代表的是螺旋桨,蓝线代表的是卷帘快门逐行采样时候的采样结果,可见螺旋桨的确由于逐行扫描的方式,在最终的成像结果中变弯曲了。
再看另外一个例子吧[3],卷帘快门逐行取样的方式难以对快速运动的物体准确成像。
好了,就这样,希望把这个问题解释清楚了。
评论区 @张朝 @苑少坡,有人感兴趣螺旋桨的动画,这个可以用Matlab来制作,这里给出螺旋桨旋转和快门采样的matlab代码,感兴趣的可以玩一玩。
t = linspace(0, 2*pi, 1000); % 参数 t 从 0 到 2*pi
r = sin(4 * t); % 极径函数 r = sin(3t)
x = r .* cos(t);
y = r .* sin(t);
% 画图
figure;
h = plot(x, y, 'r', 'LineWidth', 1.5);
axis equal;
grid on;
xlabel('X');
ylabel('Y');
title('旋转的螺旋桨形状');
% 动画循环
for theta = linspace(0, 2*pi, 360)
% 旋转矩阵
R = [cos(theta) -sin(theta); sin(theta) cos(theta)];
% 旋转坐标
xy_rotated = R * [x; y];
% 螺旋桨+直线
plot(xy_rotated(1, :),xy_rotated(2, :),'r',linspace(-1,1,1000),ones(1000,1)*sin(theta-pi/2),'k');
grid minor;
axis ([-1,1,-1,1])
% 刷新图形
drawnow;
end