4

我想对非平面多边形进行三角剖分(即顶点不在同一个 3D 平面上)。多边形由许多点(数百个)组成。三角形表面不必是光滑的。事实上,密度越大越好。

我最初的想法是:

  • NURBS
  • 在“多边形内”生成附加点并应用 3D Delaunay 三角剖分。
  • 只需将一个(或几个)更多顶点“放在中间”并将它们与轮廓顶点连接起来。

我不确定这些想法中的哪一个适用于我的情况,或者也许有更好的方法?

更多细节:即使轮廓上的点有数百个,它们也可以分为 3 到 10 个子集,这样每个子集都非常接近一条线。尽管如此,生成的线条仍然不在同一平面上。人们可以把它想象成一群鸟,它们以多边形的形式飞行,但不完全相同的垂直高度。

4

2 回答 2

9

我最终做了以下事情:

  1. 将平面拟合到这些点。
  2. 将点投影到平面拟合。
  3. 将点变换到平面拟合的坐标系中,使得每个点都有一个二维坐标(x,y)和一个深度z
  4. 计算点云的边界。
  5. 在边界内生成额外的 2D 点(可以使用等距点或变形点,无论其密度如何)。
  6. 在所有点(边界 + 生成点)上运行 2D Delaunay 三角剖分。
  7. 根据边界深度值对生成的内部点的深度值进行插值。可以使用任何类型的插值 - 我使用了 MATLAB 的 triscatteredinterp() ,它工作得很好。
  8. 使用 (3) 中的逆变换将所有点平移回来
  9. 使用 (6) 中的三角剖分和 (8) 中获得的点。

你可以在这里看到结果: http ://www.youtube.com/watch?v=4AqHxKsM7Iw&feature=g-upl

于 2012-10-21T12:30:39.313 回答
0

您可能想看看点云库。其中,它可以进行表面重建。

于 2012-09-17T08:55:09.987 回答