简述思路
借助CGAL几何库,分为以下步骤:
- 将mesh做成DCEl结构,
- 构建AABB tree用于快速射线检测
- 针对每个segment,求出segment端点所在的两个facet,从端点开始,求出两个端点构成的二维线段与对应三角面三个边求交,利用半边反转转到下一个待求交面
问题
- 为什么不用segment投影到三角面的三维平面与之求交,即Plane_3与segment_3求交?三维平面投影求交z值有浮点误差,所以采用先二维求一次交,再射线检测求第二次交
- dirVector_3是投影方向,想分段投影或者复杂投影自行修改
- 算法没有涉及对退化,非流形,自相交,孔的处理,对于三维有凹形的也需要自行修改
- 其他问题自行优化
接口原型
#include <CGAL/Exact_predicates_in