I watched the Youtube video
Rolling Shutter Explained on the Cheap
by Matt Parker where he shows that you don't need to visit an actual
aeroplane with expensive slow-motion cameras to demonstrate the rolling shutter
effect on aircraft propellors. He shows that you can do it with a model
propellor connected to an electric drill — then some Python code to
process the video to emulate the rolling shutter effect and to add
a green line scanning down the image.
Well, I thought, let's do the whole thing in Python.
Here's 30 lines of Python, using the Numpy and Pillow libraries and
ffmpeg to create the video:
Here's another version that uses Tkinter to display the video to your
screen in real time rather than making a video. It needs a fast(ish) PC to
display smoothly:
If you have a complex plane Z, and plot the absolute value |Z| in the third dimension, what do you have? The further from the origin, the greater its height, so it's a cone.
Cut a section through the cone at a height of H: |Z| = H and you have a circle.
And |Z| < H is a solid disk in "boolean" terms.
A cone offset from the origin by A is |Z - A| .
Consider adding the heights of two cones together then cut through them:
|Z - A| + |Z - B| < H ...it's perhaps not entirely obvious that they combine to form a solid ellipse, but they do.
Put the focus B back at the origin... |Z - A| + |Z| < H
Then spin the focus A around the origin in 6 steps and you have 6 ellipses.
Combine them with boolean logic and you have a propeller.
I watched the Youtube video Rolling Shutter Explained on the Cheap by Matt Parker where he shows that you don't need to visit an actual aeroplane with expensive slow-motion cameras to demonstrate the rolling shutter effect on aircraft propellors. He shows that you can do it with a model propellor connected to an electric drill — then some Python code to process the video to emulate the rolling shutter effect and to add a green line scanning down the image.
Well, I thought, let's do the whole thing in Python.
Here's 30 lines of Python, using the Numpy and Pillow libraries and ffmpeg to create the video:
https://github.com/dafarry/rolling-shutter-effect-python/blob/master/rolling-shutter-makevideo.py
Here's another version that uses Tkinter to display the video to your screen in real time rather than making a video. It needs a fast(ish) PC to display smoothly:
https://github.com/dafarry/rolling-shutter-effect-python/blob/master/rolling-shutter-tkinter.py
[deleted] 1 points · Oct 2019
May you please explain the math on this? Especially the use of complex numbers for the propeller
Swipecat [OP] 3 points · Oct 2019
If you have a complex plane Z, and plot the absolute value
|Z|in the third dimension, what do you have? The further from the origin, the greater its height, so it's a cone.Cut a section through the cone at a height of H:
|Z| = Hand you have a circle.And
|Z| < His a solid disk in "boolean" terms.A cone offset from the origin by A is
|Z - A|.Consider adding the heights of two cones together then cut through them:
|Z - A| + |Z - B| < H...it's perhaps not entirely obvious that they combine to form a solid ellipse, but they do.Put the focus B back at the origin...
|Z - A| + |Z| < HThen spin the focus A around the origin in 6 steps and you have 6 ellipses.
Combine them with boolean logic and you have a propeller.
[deleted] 1 points · Oct 2019
Thanks!