计算空间点到平面的投影点坐标(代码)

0、p为平面外 任意一点
1、pp为所求的 投影点坐标
2、A为平面上任意 已知点
3、n为平面上的 法线
n的计算方法:
一般会已知平面上两个以上的点坐标,例如我是为了求点在任意三角形上的投影点,我当然会
知道三角形的三个点坐标,通过其中两个点坐标可以求出法向量n。
假设已知平面为三角形,其三个顶点分别为A(Ax,Ay,Az),B(Bx,By,Bz),C(Cx,Cy,Cz)
AB = (Bx-Ax,By-Ay,Bz-Az);AB为向量;
AC = (Cx-Ax,Cy-Ay,Cz-Az);AC为向量;
n为法向量
        n = AB \times AC   =>     
        nx = ABy\cdot ACz-ABz\cdot ACy
        ny = ABz\cdot ACx-ABx\cdot ACz
        nz = ABx\cdot ACy-ABy\cdot ACx
 
注意:以上的AxA点的x坐标;
ABx指的是AB向量的x分量
 
下面是我算出的现成求法,由于计算太费时间,而且容易出错,就给大伙分享出来啦
希望能帮到大伙~
代码1:

pp.x = (n.x*n.y*A.y + n.y*n.y*p.x - n.x*n.y*p.y + n.x*n.z*A.z + n.z*n.z*p.x - \ n.x*n.z*p.z + n.x*n.x*A.x) / (n.x*n.x + n.y*n.y + n.z*n.z);

pp.y = (n.y*n.z*A.z + n.z*n.z*p.y - n.y*n.z*p.z + n.y*n.x*A.x + n.x*n.x*p.y - \ n.x*n.y*p.x + n.y*n.y*A.y) / (n.x*n.x + n.y*n.y + n.z*n.z);

pp.z = (n.x*A.x*n.z + n.x*n.x*p.z - n.x*p.x*n.z + n.y*A.y*n.z + n.y*n.y*p.z - \ n.y*p.y*n.z + n.z*n.z*A.z) / (n.x*n.x + n.y*n.y + n.z*n.z);
  • 14
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值