【问题标题】:Create Topographic 2D Curves from Polygonal Mesh从多边形网格创建地形 2D 曲线
【发布时间】:2016-02-07 00:37:40
【问题描述】:

我正在尝试将多边形 3D 网格转换为一系列地形曲线,这些曲线代表每个间隔的特定高度的网格部分。到目前为止,我已经提出了将水平面与网格相交并获得相交曲线的想法。所以对于这个网格:

我会以设定的精度间隔重复与平面相交:

等等

虽然这很容易在视觉上和在 CAD 应用程序中完成,但我完全迷失了以编程方式执行此操作。我如何在编程环境中实现计算这个/我可以研究什么算法来实现这个?

我在 STL C++ 环境(使用 Boost)中编程,使用 this simple loader, 加载 .obj 网格,并且需要简单的笛卡尔二维点来定义输出曲线。

【问题讨论】:

  • 如果有人好奇,这是为 3D 打印机创建打印说明

标签: c++ algorithm 3d computational-geometry mesh


【解决方案1】:

一个选项是依次处理所有面,并为每个面确定穿过它们的水平面。对于给定的平面和面,依次检查所有四个顶点并找到符号(Zvertex - Zplane)的变化。将有两个这样的变化,定义属于水平曲线的边缘。 (例外情况下,您会发现四个符号变化,这发生在刻面不是平面时 - 成对连接点。)

每次找到交点时,都用平面的(唯一)索引和相交边的(唯一)索引标记它;您还可以使用与该面相交的另一条边的索引对其进行标记。

通过对平面索引进行排序,您可以对每个平面的交叉点进行分组。

对于给定的平面,使用哈希表,您可以从边到边跟踪相交链。

这将为您提供所需的曲线集。

【讨论】:

  • 太棒了,这是有道理的。您究竟是如何找到/什么是“符号的变化”?
  • 检查 Zvertex-Zplane 的迹象
  • 那么一个是正面的还是负面的?
  • 是的。如果您愿意,可以在上面或下面。
猜你喜欢
  • 2020-06-21
  • 1970-01-01
  • 2012-09-27
  • 2011-04-08
  • 1970-01-01
  • 2019-10-31
  • 2019-04-03
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多