计算三维空间(推广到K维)中点到平面的投影点坐标

计算三维空间中点到平面的投影点坐标


问题概述:

三维平面的一般方程为:
(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} Axa=Byb=Czc=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

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值