Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从管曲面上的精确点生成曲面网格(三角剖分)_C++_3d_Mesh_Cgal_Delaunay - Fatal编程技术网

C++ 从管曲面上的精确点生成曲面网格(三角剖分)

C++ 从管曲面上的精确点生成曲面网格(三角剖分),c++,3d,mesh,cgal,delaunay,C++,3d,Mesh,Cgal,Delaunay,在以下情况下,建议使用什么方法生成特定类型实体的曲面网格 几何体是拉伸的三维“管”段。管段具有以下特性: 在每个X值处,横截面始终是Y-Z平面中的简单多边形 多边形不一定是凸的 当X被遍历时,多边形不一定是恒定的;它们平滑地扩张和/或改变形状,多边形的区域平滑地变化 每个X=const多边形的质心,如果用简单的线段连接在一起,将形成一条非常平滑、性能良好的“线”,具有最平缓的曲率,没有急弯、褶皱或循环等 曲面截面由X=X_起点和X=X_终点处的平面横截面多边形覆盖 目标: 生成管曲面的三角

在以下情况下,建议使用什么方法生成特定类型实体的曲面网格

几何体是拉伸的三维“管”段。管段具有以下特性:

  • 在每个X值处,横截面始终是Y-Z平面中的简单多边形
  • 多边形不一定是凸的
  • 当X被遍历时,多边形不一定是恒定的;它们平滑地扩张和/或改变形状,多边形的区域平滑地变化
  • 每个X=const多边形的质心,如果用简单的线段连接在一起,将形成一条非常平滑、性能良好的“线”,具有最平缓的曲率,没有急弯、褶皱或循环等
  • 曲面截面由X=X_起点和X=X_终点处的平面横截面多边形覆盖
目标:

  • 生成管曲面的三角化曲面网格,考虑到其起点和终点由平面横截面曲面限定的事实
  • 网格应为管状体,而不是管状体的凸面外壳
  • 如果管表面网格保持由X=X_开始和X=X_结束处的顶点形成的平面简单多边形横截面的属性,那么我有可以对端盖进行网格划分的现有代码;我试图解决的真正问题是生成三维管曲面网格。如果解决方案也可以生成端盖,那也可以。但是,出于输出目的,端盖表面需要能够识别
  • 生成网格后,需要以OFF等格式编写,我认为我可以根据CGAL中包含的代码、示例等进行处理。这里的要点是,生成网格后,我不需要以编程方式进一步处理网格(例如变形、添加/删除点)
已知输入和属性:

  • 在X_起点和X_终点之间的任意数量的X=const站上,我有多边形横截面管曲面顶点;创建/导入点时,我可以根据需要控制X方向上的间距
  • 顶点正好位于管曲面上,并且不会被任何噪波、啮合、采样、近似等损坏
  • 我不能保证形成每个横截面多边形的顶点的相对位置,除了多边形顶点是顺时针方向
  • 我可以根据多边形顶点的Y-Z分量生成它们的法线,但我没有关于它们在X方向的法线分量的先验信息
  • 如果需要,我可以在端盖上生成任意数量的顶点
  • 现在,顶点是3空间浮点坐标值,但如果它能有所帮助,我可以将每个横截面转换为正式的CGAL 2D排列
  • 估计的顶点数可能少于1000个,肯定少于15K。处理时间并不重要
理想:

  • 理想情况下,曲面网格将只使用我拥有的顶点,而不减去或移动任何顶点,但这不是一个硬约束,只要它们“接近”
  • 我需要简单的多边形顶点在X_开始和X_结束,这样我就可以盖的表面预期
起初,CGAL看起来很有希望,但最终它似乎导致了一个处理管道,可能会弄脏我的顶点;此外,除了端盖之外,我没有点的完整三维法线信息。此外,该方法似乎存在尖锐、明显的横截面端子表面问题。也许我可以绕过后者,加入一堆善意的虚假顶点来延伸和终止管道,然后过滤掉我不需要的部分三角剖分,但无法保证X_起点和X_终点的顶点会保留,我必须“修复”穿过这些平面的三角剖分,这似乎很重要

另一种可能是使用CGAL计算完整的3D体积网格,但只需写出包含曲面网格的部分。这合理吗?如果我可以保留原始输入顶点,并且这种总体方法是合理的,我可以在写出三角剖分时进行过滤,以区分形成端盖的面与管曲面


我也看到了这个问题,它似乎有一些相似之处(只是试图保留输入点,以及一些表面属性的先见之明),但最后我认为我的用例太不同了。

您是否有一个可以共享的示例数据集?如果我正确理解了您的问题,我们有一个可行的实施方案。可能的重复