Group Abstract Group Abstract

Message Boards Message Boards

Imaging a rotating disk with a rolling shutter

Posted 3 years ago
POSTED BY: Erik Mahieu
14 Replies
Posted 3 years ago

Great idea to vary the revolutions per second!

We can think of rps as the z-axis and visualize in 3D:

propeller[θ_] := Sin[3θ + π/2];

With[{r = Sqrt[x^2 + y^2], θ = ArcTan[x, y]},
  RegionPlot3D[
    r <= propeller[θ - π*z*x],
    {x, -1, 1}, {y, -1, 1}, {z, 0, 2.25},
    Frame -> None,
    PlotPoints -> 50 (* change to 100 or 200 if you're brave *)
  ]
]

enter image description here

POSTED BY: Greg Hurst
Posted 3 years ago
POSTED BY: Greg Hurst
Posted 3 years ago

I think this might just be a characteristic of plotting in the complex plane. Take a look at https://community.wolfram.com/groups/-/m/t/2543358.

In these type of plots, zeros, poles, and essential singularities are illustrated quite nicely here.

enter image description here

This particular function has a zero at the origin and an essential singularity at infinity, shown by the white arrows:

f[z_?NumericQ] := Exp[I (2.25 Im[z])] z

ComplexPlot[f[z], {z, 2}, ColorFunction -> "CyclicArg"]

The essential singularity can be seen on the Riemann sphere. Below, the south pole shows the zero at the origin and the north pole shows the essential singularity at infinity.

plot = ComplexPlot[f[Tan[Im[z]/2] Exp[I*Re[z]]], {z, -π, π + π*I}, ColorFunction -> "CyclicArg", RasterSize -> 2048];

texture = ImageResize[Cases[plot, _Image, ∞][[1]], Scaled[{1, 1/2}]];

rsphere = SphericalPlot3D[1, {u, 0, π}, {v, -π, π}, Mesh -> None, 
  TextureCoordinateFunction -> ({#5, 1 - #4} &), 
  PlotStyle -> Texture[texture], Lighting -> "Neutral", Axes -> False, 
  PlotPoints -> 100, SphericalRegion -> True
];

South pole:

Show[rsphere, ViewPoint -> {-1.3, -2.4, 2.}, ViewVertical -> {0, 0, -1}]

North pole:

Show[rsphere, ViewPoint -> {1.3, 2.4, -2.}, ViewVertical -> {0, 0, 1}]

POSTED BY: Greg Hurst
Posted 3 years ago

Looks like a good entry for the "Wolfram One -liner competition"! It also solves my problem to convert any image into a "roller shutter captured" image. here is the transformation on he Wolfram logo using your code:

enter image description here

POSTED BY: Erik Mahieu

You can use the following code to transform an image in one step:

ImageAdd[ImageTransformation[img, Block[{x, y}, {x, y} = #; 
    RotationTransform[(550 - y*550)*Degree, {.5, .5}][{x, y}]] &], 
 Graphics@Disk[]]

manipulate 550 for different options.

Example:

enter image description here

Posted 3 years ago
POSTED BY: Erik Mahieu
Posted 3 years ago

Nice piece of programming! Thanks Greg for your original "rolling shutter effect" idea.

POSTED BY: Erik Mahieu
Posted 3 years ago
POSTED BY: Brad Klee

Thanks for the suggestion. You could also make a weight lifter version of the Mona Lisa (apply it on the ImageTransformation sample image) =D

We now have a collection of creative post about “Rolling Shutter”. Here is the full current list for them:

Airplane propellers imaged with a rolling shutter
https://community.wolfram.com/groups/-/m/t/2489445

Rolling Shutter III
https://community.wolfram.com/groups/-/m/t/2543358

Modeling the Rolling Shutter Effect
https://community.wolfram.com/groups/-/m/t/2809149

POSTED BY: EDITORIAL BOARD
Posted 3 years ago

Thanks for pointing that out. Should be fixed now.

POSTED BY: Greg Hurst
Posted 3 years ago
POSTED BY: c pichon
Posted 3 years ago

Can anyone prove is this related at all to modular functions?

Compare with the following from wikipedia:

enter image description here

Modular functions are not that easy to understand, so a nice proof about how they could relate to this straightforward transformation construction would make this post even more interesting! It looks within reach...

POSTED BY: Brad Klee
POSTED BY: EDITORIAL BOARD
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard