【问题标题】:Implementing boundary representation modeling实现边界表示建模
【发布时间】:2011-05-21 02:15:40
【问题描述】:

有没有人有任何好的实施策略或资源来组合 b-rep 建模系统?

OpenCascade 显然是一个很好的 b-rep 建模库(FreeCad 和 PythonOCC 都非常酷),但该库庞大、复杂,可能不是学习 b-rep 建模“引擎”的好起点.

我已经阅读了大量研究论文,虽然基础数学有助于理解为什么一切正常,但它给我留下了一些实施问题。

halfedge 数据结构似乎是在 b-rep 实现中存储有关主体信息的首选方式。

所以几个问题没有特定的顺序:

  1. 使用半边数据结构通常如何实现渲染?基于实体边界的三角剖分?

  2. 通常如何实现圆形面/曲面?例如,我读过的关于 b-rep 的一个基本介绍中的圆柱体在内部存储为棱镜。即一个挤压三角形和元数据存储在帽面周围,表示它们确实是圆形的。

  3. 布尔运算通常是如何实现的?我已经阅读了关于沿着相交曲线生成 BSP-Tree 然后组合这些树以生成新几何图形的信息。还有其他实现布尔运算的方法吗?它们有哪些优点/缺点?

谢谢!

如果您想提供代码示例,请不要担心语言——问题更多的是关于算法/数据结构实现细节

【问题讨论】:

  • 我不确定,但我认为这对programmers.stackexchange.com来说可能是个好问题
  • [ 很公平,这个问题可能适用于几个领域:cstheory.stackexchange.com,math.stackexchange.com ] 虽然我的印象是程序员更多的是专业讨论而不是代码
  • 我在 programmers 上不活跃,但在我看来,这个问题需要讨论一个主题而不是一个具体的答案,我认为这更接近于程序员的常见问题描述。

标签: math graphics model brep


【解决方案1】:

我正在使用 C# 开发 B-Rep 建模器(我处于非常早期的阶段:这是一个巨大的项目),所以我问自己和你一样的问题。这是我的答案:

  1. 三角剖分:我没有做这一步,但我正在考虑的策略如下:在参数空间中投影人脸边界以获得二维多边形(带孔),用剪耳算法对其进行三角剖分,然后在 3D 空间中重新投影三角形顶点。对于曲面,我需要用网格分割多边形以跟随曲面;
  2. 对于圆柱体,有 3 个边:两个圆形和一个线段。我对每种类型的曲线都有类(Segment3dCircle3d...),每个半边都包含这些类之一的实例。每个面都包含一个表面对象(平面、圆柱体、球体...)的实例;
  3. 有一个有趣的项目here 基于 BSP-Tree,但它使用 CSG 方法,而不是 B-rep。我仍在研究如何做到这一点,但我认为我不需要 BSP 树。困难在于计算交叉点和拓扑。

我在这个主题上找到的最好的书:

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2014-08-13
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多