我正在使用一个非常慢的渲染器,我需要近似多边形,以便它们在被限制在包含很少像素的屏幕区域时看起来几乎相同。也就是说,我需要一个算法来通过一个多边形并减去/移动一堆顶点,直到最终多边形具有良好的形状保持和顶点使用经济性的组合。
我不知道这些问题是否有正式的名称,但如果有人知道它是什么,它将帮助我开始研究。
我未经测试的计划是删除最少改变多边形区域的顶点,并保护触及边界框的顶点不被移除,直到从原始多边形到建议的近似区域的区域差异超出我指定的容差
这只会做一次,而不是实时。
还有其他想法吗?
谢谢!
答案 0 :(得分:2)
你正在略微偏离地思考这个问题。如果您的目标是减少失真最小的顶点数量,则应根据定义形状的相同顶点定义失真。这里有一个非常简单的解决方案,我认为它可以解决您的问题:
由于您的区域最终由顶点放置决定,因此此方法可保留形状并最大限度地减少形状失真。一个缺点是顶点之间的距离可能比多边形区域稍微不那么直观,但两者是成比例的。如果你真的希望,你可以通过顶点去除所导致的区域变化,但这对于可疑的好处imo来说还有很多工作要做。
如安格斯所述,如果你想直接解决区域变化问题,那实际上并不是很难。原本打算把它作为练习留给读者,但完全可以解决这个问题,尽管你需要在两边都包含顶点。
B
和C
的“费用”。|sin(|arctan(B - A)| - |arctan(C - A)|)|
管道是绝对值,而差异是差异的感性概念。步骤6中产生的数字表示全图减去几个常数。
答案 1 :(得分:1)
我首先尝试了自己的计划:保护触摸边界框的顶点,然后按照更改结果区域的顺序删除其余部分,直到找不到要删除的顶点,使新的多边形区域保持不变原始的X%。这是X = 5%的结果:
当用户缩小到目前为止,这些形状对我来说足够合适。我没有尝试过任何其他建议。节省的费用非常惊人,有时从80-100个顶点下降到4或5个。