Coordinate.calCoordinateFrom2PointsAndPlane()函数说明
一、功能
 该函数用于计算空间直线与空间平面的交点坐标。
二、计算原理
 空间直线与平面交点示意如下图所示:
 
  
 利用空间直线上任意两点求得其方向向量:
 
     
      
       
        
         L
        
        
         i
        
        
         n
        
        
         e
        
        
         V
        
        
         e
        
        
         c
        
        
         t
        
        
         o
        
        
         r
        
        
         =
        
        
         (
        
        
         
          x
         
         
          1
         
        
        
         −
        
        
         
          x
         
         
          2
         
        
        
         ,
        
        
         
          y
         
         
          1
         
        
        
         −
        
        
         
          y
         
         
          2
         
        
        
         ,
        
        
         
          z
         
         
          1
         
        
        
         −
        
        
         
          z
         
         
          2
         
        
        
         )
        
        
         =
        
        
         (
        
        
         m
        
        
         ,
        
        
         n
        
        
         ,
        
        
         p
        
        
         )
        
       
       
         LineVector=(x_1-x_2,y_1-y_2,z_1-z_2)=(m,n,p) 
       
      
     LineVector=(x1−x2,y1−y2,z1−z2)=(m,n,p)
  根据丘维声所著《解析几何(第三版)》第60-61页可将空间直线方程表示为“点向式”方程:
 
     
      
       
        
         
          
           x
          
          
           −
          
          
           
            x
           
           
            1
           
          
         
         
          m
         
        
        
         =
        
        
         
          
           y
          
          
           −
          
          
           
            y
           
           
            1
           
          
         
         
          n
         
        
        
         =
        
        
         
          
           z
          
          
           −
          
          
           
            z
           
           
            1
           
          
         
         
          p
         
        
       
       
         \frac{x-x_1}{m}=\frac{y-y_1}{n}=\frac{z-z_1}{p} 
       
      
     mx−x1=ny−y1=pz−z1
  利用中间参数可将上式表示为:
 
     
      
       
        
         {
        
        
         
          
           
            
             
              x
             
             
              =
             
             
              m
             
             
              t
             
             
              +
             
             
              
               x
              
              
               1
              
             
            
           
          
         
         
          
           
            
             
              y
             
             
              =
             
             
              n
             
             
              t
             
             
              +
             
             
              
               y
              
              
               1
              
             
            
           
          
         
         
          
           
            
             
              z
             
             
              =
             
             
              p
             
             
              t
             
             
              +
             
             
              
               z
              
              
               1
              
             
            
           
          
         
        
       
       
         \left\{ \begin{array}{c} x=mt+x_1\\ y=nt+y_1\\ z=pt+z_1 \end{array} \right. 
       
      
     ⎩⎨⎧x=mt+x1y=nt+y1z=pt+z1
  通过上式与平面方程联立可计算出中间参数为:
 
     
      
       
        
         t
        
        
         =
        
        
         
          
           −
          
          
           a
          
          
           
            x
           
           
            1
           
          
          
           −
          
          
           b
          
          
           
            y
           
           
            1
           
          
          
           −
          
          
           c
          
          
           
            z
           
           
            1
           
          
          
           −
          
          
           d
          
         
         
          
           a
          
          
           m
          
          
           +
          
          
           b
          
          
           n
          
          
           +
          
          
           c
          
          
           p
          
         
        
       
       
         t=\frac{-ax_1-by_1-cz_1-d}{am+bn+cp} 
       
      
     t=am+bn+cp−ax1−by1−cz1−d
  利用计算出的中间参数反求直线与平面交点E(x,y,z)。至此,空间直线与平面交点坐标求解完毕。
三、使用
1、输入
 根据上述函数计算原理可知,该函数的输入为空间直线上任意两点坐标与平面方程参数:
 
     
      
       
        
         I
        
        
         n
        
        
         p
        
        
         u
        
        
         t
        
        
         (
        
        
         )
        
        
         :
        
        
         
          {
         
         
          
           
            
             
              
               
                P
               
               
                1
               
              
              
               (
              
              
               
                x
               
               
                1
               
              
              
               ,
              
              
               
                y
               
               
                1
               
              
              
               ,
              
              
               
                z
               
               
                1
               
              
              
               )
              
             
            
           
          
          
           
            
             
              
               
                P
               
               
                2
               
              
              
               (
              
              
               
                x
               
               
                2
               
              
              
               ,
              
              
               
                y
               
               
                2
               
              
              
               ,
              
              
               
                z
               
               
                2
               
              
              
               )
              
             
            
           
          
          
           
            
             
              
               (
              
              
               a
              
              
               ,
              
              
               b
              
              
               ,
              
              
               c
              
              
               ,
              
              
               d
              
              
               )
              
              
               ∈
              
              
               a
              
              
               x
              
              
               +
              
              
               b
              
              
               y
              
              
               +
              
              
               c
              
              
               z
              
              
               +
              
              
               d
              
              
               =
              
              
               0
              
             
            
           
          
         
        
       
       
         Input(): \left\{ \begin{array}{c} P_1(x_1,y_1,z_1)\\ P_2(x_2,y_2,z_2)\\ (a,b,c,d) \in ax+by+cz+d=0 \end{array} \right. 
       
      
     Input():⎩⎨⎧P1(x1,y1,z1)P2(x2,y2,z2)(a,b,c,d)∈ax+by+cz+d=0
2、输出
 根据上述函数计算流程可知,该函数的输出为空间直线与平面的交点:
 
     
      
       
        
         O
        
        
         u
        
        
         t
        
        
         p
        
        
         u
        
        
         t
        
        
         :
        
        
         E
        
        
         (
        
        
         x
        
        
         ,
        
        
         y
        
        
         ,
        
        
         z
        
        
         )
        
       
       
         Output:E(x,y,z) 
       
      
     Output:E(x,y,z)
3、调用示例
P1 = np.array([-670.13, 1477.30, -1576.88])
P2 = np.array([-761.34, 914.65, -1576.88])
PlaneParams = np.array([0.00000000e+00, 5.54216347e+05, 0.00000000e+00, -3.57990507e+08])
print(calCoordinateFrom2PointsAndPlane(P1, P2, PlaneParams))
4、调用结果
[[ -804.90000912   645.93999967 -1576.88 ]]
开源算法库地址,qq交流群:873647617
 










