直线或线段与mesh网格相交的计算

本文探讨了在三维空间中计算直线与mesh网格相交的方法,包括通过二维平面上判断点是否在三角形内以及利用Plucker坐标判断直线与三角形的位置关系。这两种方法旨在提高计算效率,避免遍历每个三角形进行交点计算。
摘要由CSDN通过智能技术生成

引言

在采样二指夹爪与mesh网格的抓取点时使用的点接触模型,抽象二指夹爪为一个线段,那么寻找夹爪与物体的接触点就抽象为直线与mesh网格的交点问题,而在mesh中物体表面是以空间三角形保存的,在进一步的问题及变成如何计算三维坐标下三角形与直线的交点问题。
当然最简单方法是遍历每一个三角形,计算三角形所在平面与直线的交点,然后判断该交点是否在线段上并且在三角形内。
但是以上方法中计算交点消耗大量计算资源,对mesh网格中的成千上万的三角形计算下来效率低下。
所以我打算采用先判断直线与三角形是否有交点的问题,最后再计算交点。
下面计算两种判断直线与网格中的三角形是否有交点的方法,其中第一种是我自己想的,第二种是参考网上资料的。

方法1:在二维平面上判断点是否在三角形内

第一步:判断直线是否与三角形平面平行或在三角形平面内,这一步只需做直线方向向量与三角形法向量的点积即可,不详细叙述。
第二步:把三角形投影到二维平面上,我们可以想象一下把空间中的三角形投影到以已知直线作为法线的平面上,那么直线在平面内的投影就只是一个点,而三角形在该平面上还是一个三角形,要判断直线是否与三角形有交点只需判断投影点与投影三角形之间的关系即可。为了方便起见,在这一步我直接把整个mesh旋转到以所求直线为z轴的坐标上,那么只需求解三角形在xOy平面上的投影与原点之间的关系即可。
第三步:判断平面上点与三角形位置关系,这里我参考了https://www.cnblogs.com/TenosDoIt/p/4024413.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值