点到三角形的距离---最快的计算方式

点到三角形距离的数学原理:

所有的求点 p p p到三角形的距离的方式数学本质上都是一样的:

第一步:找到点在三角形所在平面的投影点 p ′ p' p

第二步:将 p ′ p' p再向三角形上做一次投影得到 p ′ ′ p'' p

如果 p ′ p' p直接落在三角形内,直接令 p ′ ′ = p ′ p''=p' p=p

如果落在三角形外,再依次判断投影在哪条边上,如果投影点落在边上就计算出来 p ′ ′ p'' p,如果超出了边的范围,直接取顶点作为 p ′ ′ p'' p的计算值。

第三步:计算 p − p ′ ′ p-p'' pp的长度,即为点到三角形的距离。

效率分析:

在上述计算过程,除了有很多条件判断外,在第一步,第二步,第三步都有内积(乘法)和开方需要计算,也就是说至少有三次内积和开方的运算。在条件判断无法减少的情况下,尽可能的减少乘法和开方的计算次数,成为了提高速度的关键。

快速计算方式:

第一步:通过rt矩阵将三角形放到原点,其中一条边落在x轴上,另一条边落在xy平面内。

Notes:此时,点到三角形平面的距离可以简单的通过计算 p z − p z ′ p_z-p'_z pzpz得到。

第二步:第二次的投影也变成了一个二维的计算过程。

第三步:与其他方法无异,计算 p − p ′ ′ p-p'' pp的长度,作为点到三角形的距离。

效率分析:

与传统方法相比,快速计算方式中,第一步只用到了内积(乘法),而没用到开方。第二步计算因为转换到了二维,也降低了计算的次数。第三步与传统方法没有区别。

结果:

快速计算方法是传统方法效率的三倍以上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值