从轮廓生成2D网格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从轮廓生成2D网格相关的知识,希望对你有一定的参考价值。

我得到了一个我想要生成的平面的轮廓(点列表)。平面非常大,我需要在轮廓内均匀分布顶点。每个顶点都有一个从红色到绿色的颜色值,以显示平面中的一些数据。我需要实时可视化数据。

我的想法是简单地创建一个网格并调整轮廓之外的所有顶点。事实证明这非常复杂。

这是我想要实现的一个快速示例。 Clipping a 2D grid by an outline

有没有解决这个问题的算法?是否有另一种方法从具有均匀分布顶点的轮廓生成网格?

答案

虽然从问题中并不完全清楚,但是我想到了适应两个方面的marching cubes algorithm。可以在here找到二维版本的详细描述。

另一答案

听起来你想做这样的事情:

1)首先生成三角形多边形以创建网格。有很多选择:https://en.wikipedia.org/wiki/Polygon_triangulation

2)然后,当网格中的任何边缘太长时(意味着两端的点可能相距太远),将最长边的中点添加到网格中,将相邻的三角形划分为2。

结果是在每个方向上的其他点的有限距离内的每个点的网格。生成的网格不一定是最佳的,因为它可能有比严格要求更多的点,但它可能满足您的需求。

如果你需要减少点数和细三角形的数量,你可以先应用Delaunay Triangulation翻转每个候选边缘:https://en.wikipedia.org/wiki/Delaunay_triangulation#Visual_Delaunay_definition:_Flipping

另一答案

Delaunay网格划分可以在形状内创建均匀分布的顶点。下图显示了组合网格和Delaunay网格。你可以看看here

http://www.geom.at/wp-content/uploads/grid-mesh.png

以上是关于从轮廓生成2D网格的主要内容,如果未能解决你的问题,请参考以下文章

投影3D网格的2D轮廓算法

matlab中网格数据的绘制轮廓

如何从 ggplot2::geom_density_2d_filled 获取有关轮廓的信息?

Unity之2D Sprite Outline外轮廓效果

计算网格连通图的轮廓

如何从 vector<vector<Point>> 轮廓转换为 CVPoint 或 cvpoint2d32f?