我有一个 3D 表面(例如圆锥)。它以等高线的形式投影到 2D 平面上,这意味着不同的 Z 在 2D 平面上会有不同的线条。问题出在轮廓上,如何通过插值恢复3D表面?我们只知道不同的折线之间的 z 差异。
Ngu Soon Hui
问问题
1749 次
2 回答
7
您提到的“轮廓”的技术术语是“等线”。
给定一组等值线,您首先需要在 3D 中构建点云(只是 3D 空间中的点集合)。你分两个阶段做到这一点。首先以均匀的间隔对每条等值线进行采样,得到 2D 点,然后将这些点提高适当的高度。
通过在任何地方追踪它,可以很容易地以均匀的间隔对一条线进行采样。您可以通过从最外侧的线开始并一条一条地向内追踪线,删除您追踪的每条线并跟踪您追踪的线数,来了解一条线的高度。
当然,您需要提前知道线之间的高度差是多少,最外面的线(或任何其他可以用作参考的线)的高度是多少
一旦有了 3D 点云,您就可以使用多种表面重建算法中的任何一种。例如,这家公司制作了一个应用程序,您可以从他们的网站下载一个命令行演示,该演示最多可用于 30,000 点。
于 2008-12-05T08:26:18.233 回答
2
在这种情况下,如果您的点在 z=f(x,y) 中或者您的形状是凸的,则表面重建算法会浪费时间。
对于 z=f(x,y) 是简单的解决方案
- 仅使用 x,y 坐标的 delaunay 三角剖分
- 使用之前的三角剖分绘制曲面,这次也使用 z。工作完成了!
你的形状是凸的,使用 convhull 算法
您的形状是凹形使用: http: //www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-mycrust-robust.html
于 2009-12-29T10:15:27.420 回答