如何基于每条边带指定坡度的简单多边形生成屋顶几何?
多边形屋顶几何生成算法需求与问题
给定条件
- A) 定义2D平面上简单多边形(可为凹形)的点列表;
- B) 范围在
[0, ∞)的坡度列表,每个坡度对应(A)中定义的一条边:- “边”指(A)中连续点对,包括最后一个点与第一个点之间的边;
- 坡度单位为英寸,表示每12英寸水平距离对应的垂直上升高度;
- 坡度为0代表平屋顶(水平),
∞代表垂直。
构造目标
通过生成延伸至第三维度(垂直于多边形所在平面)的新多边形网格,构造该多边形的“屋顶”几何,使得屋顶每条边的坡度与(B)中定义的坡度一致(坡度朝向多边形内部向上)。
具体需求
为自研软件开发可靠生成该几何的算法,输出为一组简单多边形列表。
已尝试的无效方法
- 半空间结合布尔运算:仅对凸多边形有效,不适用于凹多边形,且无法将半空间组合结果转换为多边形网格;
- 梯度组合生成高度图:对凸多边形效果良好,但不适用于凹多边形,且难以转换为多边形网格;
- 类Voronoi方法:虽有前景,但会产生非预期曲线,仍需解决转换为多边形网格的问题。
正确解决方案示例(非按比例)
(短横线代表坡度为∞)
- 顶部示例:边2的坡度与边1、3相同;
- 中部示例:边2的坡度比边1、3更缓;
- 底部示例:边2的坡度比边1、3更陡;
内容的提问来源于stack exchange,提问作者JonnyV
相关产品推荐
相关产品推荐

