Data structures 如何使用CGAL对球体上移动的一组点进行建模?

Data structures 如何使用CGAL对球体上移动的一组点进行建模?,data-structures,mesh,cgal,openmesh,Data Structures,Mesh,Cgal,Openmesh,我正在努力学习使用CGAL。我有一些问题,关于我的问题应该使用哪些数据结构和三角剖分方案 问题描述: 我有少量(

我正在努力学习使用CGAL。我有一些问题,关于我的问题应该使用哪些数据结构和三角剖分方案

问题描述:

我有少量(<1000)的粒子在球体上移动。我需要用这个点云做一个三角形的Delaunay网格。在每个时间步骤中,我都需要:

  • 仅在需要时重新网格点云,以使Delaunay标准仍然有效。独立于点坐标存储网格连接
  • 保持拓扑固定,使用迭代解算器进行优化以计算新粒子位置。具有相同连接性的解算器迭代次数可以是100或更多。在每次迭代中,计算需要每个三角形的面积和一些由边连接的顶点的计算(即每个顶点与第一个最近邻环相互作用)
  • 问题:

  • 如何更改与网格(三角剖分数据结构、曲面网格、多面体等)顶点关联的点的坐标,而不使三角剖分的迭代器或循环器无效
  • 需要重新研磨时如何检查
  • 哪种数据结构可以在整个网格的一次遍历中以最快的速度访问所有边和面?每条边在两个三角形之间共享。边缘的计算是最昂贵的。因此,我只想为每条边计算一次。在所有面上和在所有边上分别迭代一次可能效率较低

  • 如果需要更多信息,请告诉我。

    部分回答您的问题:

    3/您可以使用openmesh库对点进行网格化。它可以让你很快到达第一圈邻居,也可以到达所有的边和面。我不能确定是否是数据结构提供了对这些信息的最快访问。为了给你一个预期速度的提示,在我的工作中,我使用openmesh:运行30个“for”循环,每个循环遍历我网格50万个顶点的第一个环邻居,并计算一些算术(通常是重心),总共需要不到100毫秒的时间

    1/使用openmesh,您可以随时重置点位置,而无需更改其连接(它不会删除已定义的边和面)

    2/若要检查是否需要重新网格化,必须检查网格的每个点是否仍满足Delaunay条件。如果不是,则重新打磨整个边缘或交换合适的边缘


    希望这有帮助

    你如何定义“第一环最近邻”?作为Delaunay的邻居?仔细想想,我意识到你是对的。除非已经存在三角剖分,否则无法精确定义第一个邻居环。因此,是的,德洛奈邻居必须是第一环。我会更新我的问题。