ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

source impl - 网格自相交区域检测

2022-09-01 19:33:42  阅读:196  来源: 互联网

标签:triangle bucket 网格 相交 source CGLaboratory 三角形 intersection impl


source impl - 网格自相交区域检测

不同方法简介

方法一

  1. 利用[[cgal_sc_box_intersection_d]]粗筛相交对,这个过程中,忽略相邻的三角形对(包括,共边,和共点的三角形对);
  2. 对这些潜在的相交三角形对,进行准确的相交测试,获取得到自相交对SelfInterPair1;
  3. 获取共点但不共边的所有三角形对;FacePairSharedVertexNotSharedEdge
  4. 遍历FacePairSharedVertexNotSharedEdge,进行自相交计算(计算过程中需要特殊实现,需要共点外有其他相交),获取得到自相交对SelfInterPair2;
  5. SelfInterPair1和SelfInterPair2的并集,就是所有的自相交对;

方法二

[[paper-2004-self-intersection-removal-in-triangular-mesh-offsetting]]中介绍的方法:

为了避免invalid region中的三角形相交检测,我们使用了bucket的结构。每个bucket三角形数量要少于C(bucket的容量)。

如果bucket中的三角形数量大于C,那么沿着AABB的最长边,将其分成两个bucket。被切割面相交的三角形会存储到两个bucket中。然后再每个bucket中执行所有三角形对的相交测试。三角形对的相交测试基于Moller T. A fast triangle-triangle intersection test[J]. Journal of Graphics Tools, 1997, 2(2): 25-30.,[[paper-impl-a-fast-triangle-triangle-intersection-test]]。每个相交对存储了指向相交三角形的指针,以及每个三角形存储了相交对列表,并计算得到了相交线段。

不同方法实现

方法一的实现代码见:CGLaboratory/box_inter_based_get_self_intersection_pairs.h at main · grassofsky/CGLaboratory (github.com)

方法二的实现代码见:CGLaboratory/aabsptree_based_get_self_intersection_pairs.h at main · grassofsky/CGLaboratory (github.com)

结果示意

标签:triangle,bucket,网格,相交,source,CGLaboratory,三角形,intersection,impl
来源: https://www.cnblogs.com/grass-and-moon/p/16647579.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有