【发布时间】:2020-02-08 16:50:04
【问题描述】:
在我的应用程序中,我使用 OpenGL 和大量数据。
我需要做的一件事是收到多个可以是凸面或凹面的“简单”多边形。简单地说,我的意思是几何定义 - 没有孔和相交边缘的多边形。
我以点(顶点)的链接循环的形式收到这个 poligon,其中每个 Vi 都连接到 Vi-1 和 Vi+1 点,仅此而已。最后一点也连接到第一个点,结果给我们一个循环。
我现在要说的是我找到了多边形三角剖分,它就像一个魅力(我现在使用耳夹法)。
但是,我需要构建大量这些多边形,数百万个。为了尽量减少负载,我决定将我的世界分成“块”,就像 Minecraft 中的正方形。然后我使用平截头体剔除和其他优化方法来渲染或丢弃/简化其中的这些块和网格。
所以,我想做的是:如果我收到的多边形位于几个不同的块中 - 那么我想将它分成每个块的网格。基本上,我想创建多个在块边界上划分的多边形,然后对它们进行三角剖分并创建网格进行渲染。
因此,我想要一个(或多个)轮廓,然后我可以对其进行三角测量。
这是我的任务图片:
我自己做了一个算法来分割它,我认为它会起作用,但我发现它只有在任何给定块中的轮廓不分解时才有效,就像你在示例中看到的那样(换句话说,如果只有任何给定块中的一个数字)。
我想在这里问是否有人知道该任务的任何好的算法?我自己可能会想出一些东西,但实践表明,几乎总是有更好、更简单的现成解决方案。如果有人能给我一个有用的链接或一篇文章,我真的很感激,如果没有解决方案本身,那么可以提供一些想法。
【问题讨论】:
-
@genpfault,建议的副本不回答这个问题。那里选择的答案甚至没有给出如何这些步骤是如何实现的示例。这个问题还有一个额外的要求,即裁剪后生成的多边形是分离的。这对某些人来说可能是微不足道的一步,但回答 this 问题仍需要更多信息。