如何判断两个三角形在2D空间中是否相交或包含?

摘要:在处理UV重叠、CPU的ZFighting检测时会遇到2D空间中的三角形相交问题, 网上普遍是3D空间的相交解法,因此写本文研究下,不过虽然实现了需求, 但解法较为暴力。 效果如图: (鼠标拖动区域处有一小三角形,与外部大三角形进行相交包含
在处理UV重叠、CPU的ZFighting检测时会遇到2D空间中的三角形相交问题, 网上普遍是3D空间的相交解法,因此写本文研究下,不过虽然实现了需求, 但解法较为暴力。 效果如图: (鼠标拖动区域处有一小三角形,与外部大三角形进行相交包含演示) 若两三角形存在线段相交,则两三角形相交,但三点都包含的情况下则无法囊括在内。 所以还需额外判断一次三点都包含的情况。 2D空间的三角形相交得从线段与线段相交做起,这里用之前的叉乘方法来检测: https://www.cnblogs.com/hont/p/6106043.html 点是否在多边形内用的是单双数检测法: https://www.cnblogs.com/hont/p/6105997.html 方法还是比较朴素的方法,但离线情况下使用无问题。
阅读全文