点到平面(三角形)的最短距离

有时候,我们经常需要计算一个点P到平面上的投影(P'),简单的讲,这个投影点P'能满足|P-P'|为P到平面的最短距离。

简单介绍一下如何计算该算法

假设平面以三点式给出,三个顶点分别为p0,p1,p2

那么以P0为原点, v0 = P1-P0 , v1 = P2-P0.

[v0 , v1] 为该平面的一个基, 注意不是正交的。

所以平面上的任意一点为 Pt = P0 + t0 * v0 + t1 * v1;

因此对P',我们能满足 P-P' = P - (P0 + t0 * v0 + t1 * v1);

同样,因为P-P' 垂直平面,那么 P-P' 垂直该平面上任意一个向量

所以

(P-P') * v0 = 0

(P-P') * v1 = 0

==>

(P - P0 ) * v0= t0 * v0 *v0 + t1 * v1 *v0 ;

(P - P0 ) * v1= t0 * v0 *v1 + t1 * v1 *v1 ;

解一个二元一次方程,可以得到t0 ,和 t1的值。

代入 Pt = P0 + t0 * v0 + t1 * v1 , 可以得到所求的点。

//延伸

注意,如果要求点到三角形的最短距离,我们首先判断t0 , t1的范围。

如果t0,t1都在[0-1]区间内,并且t0+t1 < 1 的时候,那么P'在三角形内部。上面所求的点即为点到三角形最短距离。

当P'不在三角形内部的时候。那么请看下图。

根据几个边界条件选出一个边,计算出P'到该边的最近点,并且把得到的(t0,t1) clamp到[0-1]。得到的P''就是所求的最短距离

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值