点到点法式平面投影点的计算

算法概述

平面由一点 Ox0,y0,z0 和法向量 n=(n1,n2,n3) 定义,平面外一点为 Pout(xp,yp,zp) ,求 P 到平面的投影点Q的坐标

设点Q的坐标为(xQ,yQ,zQ),那么Q点应该同时满足

  1. 点Q在平面内,满足平面方程(平面的点法式方程)
    n1(xx0)+n2(yy0)+n3(zz0)=0  (1)
  2. PQ//n ,满足
    xQxPn1=yQyPn2=zQzPn3  (2)

联立(1)(2)两式可以解得Q的坐标,得到

xQ=n1(x0n1+y0n2+z0n3)+(n22+n23)xPn1n2yPn1n3zPn21+n22+n23

根据
yQ=n2n1(xPxQ)+yP  (3)
以及
zQ=n3n1(xPxQ)+zP  (4)

得到Q的坐标,这里值得注意的是,求解(3)(4)的时候 n1 不能为0,当 n1 为0时 yQ=yP zQ=zP

程序实现

下面用matlab实现上面这段程序

function point =compute_nearest_point_on_surface2(p,N,p_out)
x=(N(1)*(p(1)*N(1)+p(2)*N(2)+p(3)*N(3))+(N(2)^2+N(3)^2)*p_out(1)-N(1)*N(2)*p_out(2)-N(1)*N(3)*p_out(3))/(N(1)^2+N(2)^2+N(3)^2);
if (N(1)~=0)
    y=N(2)/N(1)*(x-p_out(1))+p_out(2);
    z=N(3)/N(1)*(x-p_out(1))+p_out(3);
else
    y=p_out(2);
    z=p_out(3);
end

point=[x,y,z];
end

well done!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉风小宇

请我喝个咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值