3d 等值面与平面相交后对顶点进行排序

发布于 2024-11-19 03:31:28 字数 152 浏览 2 评论 0原文

这是另一个几何问题:

我使用移动立方体算法创建了点云的 3 维三角等值面。然后,我将该等值面与一个平面相交,并得到许多代表相交轮廓线的线段。

是否有可能对这些线段的顶点进行顺时针排序,以便我可以将它们绘制为闭合路径并进行洪水填充?

提前致谢!

Here is another geometric problem:

I have created an 3-dimensional triangulated iso-surface of a point cloud using the marching cubes algorithm. Then I intersect this iso-surface with a plane and get a number of line segments that represent the contour lines of the intersection.

Is there any possibility to sort the vertices of these line segments clockwise so that I can draw them as a closed path and do a flood fill?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画离情绘悲伤 2024-11-26 03:31:28

这取决于等值面的复杂程度,但我能想到的最简单的可行方法是:

  • 对于每个点,投影到平面。这将为您提供一组二维点。
  • 通过平移到边界框的质心或中心,确保它们居中。
  • 对于每个 2d 点,运行 atan2 并获取角度。 atan2 只是将事物放在正确的象限中。
  • 按该角度排序

如果您的等值面/平面围绕质心的角度单调增加,那么这将工作得很好。如果没有,那么您可能需要找到平面上每个点的 2 个最近邻点,并希望这能形成一个简单的循环。从表面上看,简单循环的想法可能更简单,因为您不需要投影,也不需要计算角度 - 只需在 3d 中完成所有操作即可。

It depends on how complex your isosurface is, but the simplest thing I can think of that might work is:

  • For each point, project to the plane. This will give you a set of points in 2d.
  • Make sure these are centered, via a translation to the centroid or center of the bounding box.
  • For each 2d point, run atan2 and get an angle. atan2 just puts things in the correct quadrant.
  • Order by that angle

If your isosurface/plane is monotonically increasing in angle around the centroid, then this will work fine. If not, then you might need to find the 2 nearest neighbors to each point in the plane, and hope that that makes a simple loop. In face, the simple loop idea might be simpler, because you don't need to project and you don't need to compute angles - just do everything in 3d.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文