计算三维空间中点到平面的投影点坐标
问题概述:
三维平面的一般方程为:
(1) A x + B y + C z + D = 0 Ax+By+Cz+D = 0\tag{1} Ax+By+Cz+D=0(1)
已知点 ( a , b , c ) (a,b,c) (a,b,c),求该点在平面上的投影 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)
方法一(利用参数方程):
显然连接点 ( a , b , c ) (a,b,c) (a,b,c)和点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)所形成的直线(假设为 l 1 l_1 l1)肯定与该平面的法向量平行,则向量 ( A , B , C ) (A,B,C) (A,B,C)(平面的法向量)是直线 l 1 l_1 l1的方向向量。所以已知直线上一点和直线的方向向量,我们可以得到直线 l 1 l_1 l1的参数方程如下:
(2.1) x − a A = y − b B = z − c C = t \cfrac{x-a}{A}=\cfrac{y-b}{B}=\cfrac{z-c}{C}=t \tag{2.1} Ax−a=By−b=Cz−c=t(2.1)
则可得
(2.2) { x = A t + a y = B t + b z = C t + c \begin{cases} x = At + a \tag{2.2} \\ y = Bt + b \\ z = Ct + c \\ \end{cases} ⎩⎪⎨⎪⎧x=At+ay=Bt+bz=Ct+c(2.2)
将 ( 2.2 ) (2.2) (2.2)代入原方程 ( 1 ) (1) (1)得
A x + B y + C z + D = A ∗ ( A t + a ) + B ∗ ( B t + b ) + C ∗ ( C t + c ) + D = A 2 t + A a + B 2 t + B b + C 2 t + C c + D = ( A 2 + B 2 + C 2 ) t + A a + B b + C c + D \begin{aligned} &Ax+By+Cz+D\\ =&A*(At+a)+B*(Bt+b)+C*(Ct+c)+D\\ =&A^2t+Aa+B^2t+Bb+C^2t+Cc+D\\ =&(A^2+B^2+C^2)t+Aa+Bb+Cc+D\\ \end{aligned} ===Ax+By+Cz+DA∗(At+a)+B∗(Bt+b)+C∗(Ct+c)+DA2t+Aa+B2t+Bb+C2t+Cc+D(A2+B2+C2)t+Aa+Bb+Cc+D
即
(2.3) ( A 2 + B 2 + C 2 ) t + A a + B b + C c + D = 0 (A^2+B^2+C^2)t+Aa+Bb+Cc+D=0\tag{2.3} (A2+B2+C2)t+Aa+Bb+Cc+D=0(2.3)
化简式 ( 2.3 ) (2.3) (2.3)得
(2.4) t = − ( A a + B b + C c + D ) ( A 2 + B 2 + C 2 ) t = \cfrac{-(Aa+Bb+Cc+D)}{(A^2+B^2+C^2)}\tag{2.4} t=(A2+B2+C2)−(Aa+Bb+Cc+D)(2.4)
将 ( 2.4 ) (2.4) (2.4)代入 ( 2.2 ) (2.2) (2.2)中得:
(2.5) ( x 0 , y 0 , z 0 ) = { x 0 = A t + a y 0 = B t + b z 0 = C t + c = { x 0 = − A ∗ ( B b + C c + D ) + a ∗ ( B 2 + C 2 ) ( A 2 + B 2 + C 2 ) y 0 = − B ∗ ( A a + C c + D ) + b ∗ ( A 2 + C 2 ) ( A 2 + B 2 + C 2 ) z 0 = − C ∗ ( A a + B b + D ) + c ∗ ( A 2 + B 2 ) ( A 2 + B 2 + C 2 ) \begin{aligned} (x_0,y_0,z_0)&=\tag{2.5} \begin{cases} x_0 = At + a \\ y_0 = Bt + b \\ z_0 = Ct + c \\ \end{cases}\\ &= \begin{cases} x_0 = \cfrac{-A*(Bb+Cc+D)+a*(B^2+C^2)}{(A^2+B^2+C^2)} \\ y_0 = \cfrac{-B*(Aa+Cc+D)+b*(A^2+C^2)}{(A^2+B^2+C^2)} \\ z_0 = \cfrac{-C*(Aa+Bb+D)+c*(A^2+B^2)}{(A^2+B^2+C^2)} \\ \end{cases} \end{aligned} (x0,y0,z0)=⎩⎪⎨⎪⎧x0=At+ay0=Bt+bz0=Ct+c