多边形偏斜算法

时间:2011-10-09 15:58:22

标签: algorithm geometry shadow

我可以使用什么算法来扭曲多边形?
喜欢扭曲以下内容:

 ____
|   _|
|__|

右下角将产生

 ____
|    \
|     \
 \    _|
  \__|

它就像一个投影。我想考虑采取每一条线并用它做平行四边形及其相应的线在倾斜的位置然后结合所有这些,但这看起来有点粗野,并且将花费很多时间。
有更好的算法吗?如果需要,我已经有了所有多边形布尔运算的代码。

1 个答案:

答案 0 :(得分:2)

我认为我想到的算法会做到这一点:

对多边形中的每一条线进行分类,确定它是面向左上方还是面向右下方(或沿斜方向线)。

然后,对于每个顶点:

  • 如果它连接两条左上角线或一条左上角线和一条完全对齐的线,则保留它。
  • 如果它连接两条右下线或一条右下方的线和一条精确对齐的线,则将其移动一个偏斜距离。
  • 如果它连接左上角和右下角,则将其拆分为两个顶点,一个移动,一个不移动。

    此步骤可能会导致自相交(例如,如果顶点是凹的并且面向左下方),在这种情况下,丢弃两个顶点并连接两个现有的线,并在它们的交叉点处有一个顶点。