需要起点来实施当前算法

时间:2018-07-27 20:23:47

标签: algorithm libgdx

我目前正在学习libGDX,并在做网格物体。我需要给视频卡一些三角形以进行渲染。

我当前的任务是这样。在“盒子”的某些点上有几个矩形(每个矩形都有起点,宽度和高度),将矩形的外部分成矩形本身。在拥有这些小矩形之后,我可以将它们分成三角形并轻松渲染。像这样。 enter image description here

具有蓝色矩形信息。我需要这样的东西。在用橙色勾勒出这些矩形后,我可以将它们划分为三角形并轻松渲染。 enter image description here

我的方法是这样。从每个矩形的顶部和底部“绘制”水平线,直到到达框的墙或其他矩形的墙。这样做,字段将被分隔成这样的矩形 enter image description here 基本上这就是我所需要的。 当前无法想象编程方法。任何帮助将不胜感激。谢谢。 我将用Java实现它。

1 个答案:

答案 0 :(得分:1)

您绘制的内容分为两个步骤。

第1步通常称为“梯形分解”,您可以在Google上搜索很多深度信息。进行梯形分解:

  • 找到所有存在顶点或交点的 y 坐标并将其排序。
  • 然后,每对相邻的 y 坐标之间的每个水平带都必须由梯形组成,梯形的顶部和底部应位于带边缘上,因为带内不能有拐角或相交。找到跨越该条带的每个多边形或边缘的部分,以创建梯形分解。

只需在每个梯形的相对角上增加一个切削刃,就可以将水平梯形的水平条轻松地转换为三角形条,但是要获得所需的绘制,则需要第二步。

在步骤2中,您将经过成对的相邻条带,并在可能的情况下组合它们的梯形。这样可以将每个矩形的所有部分合并在一起,并消除大矩形的任一侧上的细条,从而完全保留您绘制的条分解。