Dynamic Approximation of Static Quantities (Visual Depth Perception 14)

Manipulate[
nORM[vector_?VectorQ]:=(Sqrt[vector.vector]);
degrees[q_]:=q*180/π;
arcMinutes[q_]:=q*60*180/π;
cIRCLE[L_?VectorQ,R_?VectorQ,F_?VectorQ]:=Module[{a,bX,bY,c,r},
a=Det[{{L[[1]],R[[1]],F[[1]]},{L[[2]],R[[2]],F[[2]]},{1,1,1}}];
bX=Det[{{L.L,R.R,F.F},{L[[2]],R[[2]],F[[2]]},{1,1,1}}];
bY=Det[{{L[[1]],R[[1]],F[[1]]},{L.L,R.R,F.F},{1,1,1}}];
c=-Det[{{L.L,R.R,F.F},{L[[1]],R[[1]],F[[1]]},{L[[2]],R[[2]],F[[2]]}}];
Circle[{bX,bY}/(2 a),((Sqrt[(bX^2)+(bY^2)-4 a c])/(2Abs[a])),{π/6,π(5/6)}]];

aimψ[headAimVector_?VectorQ,base_?VectorQ]:=ArcTan[headAimVector[[1]],headAimVector[[2]]];

midPoint[headAimVector_?VectorQ,base_?VectorQ]:=base-aimOffset*interOcular*{headAimVector[[2]],-headAimVector[[1]]};

rightEyeCenter[headAimVector_?VectorQ,base_?VectorQ]:=base+((1/2)-aimOffset)*interOcular*{headAimVector[[2]],-headAimVector[[1]]};

leftEyeCenter[headAimVector_?VectorQ,base_?VectorQ]:=base-((1/2)+aimOffset)*interOcular*{headAimVector[[2]],-headAimVector[[1]]};


rightViewVector[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=fixate-rightEyeCenter[headAimVector, base];

rightφ[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=ArcTan[rightViewVector[headAimVector, fixate, base][[1]],rightViewVector[headAimVector, fixate, base][[2]]];

rightEyeNode[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=rightEyeCenter[headAimVector, base]+nodePercent*eyeRadius*rightViewVector[headAimVector,fixate, base]/nORM[rightViewVector[headAimVector, fixate, base]];

leftViewVector[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=fixate-leftEyeCenter[headAimVector, base];

leftφ[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=ArcTan[leftViewVector[headAimVector, fixate, base][[1]],leftViewVector[headAimVector, fixate, base][[2]]];

leftEyeNode[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=leftEyeCenter[headAimVector, base]+nodePercent*eyeRadius*leftViewVector[headAimVector, fixate, base]/nORM[leftViewVector[headAimVector, fixate, base]];

fixateConvergence[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=(rightφ[headAimVector,fixate,base]-leftφ[headAimVector,fixate,base]);

leftα[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=leftφ[headAimVector,fixate,base]-aimψ[headAimVector,base];
rightα[headAimVector_?VectorQ,fixate_?VectorQ,base_?VectorQ]:=rightφ[headAimVector,fixate,base]-aimψ[headAimVector,base];

rightDistractVector[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=distraction-rightEyeNode[headAimVector,fixate, base];

rightδ[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=ArcTan[rightDistractVector[headAimVector,fixate,distraction,base][[1]],rightDistractVector[headAimVector,fixate,distraction,base][[2]]];

leftDistractVector[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=distraction-leftEyeNode[headAimVector,fixate, base];

leftδ[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=ArcTan[leftDistractVector[headAimVector,fixate,distraction,base][[1]],leftDistractVector[headAimVector,fixate,distraction,base][[2]]];

convergenceDistraction[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=If[Or[Abs[leftφ[headAimVector,fixate, base]-leftδ[headAimVector,fixate, distraction,base]]>π/3.,Abs[rightφ[headAimVector,fixate, base]-rightδ[headAimVector,fixate, distraction,base]]>π/3.],0.0,(rightδ[headAimVector,fixate, distraction,base]-leftδ[headAimVector,fixate, distraction,base])];

rightθ[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=(rightφ[headAimVector,fixate, base]-rightδ[headAimVector,fixate,distraction,base]);

leftθ[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=(leftφ[headAimVector,fixate, base]-leftδ[headAimVector,fixate,distraction,base]);

binocularDisparity[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=If[Or[leftθ[headAimVector,fixate,distraction,base]<-π/2.,leftθ[headAimVector,fixate,distraction,base]>π/3.,rightθ[headAimVector,fixate,distraction,base]<-π/3.,rightθ[headAimVector,fixate,distraction,base]>π/2.],0,(rightθ[headAimVector,fixate,distraction,base]-leftθ[headAimVector,fixate,distraction,base])];

rightθinside[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=rightθ[headAimVector,fixate,distraction,base]+ArcSin[nodePercent*Sin[rightθ[headAimVector,fixate,distraction,base]]];

leftθinside[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=leftθ[headAimVector,fixate,distraction,base]+ArcSin[nodePercent*Sin[leftθ[headAimVector,fixate,distraction,base]]];

retinalDisparity[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=If[Or[leftθ[headAimVector,fixate,distraction,base]<-π/2.,leftθ[headAimVector,fixate,distraction,base]>π/3.,rightθ[headAimVector,fixate,distraction,base]<-π/3.,rightθ[headAimVector,fixate,distraction,base]>π/2.],0,(rightθinside[headAimVector,fixate,distraction,base]-leftθinside[headAimVector,fixate,distraction,base])];


eyePict[eyeCenter_?VectorQ,fixate_?VectorQ]:=Module[{λ,viewVector},viewVector=fixate-eyeCenter;
λ=ArcTan[viewVector[[1]],viewVector[[2]]];
viewVector=viewVector/nORM[viewVector];
Show[{Graphics[{AbsoluteThickness[2],Gray,Circle[eyeCenter,eyeRadius,{λ+.4,2π+λ-.4}]}],Graphics[{Gray,
Circle[eyeCenter+ .8eyeRadius viewVector,.5eyeRadius,{λ-1.5,λ+1.5}]}],
Graphics[{Black,
Disk[eyeCenter+eyeRadius*nodePercent*viewVector,eyeRadius/10]
}]
},AspectRatio->Automatic]];

movingEyePict[eyeCenter_?VectorQ,fixate_?VectorQ]:=Module[{λ,viewVector},viewVector=fixate-eyeCenter;
λ=ArcTan[viewVector[[1]],viewVector[[2]]];
viewVector=viewVector/nORM[viewVector];
Show[{Graphics[{AbsoluteThickness[2],Dashing[.01],Gray,{Line[{eyeCenter-{1.eyeRadius,1.5eyeRadius},eyeCenter+{ 1.eyeRadius,-1.5eyeRadius},eyeCenter+{ .7eyeRadius,-1.6eyeRadius}}],Circle[eyeCenter,eyeRadius,{λ+.4,2π+λ-.4}]}}],Graphics[{Gray,
Circle[eyeCenter+ .8eyeRadius viewVector,.5eyeRadius,{λ-1.5,λ+1.5}]}],
Graphics[{Black,
Disk[eyeCenter+eyeRadius*nodePercent*viewVector,eyeRadius/10]
}]
},AspectRatio->Automatic]];

eyeEdge[θ_]:=eyeRadius*{Cos[θ],Sin[θ]};

eyeEdge[θ_]:=eyeRadius*{Cos[θ],Sin[θ]};

inRays[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=Show[{eyePict[leftEyeCenter[headAimVector, base],fixate],eyePict[rightEyeCenter[headAimVector,base],fixate],Graphics[{Red,{Line[{rightEyeNode[headAimVector,fixate,base],rightEyeCenter[headAimVector,base]-eyeRadius*rightViewVector[headAimVector,fixate,base]/nORM[rightViewVector[headAimVector,fixate,base]]}]}}],Graphics[{Red,{Line[{leftEyeNode[headAimVector,fixate,base],leftEyeCenter[headAimVector, base]-eyeRadius*leftViewVector[headAimVector,fixate,base]/nORM[leftViewVector[headAimVector,fixate,base]]}]}}],Graphics[{Blue,{Line[{rightEyeNode[headAimVector,fixate,base],rightEyeCenter[headAimVector,base]+eyeEdge[rightφ[headAimVector,fixate,base]-π-rightθinside[headAimVector,fixate,distraction,base]]}]}}],
Graphics[{Blue,{Line[{leftEyeNode[headAimVector,fixate,base],leftEyeCenter[headAimVector,base]+eyeEdge[leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]]}]}}],
Graphics[{Purple,{Line[{rightEyeCenter[headAimVector,base],rightEyeCenter[headAimVector,base]+eyeEdge[rightφ[headAimVector,fixate,base]-π-rightθinside[headAimVector,fixate,distraction,base]]}]}}],
Graphics[{Purple,{Line[{leftEyeCenter[headAimVector,base],leftEyeCenter[headAimVector,base]+eyeEdge[leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]]}]}}],
Graphics[{Green,{Line[N[{leftEyeCenter[headAimVector, base],rightEyeCenter[headAimVector, base]}]]}}],
min=Min[{leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]-retinalDisparity[headAimVector,fixate,distraction,base],leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]}];
MAX=Max[{leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]-retinalDisparity[headAimVector,fixate,distraction,base],leftφ[headAimVector,fixate,base]-π-leftθinside[headAimVector,fixate,distraction,base]}];
Graphics[{Brown,AbsoluteThickness[3],{Circle[leftEyeCenter[headAimVector, base],eyeRadius,{min,MAX}]}}]
},AspectRatio->Automatic,PlotRange->{{midPoint[headAimVector,base][[1]]-interOcular,midPoint[headAimVector,base][[1]]+interOcular},{midPoint[headAimVector,base][[2]]-interOcular,midPoint[headAimVector,base][[2]]+interOcular}}];


outRays[headAimVector_?VectorQ,fixate_?VectorQ,distraction_?VectorQ,base_?VectorQ]:=Show[{Graphics[{Black,AbsolutePointSize[4],{Point[N[fixate]]}}],Graphics[{Black,AbsolutePointSize[4],{Point[N[distraction]]}}],Graphics[{Black,{Line[N[{fixate,rightEyeNode[headAimVector,fixate, base]}]]}}],Graphics[{Black,{Line[N[{fixate,leftEyeNode[headAimVector,fixate, base]}]]}}],Graphics[{Black,{Line[N[{distraction,rightEyeNode[headAimVector,fixate, base]}]]}}],Graphics[{Black,{Line[N[{distraction,leftEyeNode[headAimVector,fixate, base]}]]}}]
},AspectRatio->Automatic];

(* real program starts here *)

rightβRatio[f_,d1_,d2_,tt_]=((d1^2) (f+n r) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+d1 (-n r (((f+n r))^2)+(f^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+2 f n r (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(n^2) (r^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])-(i^2) (tt^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))+d2 (f+n r) (d2 (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+i tt (-n r+2 (Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))))/(d1 (-n r (((f+n r))^2)+(f^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+2 f n r (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(n^2) (r^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(i^2) (tt^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))+(f+n r) (-2 (n^3) (r^3)-i n r tt (d2+2 i tt)+2 (n^2) (r^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(i^2) (tt^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(f^2) (-2 n r+(Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))+2 f n r (-2 n r+(Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))));
t1[f_,d1_,d2_]:=((-(d1^2) -(d2^2) -2 d1 f -(Sqrt[(d1^2)+(d2^2)]) (Sqrt[(d1^2)+(d2^2)+4 d1 f+4 (f^2)]) )/(2 d2 i));
t2[f_,d1_,d2_]:=((-(d1^2) -(d2^2) -2 d1 f +(Sqrt[(d1^2)+(d2^2)]) (Sqrt[(d1^2)+(d2^2)+4 d1 f+4 (f^2)]) )/(2 d2 i));
tC[f_,d1_,d2_]:=If[Abs[N[d2]]>.01,If[d1≥0,t2[f,d1,d2],t1[f,d1,d2]],0];
rightPeakβRatio[f_,d1_,d2_]:=rightβRatio[f,d1,d2,tC[f,d1,d2]];

rightθDerivative[f_,d1_,d2_,tt_]=-(i (-(d1^2) (f+n r) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+d1 (n r (((f+n r))^2)-(f^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])-2 f n r (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])-(n^2) (r^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(i^2) (tt^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))-d2 (f+n r) (d2 (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+i tt (-n r+2 (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])))))/(((((f+n r))^2)+(i^2) (tt^2)) (-2 (n^3) (r^3)-2 i n r tt (d2+i tt)+(d1^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+2 (n^2) (r^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(((d2+i tt))^2) (Sqrt[(((f+n r))^2)+(i^2) (tt^2)])+(f^2) (-2 n r+(Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))+2 f n r (-2 n r+(Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))+2 d1 (f+n r) (-n r+(Sqrt[(((f+n r))^2)+(i^2) (tt^2)]))));

ϕ=ϕD π/180;
distractor:=(f+d)/2{Sin[ϕ],Cos[ϕ]}+{0,n r +( f+d)/2};
r=eyeRadius=1.3;
nodePercent=n;
i=interOcular=6.5;
aimOffset=0;
d1:=distractor[[2]]-(f+n r);
d2:=distractor[[1]];
fixate={0,f+n r};
headAimVector={0,1};
base[tt_]={interOcular*(tt),0};

t=0;
Quiet@Show[{
Graphics[{Green,AbsolutePointSize[5],
{Line[{base[t],base[t]+scale{.4,0},base[t]+scale{.3,-.015}}]
,
Text["B",base[t]-scale*{0,0.05}]}}]
,
Graphics[{
Text[Row[{δ," = ",Round[N[arcMinutes[binocularDisparity[headAimVector,fixate,distractor,base[t]]]],.001]," min"}],scale*{.35,.1}]
,
Text[Row[{HoldForm[((Style["d",Italic]θ)/(Style["d",Italic]t))]," = ",Round[arcMinutes[rightθDerivative[f,d1,d2,t]],.01]," min/sec"}],scale*{.4,.4}]
,
Text[Row[{"(Subscript[κ, F]) = ",Round[arcMinutes[fixateConvergence[headAimVector,fixate,base[t]]],.01]," min"}],scale*{.35,.9}]
,
Text[Row[{"(Subscript[κ, F])/",HoldForm[((Style["d",Italic]α)/(Style["d",Italic]t))]," = ",Round[(f+n r) fixateConvergence[headAimVector,fixate,base[t]]/i,.001]}],scale*{.35,.75}]
,
Text[Row[{HoldForm[((Style["d",Italic]α)/(Style["d",Italic]t))]," = ",Round[arcMinutes[i/(f+n r)],.01]," min/sec"}],scale*{.4,.6}]
,
Text[Row[{"δ/",HoldForm[((Style["d",Italic]θ)/(Style["d",Italic]t))]," = ",Round[binocularDisparity[headAimVector,fixate,distractor,base[t]]/rightθDerivative[f,d1,d2,t],.001]}],scale*{.35,.25}]
,
Text[Row[{HoldForm[(("|D-B|-|F-B|")/(Style["f",Italic]))]," = ",Round[(nORM[distractor-base[0]]-nORM[base[0]-fixate])/f,.01]}],scale*{-.45,.55}]
,
Text[Row[{HoldForm[(("|D-F|")/(Style["f",Italic]))]," = ",Round[nORM[distractor-fixate]/f,.01]}],scale*{-.5,.4}]
,
Text[Row[{HoldForm[((Style["d",Italic]θ)/(Style["d",Italic]β))],"((Subscript[t, c])) = ",Round[rightPeakβRatio[f,d1,d2],.01]}],scale*{-.5,.25}]
,
Text[Row[{HoldForm[((Style["d",Italic]θ)/(Style["d",Italic]β))],"(0) = ",Round[rightβRatio[f,d1,d2,0],.01]}],scale*{-.5,.1}]
,
Text[StringForm["\!\(\*FractionBox[\(Sin[\*FractionBox[\(δ\), \(2\)]]\), \(Cos[\*FractionBox[\(κ\), \(2\)]]\\ Sin[\*FractionBox[\(κ - δ\), \(2\)]]\)]\) = `1`",Round[Sin[(1/2)binocularDisparity[headAimVector,fixate,distractor,base[t]]]/(Cos[(1/2)fixateConvergence[headAimVector,fixate,base[t]]] Sin[(1/2)(fixateConvergence[headAimVector,fixate,base[t]]-binocularDisparity[headAimVector,fixate,distractor,base[t]])]),.01]],scale*{-.3,-.1}]
}],
Graphics[{Brown,{Line[{distractor,fixate}],Text[Row[{"|D-F| = ",Round[nORM[distractor-fixate],.1]," cm"}],scale{-.5,.9}]}}]
,
Graphics[{Red,AbsolutePointSize[4],{Point[fixate],Text["F",1.02fixate-scale{.05,0}],Line[{leftEyeNode[headAimVector,fixate,base[t]],fixate}],Line[{rightEyeNode[headAimVector,fixate,base[t]],fixate}],Text[Row[{"|F-B| = ",Round[N[nORM[fixate-base[t]]],.1]," cm"}],scale{-.5,.8}]}}]
,
Graphics[{Blue,AbsolutePointSize[5],{Point[distractor],Text["D",1.02distractor+scale{.05,0}],Line[{leftEyeNode[headAimVector,fixate,base[t]],distractor}],Line[{rightEyeNode[headAimVector,fixate,base[t]],distractor}],Text[Row[{"|D-B| = ",Round[N[nORM[distractor-base[t]]],.1]," cm"}],scale{-.5,1.}]}}]
,
Graphics[{Blue,{cIRCLE[leftEyeNode[headAimVector,fixate,base[t]],rightEyeNode[headAimVector,fixate,base[t]],distractor]}}]
,
Graphics[{Dashing[.01],{Circle[{0,((f+d)/2)+n r},((f+d)/2),{π/6,π(5/6)}]}}]
},PlotRange->scale*{{-.75,.75},{-.2,1.2}},ImageSize->{350,350}]
,
{{scale,75},20,210,.01,ImageSize->Tiny,Appearance->"Labeled"},
{{n,.5,"node percent"},0,1,.01,ImageSize->Tiny,Appearance->"Labeled"},
{{ϕD,10,"ϕ degrees"},-60,60,.01,ImageSize->Tiny,Appearance->"Labeled"},
{{d,10,"symmetric distance d"},-50,100,.01,ImageSize->Tiny,Appearance->"Labeled"},
{{f,75,"fixate distance f"},55,200,.01,ImageSize->Tiny,Appearance->"Labeled"},TrackedSymbols->Manipulate,ControlPlacement->Left]

CAPTION

This Demonstration shows the asymptotic relation between d θ/d t and δ (binocular disparity) and between d α/d t and (Subscript[κ, F]) (fixate convergence angle). It also shows the motion/pursuit law at the critical time (Subscript[t, c]) where it is a better two-dimensional measure of depth than the time zero M/PL or the static formula (based on the symmetric case). The angle slider moves the distractor around a circle where retinal motion is constant. The "node percent" n is the fraction of the eye radius where the node point lies with n=0 at the center of the eye.

DETAILS

For translation perpendicular to the line of sight at 6.5 cm/sec (interocular distance per unit time), retinal motion, the derivative of θ at t=0, approximates binocular disparity provided the fixate is far from the eyes and the distraction is not near the eyes. (Specifically, they are asymptotic (retinal motion/binocular disparity ≈1) provided the distractor is not more than 45° nasal angle and you are not near the Vieth–Müller circle.) If the speed is changed by a factor s, then d θ/d t is also multiplied by s, so

((dθ)/(dt))~(speed/(interocular distance))×binocular disparity, when (i/f)≈0 (the approximation is good as a percentage of δ = B.D.).

The multiplier effect means that at high speed, the θ derivative is much larger than binocular disparity, so it can be detected more easily, even though, by itself, it is not sufficient to measure depth. (The rate of change dα/dt would also be magnified, but dθ/dα and the motion/pursuit formula would be unchanged.) This means people can detect depth from motion when they cannot detect the depth of the same objects when at rest. For example, the retinal disparity of an object 20 m beyond a fixate at 100 m is 0.372 min of arc, below what people can detect, while at 100 km/hr, dθ/dt = 159 min/sec.

The retinal motion rate dθ/dt and motion/pursuit ratio dθ/dα at t=0 are constant on circles passing through the eye node and distractor (f+(Subscript[d, 1]),(Subscript[d, 2])) with diameter on the (Subscript[d, 1]) axis. (These circles are similar to the invariant circles for binocular disparity, but slightly different.)

The pursuit rate satisfies dα/dt(0) =i/f and the convergence of the eyes on the fixate satisfies tan((Subscript[κ, F])/2)=(i/2)/f (when the eyes and fixate are symmetric). Sine and tangent are asymptotic to their argument for small angles, tan((Subscript[κ, F])/2)/((Subscript[κ, F])/2)≈1when i/f≈0; for large fixate distances we may replace sine or tangent with the angle (and cosine with 1).

By simple geometry, the static relative depth for fixate and distractor on the (Subscript[d, 1]) axis is

(d/f)=((sin((δ/2)))/(cos((κ/2)) sin(((κ-δ)/2)))).

The two asymptotic relations above then show that the static relative depth formula is asymptotic to the motion/pursuit law (at t=0):

(d/f)=((sin((δ/2)))/(cos((κ/2)) sin(((κ-δ)/2))))~(δ/(κ-δ))~((dθ)/(dα-dθ)).

THIS NOTEBOOK IS THE SOURCE CODE FROM

"Dynamic Approximation of Static Quantities (Visual Depth Perception 14)" from the Wolfram Demonstrations Project
 http://demonstrations.wolfram.com/DynamicApproximationOfStaticQuantitiesVisualDepthPerception1/

Contributed by: Keith Stroyan

A full-function Wolfram Mathematica system (Version 6 or higher) is required to edit this notebook.
GET WOLFRAM MATHEMATICA »

© Wolfram Demonstrations Project & Contributors   |   Terms of Use   |   Make a new version of this Demonstration »