2011-05-21 83 views
4

有没有人有任何良好的实施策略或资源来组建一个b-rep建模系统? OpenCascade是一个非常好的b-rep建模库(由FreeCad和PythonOCC使用都非常酷),但是这个库很庞大,很复杂,并且可能不是学习b-rep建模引擎的好起点”。实现边界表示建模

我已经完成了相当多的研究论文阅读,虽然基本数学对于理解为什么一切正常有用,但它给我留下了一些实施问题。

halfedge数据结构似乎是存储关于在B-REP实现的主体的信息的首选方式。

所以问题没有特定的顺序了一把:

  1. 使用半边数据结构是如何渲染通常执行?基于固体边界的三角测量?

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

  3. 布尔操作是如何实现的?我已经阅读了关于沿相交曲线生成BSP-Tree的内容,然后组合这些树来生成新几何。是否有其他方法来实现布尔运算以及他们有什么样的pro/con?

谢谢!

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

+0

我不知道,但我觉得这可能是http://programmers.stackexchange.com – 2011-05-21 03:59:15

+2

[不够公平一个很好的问题,这个问题可能会适合在几个方面:cstheory.stackexchange.com,math.stacke xchange.com] 虽然我的印象是,程序员更专业的讨论和更少的有关代码 – klyd 2011-05-21 04:07:15

+0

我不是_programmers_活跃,但在我看来,这个问题需要一个主题的讨论,而不是特定的下回答,我认为这是更接近FAQ描述了_programmers_。 – 2011-05-21 04:16:35

回答

0

我工作的A B-REP在C#中建模(我处于一个非常早期的阶段:这是一个巨大的项目),所以我问自己和你一样的问题。这里是我的答案:

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

我已经在这个问题上找到的最好的书: