已知三维空间中的一个直线方程和直线上的一个点,怎么得到某一个固定距离处的另一个点?

问题遇到的现象和发生背景

已知有一个抛物面,其方程与某一点的法线方程为:

x*x+y*y-4*R*z=0;//抛物面方程
                           // R为抛物面的焦距 
/*  
法线 方程:
(x-x0)/(2*x0)=(y-y0)/(2*y0)=(z-z0)/(-4R)  
*/

我使用的方法为

             double vx,vy,vz,temp;
             vx=-x0/(curvature);//curvature 为该点处抛物面的曲率半径
              vy=-y0/(curvature);
              vz=1.;
              temp=sqrt(vx*vx+vy*vy+vz*vz); 
              vx/=temp;
              vy/=temp;
              vz/=temp;

              x1 = x0+vx*curvature;
              y1 = y0+vy*curvature;
              z1 = z0+vz*curvature;

cout<"  "<"  "<
运行结果及报错内容

得到的结果如图,对称位置处的曲率半径连线并没有焦点,且也不与主轴重合。

img

通过上图可知,我使用的方法并不正确,所以寻思着还得从方程入手,但是这一点我并不是很明白应该怎么写……

我想要达到的结果

希望能够有人解答,在已知三维空间中一直线方程(法线方程)的情况下,并且知道直线上一点的坐标,怎么求得直线上某一个固定距离处的点的位置?