Imagine a planetary gear system as below:

PGS model

There are two curved screens attached to a shaft of the planet (little purple gear). The curves are logarithmic spirals. So they are rotating with the rotation with the planet gear. The rotation frequencies of Ring-Sun-Planet gears can be arranged very easily. So I coded a mathematica script for the simulation as below:

rotateparametric[parfunc_, fixedpoint_, angle_] := 
  RotationMatrix[angle].(parfunc - fixedpoint) + fixedpoint;
viewAngle = Pi/3;
ctrVolume = {(Exp[(Pi - viewAngle)*0.5] + 1)/2, 0};
radiusVolume = (Exp[(Pi - viewAngle)*0.5] - 1)/2;
radiusRing = (Exp[(Pi - viewAngle)*0.5] + 1)/2;
FPS = 720;
fOrbit = 5;
fPlanet = 9; 
radiusEquation = Exp[t*0.5];
planetRotation = 
 rotateparametric[{radiusEquation*Cos[t], radiusEquation*Sin[t]}, {0, 
   0}, -2*Pi*i*fPlanet/FPS]
mirrorPlanetRotation = 
 rotateparametric[{radiusEquation*Cos[t], radiusEquation*Sin[t]}, {0, 
   0}, Pi - 2*Pi*i*fPlanet/FPS]
orbitRotation = 
 rotateparametric[planetRotation, ctrVolume, +2*Pi*i*fOrbit/FPS]
mirrorOrbitRotation = 
 rotateparametric[planetRotation, ctrVolume, Pi + 2*Pi*i*fOrbit/FPS]
TheCurves = Evaluate@Table[orbitRotation, {i, 1, FPS}];
TheMirrorCurves = Evaluate@Table[mirrorOrbitRotation, {i, 1, FPS}];
pp = ParametricPlot[{TheCurves, TheMirrorCurves}, {t, 0, 
   Pi - viewAngle}, 
  RegionFunction -> (Norm[{#, #2} - ctrVolume] <= radiusVolume &), 
  PlotRange -> All]

I can set the rotation frequency of the planet gear (Hence the screens) and the sun gear in order as, fPlanet and fOrbit. Also another parameter is introduced here as FPS and yes it means frame per second. The logic is, if the FPS of the screens is 100 Hz, then the screens will be visible for every 10 miliseconds. If FPS was 200Hz, then the screen would be visible for every 5 miliseconds.

You know that a screen emits light in the direction in front of it. And it has a viewing angle (typically 120 degrees). A 100 Hz screen emits light 100 times in a second. So what I need to achieve is the cover as many directions as possible in second for a given FPS.

For example, if I set the parameters as below:

FPS = 120*3; fPlanet = 3; fOrbit = 10;

Then the locations of the screen in the holographic volume (Which is shown here as the circle with the dotted blue line) for each '1/FPS' seconds is drawed like below:

360 FPS

I should explain what I need in more detail. Yo see, this is a volumetric swept type 3D display device. Since it is a volumetric swept, the constructed 3D image within the holographic volume is meant to be viewed from every angle around it. So it is important that each voxel in the volume has 360 degrees visibility.

enter image description here

This is called voxel which is basically a simple discrete boundary in square shape. In this voxel, you see the screens different locations based on different refreshing times.


As you can see, this voxel cavers 360 degree visibility. However, this is not the case for each voxels in the volume. you can clearly spot some big gaps in between the curves. And if the voxel size is not big enough, those gaps are not visible to the viewers. And the ratio of gaps change with the change in the parameters. These are the examples:

FPS: 720 fPlanet: 9 fOrbit: 5

FPS 720 Fp 9 Fo 5

FPS: 720 fPlanet: 4 fOrbit: 5

FPS 720 fP 4 fO 5

FPS: 720 fPlanet: 36 fOrbit: 12

FPS 720 fP 36 fO 12

So, this is my question: How can I calculate fOrbit and fPlanet for maximum visibility? How can I show it with equations? Optimum fOrbit and fPlanet frequencies for maximum visibility?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.