鞍顶算法

时间:2010-03-28 14:23:04

标签: algorithm geometry

我有许多建筑物的地图(openstreetmap项目)。每个建筑物都是多边形。如何为每个建筑物轮廓制作马鞍形屋顶部件多边形?

算法应该将2D中的一个多边形转换为2D(或3D)中的多边形集。

此转换的原因是可视化 - 更好地呈现等轴测视图。

例如(阴影并不重要):

alt text http://www.freeimagehosting.net/uploads/0168cec03a.png

由于

3 个答案:

答案 0 :(得分:4)

您正在寻找的主要部分(如90%)被称为“骨架”。看看here,在名为“其他例子”的图中。此页面来自计算机图形库的手册,因此您可以找到一般描述,并链接到(免费)代码。

答案 1 :(得分:1)

这不是你用4邻域分水岭算法得到的,加上沿垂直于最快上升方向的线标记所有边缘是局部极值吗? (当然,阴影需要以某种方式添加,但这不会给你屋顶峰值和角度的位置吗?)

答案 2 :(得分:1)

您的示例似乎假设所有屋顶坡度都相同。附加线(当从上方直接看时)是距边缘相等距离的线。这些可以通过取两个边之间的角平分线来构造。

算法如下所示:

  • 从任意两个相邻边开始。
  • 沿角平分线添加一条线。
  • 选择下一个相邻的边缘。
  • 沿此角平分线添加一条线。
  • 两条新线相交的地方,标记一个新顶点,并剪切线条。
  • 从这个顶点开始,沿着两条外边缘的角平分线添加一条直线。
  • 采取下一个优势等。
  • 注意正确剪裁新线并管理新顶点。