Point3D pp = new Point3D(viewer);
double pvpp = pv.skalarproduct(pp);
double pvpv = pv.skalarproduct(pv);
double p = 2*pvpp/pvpv;
double q = ((pp.skalarproduct(pp))-1)/pvpv;
double intersection1 = -p/2.+Math.sqrt(p*p/4-q);
double intersection2 = -p/2.-Math.sqrt(p*p/4-q);
double intersection = Math.min(intersection1, intersection2);