对矩形进行裁剪多边形

3
今天我要为您解决一个(简单的)渲染问题。我的当前项目从文件中获取数据以生成SVG文件。由于SVG格式,将事物绘制成多边形非常容易,但是我有一个单一的问题:我的一些多边形在页面内和页面外(这意味着它们的某些部分由于超出显示限制而未显示)。为了优化最终的SVG文件,我需要将我的多边形简化为更简单的形式。
将灰色矩形视为我的页面。 将绿色多边形视为我实际绘制的内容。
第一张图片展示了我实际拥有的东西,而第二张图片展示了我想要得到的最终结果。
首先,我想将我的多边形简化为简单的三角形,以便仅在显示限制内绘制点。但我认为存在更简单的解决方案...如果您有,请不要犹豫与我分享 :)
编辑:
我还需要处理这个棘手的情况:
谢谢。

所以你真正想要的是多边形剪辑,而不是“简化为更简单的形式”。实际上,第二种形式并不那么简单,它只是被裁剪成矩形。如果你将标题修改为“多边形针对矩形的剪切”或类似的内容,你可能会得到所需的关注。 - Christian Rau
不确定它会对性能产生何种影响,但是使用一个mask是否有帮助? - George Profenza
@GeorgeProfenza 不需要遮罩,因为页面边界之外的所有内容都不会被显示...添加遮罩将会得到完全相同的结果,但会增加很多计算量。 - lvictorino
1个回答

3
  1. 将多边形与矩形进行裁剪。我们将此问题简化为
  2. 将多边形与直线进行裁剪。我们将其进一步简化为:
  3. 使用直线来裁剪多边形的一个边缘。这实际上只是
  4. 查找线段与直线的交点(如果存在)。

考虑到您的线是垂直或水平的,因此最后一个问题非常容易。这就足够了吗?


如果我们这样看,这就很容易了...那让我想起我忘了谈论一个案例,让我编辑一下我的问题(顺便感谢你的快速回答)。 - lvictorino
又称 Southerland-Hodgman 算法:http://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm - Igor Brejc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接