To make the NY3D display work, we need to interleave the left and right images on the display and also to create a corresponding set of opaque/clear stripes on the optical shutter. But how do we figure out where the stripes should go? The key is to keep drawing crossed lines: |
The two eye positions:
L = (Lx,Ly) Shutter location: y=1 y=0 |
Also, try clicking between the two black lines.
|
Fractional distance of shutter from display screen to p:
py-1 = (1 - 0) / (py - 0)Location on shutter between (x,0) and p:
fp(x) = px py-1 + x (1 - py-1)Location on display screen between (x,1) and p :
fp-1(x) = (x - px py-1)/(1 - py-1)
Line 1:
(xn ,0)
>
(xn,1)
>
R
Line 2:
(xn+1,0)
<
(xn,1)
<
L
xn+1 = fL-1(fR(xn))which expands out to:
(Rx Ry-1 + x (1-Ry-1) - Lx Ly-1)/(1-Ly-1)Express this as a linear equation in xn:
xn+1 = A xn + B
A = x (1 - Ry-1)/(1 - Ly-1)Sequence of display stripe locations:
B = (Rx Ry-1 - Lx Ly-1)/(1 - Ly-1)
x0 = 0
x1 = B
x2 = AB + B
x3 = A2B + AB + B
:
:
xn = B (An-1 + ... + A + 1)
Assume the two eye positions are: p = (px,py) and q = (qx,qy), that the display screen is on the line y=0, and that the shutter is on the line y=1.
Given a location (x,0) on the display screen, we find the line-of-sight location fp(x) on the shutter that lies between display screen location (x,0) and eye position p by linear interpolation:
fp(x) = px py-1 + x (1 - py-1)Given a location (x,1) on the shutter, we can find the corresponding line-of-sight location on the display screen by inverting the above equation:
fp-1(x) = (x - px py-1)/(1 - py-1)Therefore, given a location xn on the display screen that is visible through a clear stripe on the shutter from both p and q, the next such location is given first by finding the location on the shutter fp(xn) in the line-of-sight from p, and then finding the corresponding location on the display screen which is in the line-of-sight from q:
xn+1 = fq-1(fp(xn))which expands out to:
(px py-1 + x (1 - py-1) - qx qy-1)/(1 - qy-1)This can be expressed as a linear equation xn+1 = A xn + B, where:
A = x (1 - py-1)/(1 - qy-1)The nth location in the sequence of stripe locations on the display screen can be calculated by iterating xn+1 = A xn + B:
B = (px py-1 - qx qy-1)/(1 - qy-1)
x0 = 0 x1 = B x2 = AB + B x3 = A2B + AB + Bxn = B (An-1 + ... + A + 1)