(* 
      Calculate the point on the boundary of a sphere *) 
 (* 
      on its silhouette at the point closest to V *) 
 (* 
      the calculated point B is the closest point *) 
 (* 
      on the boundary to a moving observer *) 
<< Calculus`VectorAnalysis`

VectorLength[V_] := 
        Sqrt[V[[1]]*V[[1]] + V[[2]]*V[[2]] + 
            V[[3]]*V[[3]]];

Cntr  =  {1, 0, 
          0};   
Pnt = {-2, -2, 0};   
r  =  
        1;                               
V={1, 2, 0}

vl = 
        VectorLength[Cntr - Pnt];
vl2  =  vl*vl;
U = (Cntr - Pnt)/vl;
Ulen = VectorLength[U];
U = U/Ulen;
W  =  CrossProduct[CrossProduct[U, V], U]
Wlen  =  VectorLength[W]
W  =  W/Wlen

k = Sqrt[vl2  -  r^2]

t = -(k^2 - r^2 - vl2)/(2*vl)

s = Sqrt[r^2 - t^2]

B = Pnt + (vl - t)*U + s*W

VectorLength[B - Cntr]

Simplify [%]