2011-10-09 145 views
1

可以使用什么算法来歪斜多边形?
像歪斜如下:多边形歪斜算法

____ 
| _| 
|__| 

到右下角将产生

____ 
| \ 
|  \ 
\ _| 
    \__| 

它像一个影子投。我考虑把每条线都做成平行四边形,然后将它和它的相应线做成偏斜位置,然后将所有这些结合起来,但这看起来有点粗暴,需要花费很多时间。
有没有更好的算法呢?如果需要,我已经有了所有多边形布尔运算的代码。

回答

2

我觉得这个算法我只是想起来会做到这一点:

分类每一行的多边形它是否是更加面朝左上或面临-右下角(或精确地沿着skew-方向线)。

然后,对每个顶点:

  • 如果连接两个左上线或左上线和精确地对齐线,然后离开它是。
  • 如果它连接两条右下方的线或右下方的线和一条完全对齐的线,然后将其移动偏移距离。
  • 如果它连接了一条左上角和右下角线,然后将它分割成两个顶点,一个顶点和一个顶点。

    此步骤可能会导致自相交(例如,如果顶点是凹面并面向左下角),在这种情况下,丢弃两个顶点并将两个现有线与顶点交叉。

+0

我不明白自相交避免步骤 – Dani

+0

如果你不做额外的部分,你会得到一个三角形的自交在一些凹面。所有你需要做的就是“填充洞”,这恰好是交叉路口。我建议实施算法的其余部分,然后您会看到问题和解决方案。 –

+0

我实现了这一点,它的工作非常快速。关于自我交集,我所需要做的就是绘制带有“正”卷绕的三角形,而不是默认的“奇数”卷绕。 – Dani