三角形三角形重叠(但不是边)
Triangle Triangle Overlap (But not edges)
我发现了一种很好的算法来检查三/三交点,但如果它们只在沿边或边的一点相交(没有重叠),我希望它失败。基本上想要重叠,而触摸是不够的。
有人知道如何调整吗?
http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/opttritri.txt
前任。应通过
float a1[3] = { 0, 0, 0 };
float a2[3] = { 2, 0, 0 };
float a3[3] = { 0, 1, 0 };
float b1[3] = { 0, 0, 0 };
float b2[3] = { 2, 0, 0 };
float b3[3] = { 0, -1, 0 };
bool inters = NoDivTriTriIsect(a1, a2, a3, b1, b2, b3);
脑海中浮现出一个简洁的解决方案和一个特别的解决方案:)。特别的一个只是添加了额外的测试来识别只重叠的边缘。整洁的直接计算重叠的面积,并表示如果面积>0 ,三角形相交
更整洁的重叠区域方法:Sutherland-Hodgman算法产生三角形的多边形三角形重叠。然后计算多边形面积(如何计算2d多边形的面积?)(https://math.stackexchange.com/questions/154628/find-the-area-of-overlap-of-two-triangles)
如果您更喜欢通过过滤案例的特殊解决方案:首先通过将边参数化为线来找到重叠的边界,并寻找具有相同参数的线。然后检查最短边起点的正上方和正下方的一点是否在两个三角形中。(http://www.blackpawn.com/texts/pointinpoly/default.html)。如果两个点都只在其中一个点上,那么它们只重叠一条边。
相关文章:
- Ardunio UNO解决了多个重叠的定时器循环
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 绘制旋转的三角形
- 算术序列与区间的最大重叠
- 如何用for循环在c++中生成单词三角形
- 如何使用递归打印修改后的星号三角形图案
- C++ 创建带有 for 循环的三角形
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Eigen c++ 三角形来自
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用对象文件读取三角形数据网格
- 按顺序声明的字符数组重叠
- 拆分重叠段
- 从捕获的帧中裁剪三角形 - OpenCV 和 C++
- 如何从 3D 曲面网格中删除自相交三角形?
- 以C++输出一个数字三角形
- 纹理单位重叠?渲染了错误的纹理
- 什么可以防止类中相邻成员重叠
- 三角形三角形重叠(但不是边)